我正在尝试确定我的EMR群集需要多少个节点。作为最佳实践的一部分,建议如下:
(您的工作需要的总Mapper +处理时间)/(每个实例容量+所需时间),如下所示:http://www.slideshare.net/AmazonWebServices/amazon-elastic-mapreduce-deep-dive-and-best-practices-bdt404-aws-reinvent-2013,第89页。
问题是如何确定实例将支持多少并行映射器,因为AWS不会发布? https://aws.amazon.com/emr/pricing/
对不起,如果我错过了一些明显的东西。
韦恩
答案 0 :(得分:2)
要确定并行映射器的数量,您需要在EMR中查看名为“任务配置”的文档,其中EMR具有针对每种实例类型的预定义映射配置集,这将确定映射器/缩减器的数量。
http://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hadoop-task-config.html
例如:假设您有5个m1.xlarge核心节点。根据EMR文档中该实例类型的默认mapred-site.xml配置值,我们有
mapreduce.map.memory.mb = 768
yarn.nodemanager.resource.memory-mb = 12288
yarn.scheduler.maximum-allocation-mb = 12288 (same as above)
您可以简单地将稍后的设置除以前设置,以获得一个m1.xlarge节点= (12288/768) = 16
支持的最大映射器数量
因此,对于5节点集群,最多可以并行运行的16*5 = 80
映射器(考虑仅映射作业)。 max parallel Reducers(30)的情况也是如此。您可以对映射器和缩减器的组合进行类似的数学运算。
因此,如果您想并行运行更多映射器,您可以re-size
群集或减少每个节点上的mapreduce.map.memory.mb
(及其堆mapreduce.map.java.opts
)并重新启动NM
要了解上述mapred-site.xml属性的含义以及为什么需要进行这些计算,可以在此处参考: https://hadoop.apache.org/docs/r2.7.2/hadoop-yarn/hadoop-yarn-common/yarn-default.xml
注意:如果EMR使用YARN capacity scheduler
DefaultResourceCalculator
保持其默认配置,则上述计算和语句为真。例如,如果您将容量调度程序配置为使用DominantResourceCalculator
,则会考虑每个节点(而不仅仅是内存)上的VCPU +内存来决定并行数量的映射器。