我今天在使用AWS EMR时遇到了一些问题。
EMR为我们提供了非常简单的方法来调整群集大小,添加删除一些节点很容易。
在apache hadoop中,我们可以修改{"value": false}
文件来更改添加或删除节点。但是我发现EMR中的slaves
文件只包含slaves
,我找不到任何其他配置来指示奴隶的位置。
EMR如何在主节点中添加或删除群集中的节点,甚至没有重启过程?
答案 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)
答案 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/