AWS EMR 并行映射器?

Posted

技术标签:

【中文标题】AWS EMR 并行映射器?【英文标题】:AWS EMR Parallel Mappers? 【发布时间】:2017-01-04 01:17:31 【问题描述】:

我正在尝试确定我的 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/

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

韦恩

【问题讨论】:

【参考方案1】:

要确定并行映射器的数量,您需要查看 EMR 中称为“任务配置”的文档,其中 EMR 为每种实例类型提供了一组预定义的映射配置,这将确定映射器/缩减器的数量。@ 987654321@

例如: 假设您有 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 映射器(考虑仅映射作业)。最大并行 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 + 内存(不仅仅是内存)来决定映射器的并行数量。

【讨论】:

非常感谢。那肯定是藏在草丛里的。 当然。很高兴它有帮助。

以上是关于AWS EMR 并行映射器?的主要内容,如果未能解决你的问题,请参考以下文章

sys.stdout.write() 在 MRJOB 映射器中去哪里?

Amazon EMR:为每个 EMR 实例设置唯一数量的映射器和缩减器

根据映射器代码中的某些逻辑,将映射器中的一些数据(行)写入单独的目录

如何修改 Spring Cloud AWS 用来反序列化 SQS 消息的对象映射器?

亚马逊 dynamodb(通过 aws sdk)是不是有一个很好的对象映射器,可以在 nodejs 中使用?

如果映射器在中途失败并且 Hadoop 重试该映射器,自定义计数器会发生啥