AWS EMR如何调整大小

时间:2016-03-29 17:19:13

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

我今天在使用AWS EMR时遇到了一些问题。

EMR为我们提供了非常简单的方法来调整群集大小,添加删除一些节点很容易。

在apache hadoop中,我们可以修改{"value": false}文件来更改添加或删除节点。但是我发现EMR中的slaves文件只包含slaves,我找不到任何其他配置来指示奴隶的位置。

EMR如何在主节点中添加或删除群集中的节点,甚至没有重启过程?

3 个答案:

答案 0 :(得分:3)

master和slaves文件仅由shell脚本使用,如start-all.sh,start-dfs.sh等。这些文件不会被hadoop中的任何其他函数使用。从hadoop集群角度来看,这些文件未定义namenode,secondary namenode,worker节点的位置。 EMR未使用这些shell脚本来启动集群。 core-site.xml中的属性 fs.default.name fs.defaultFS 定义了namenode主机。以此配置开头的所有数据节点都将报告给namenode并添加到集群中。类似地,resourcemanager主机在所有节点的yarn-site.xml中定义。

我们不需要重新启动群集中的任何进程来添加新节点。一旦datanode启动,它将报告给namenode,这样节点将为HDFS做出贡献。类似地,一旦nodemanager启动,它将向集群的资源管理器报告,它将为处理层做出贡献。

在EMR中,我们有3种类型的节点。

  • 主节点
  • 核心节点
  • 任务节点

对于EMR群集,主节点将只有一个。该节点是具有namenode和所有主服务的节点,如Resourcemanager,HBase Master等。

核心节点是具有存储和处理能力的节点,这意味着它具有数据节点和节点管理器。我们可以增加核心节点的数量,但我们不能减少数量,因为它会导致数据丢失。

任务节点是仅具有处理能力的节点。这基本上用于服务瞬态负载。这只有nodemanager。没有数据节点与此节点关联。我们可以增加或减少任务节点的数量。

在调整群集大小时,现有群集不会受到干扰。在EMR中不调用start-all.sh,stop-all.sh等脚本。它启动单个服务并启动集群。因此,不考虑主文件和从属文件中的条目。

答案 1 :(得分:0)

您可以通过AWS控制台扩展/收缩群集。  enter image description here

使用调整大小选项更改群集的大小。

您还可以通过控制台将“任务”节点添加到群集中。

答案 2 :(得分:0)

在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}"}
        ]
      }
    }
  }
 ]
}

您可以参考此博客了解更多详情https://aws.amazon.com/blogs/big-data/dynamically-scale-applications-on-amazon-emr-with-auto-scaling/