如何使用CLI动态设置AWS-EMR / Spark?

时间:2017-03-16 00:23:20

标签: amazon-web-services apache-spark emr

这是我的目标:使用EMR5.3.0或EMR 5.4.0以及Spark 2.1.0到按需Hadoop集群(即时指定的节点数) > AWS CLI ,同时在S3中存储输入和输出数据,无需担心管理24 * 7集群或HDFS进行数据存储。

以下是我的挑战/问题: a)我可以使用' aws create-cluster'命令并指定节点数?那是对的吗?例如,如果我指定参数

--instance-count 10    

这会创建一个主节点和9个核心节点吗?

b)如果我使用'创建集群',我可以使用CLI动态添加更多工作节点(我猜它被称为任务节点)以加快工作速度吗?

c)如果我在集群上安装Anaconda和其他软件(即Master),然后将Master和所有从节点保存为AMI,我是否仍然可以从这些具有不同节点数的AMI启动按需Hadoop集群我可以使用AWS CLI快速指定吗?

谢谢。感谢您的反馈。

2 个答案:

答案 0 :(得分:2)

在AWS EMR上使用自动扩展,您可以扩展和扩展群集上的节点。可以使用Cloudwatch指标(YARNMemoryAvailablePercentage和ContainerPendingRatio)触发横向扩展操作。以下示例政策

"AutoScalingPolicy":
{
 "Constraints":
  {
   "MinCapacity": 10,
   "MaxCapacity": 50
  },

 "Rules":
 [
  {"Name": "Compute-scale-up",
   "Description": "Scale out based on ContainerPending Mterics",
   "Action":
    {
     "SimpleScalingPolicyConfiguration":
      {"AdjustmentType": "CHANGE_IN_CAPACITY",
       "ScalingAdjustment": 1,
       "CoolDown":0}
  },
   "Trigger":
    {"CloudWatchAlarmDefinition":
      {"AlarmNamePrefix": "compute-scale-up",
       "ComparisonOperator": "GREATER_THAN_OR_EQUAL",
       "EvaluationPeriods": 3,
       "MetricName": "ContainerPending",
       "Namespace": "AWS/ElasticMapReduce",
       "Period": 300,
       "Statistic": "AVERAGE",
       "Threshold": 10,
       "Unit": "COUNT",
       "Dimensions":
        [
          {"Key": "JobFlowId",
           "Value": "${emr:cluster_id}"}
        ]
      }
    }
  },
  {"Name": "Compute-scale-down",
   "Description": "Scale in",
   "Action":
    {
      "SimpleScalingPolicyConfiguration":
      {"AdjustmentType": "CHANGE_IN_CAPACITY",
       "ScalingAdjustment": -1,
       "CoolDown":300}
    },
   "Trigger":
    {"CloudWatchAlarmDefinition":
      {"AlarmNamePrefix": "compute-scale-down",
       "ComparisonOperator": "GREATER_THAN_OR_EQUAL",
       "EvaluationPeriods": 3,
       "MetricName": "MemoryAvailableMB",
       "Namespace": "AWS/ElasticMapReduce",
       "Period": 300,
       "Statistic": "AVERAGE",
       "Threshold": 24000,
       "Unit": "COUNT",
       "Dimensions":
        [
          {"Key": "JobFlowId",
           "Value": "${emr:cluster_id}"}
        ]
      }
    }
  }
 ]

}

您可以参考此博客了解更多详情 AsType<T>

答案 1 :(得分:0)

  

a)我可以使用'aws create-cluster'命令完成上述操作并指定节点数量?那是对的吗?例如,如果我指定参数...

是。

  

如果我使用'aws create-cluster',我可以使用CLI动态添加更多工作节点(我猜它叫做任务节点)来加速工作吗?

由于你的目标是动态添加按需实例,我建议你照看保留或现场实例(根据你的用例/费用)。
我们使用50%出价的现货实例,并在完成工作后使用终止政策。

  

如果我在群集上安装Anaconda和其他软件(即Master),然后将Master和所有从属节点保存为AMI,我是否仍然可以使用不同数量的节点从这些AMI启动按需Hadoop群集,我可以使用AWS CLI即时指定?

是的,你可以。