AWS EMR 并行映射器?

AWS EMR Parallel Mappers?

我正在尝试确定我的 EMR 集群需要多少个节点。作为最佳实践的一部分,建议如下:

(您的作业所需的映射器总数 + 处理所用时间)/(每个实例容量 + 所需时间),如此处所述: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/

对不起,如果我错过了一些明显的东西。

韦恩

要确定并行映射器的数量,您需要查看来自 EMR 的名为任务配置的文档,其中 EMR 为每个实例类型都有一个预定义的配置映射集,这将确定 mappers/reducers 的数量。
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 schedulerDefaultResourceCalculator 保持其默认配置,则上述计算和陈述为真。例如,如果您将容量调度程序配置为使用 DominantResourceCalculator,它将考虑每个节点上的 VCPU + 内存(而不仅仅是内存)来决定映射器的并行数量。