我正在使用AWS EMR运行map reduce作业。我的输入集包含100万个文件,每个文件大小约为15KB。由于输入文件非常小,因此这将导致大量的映射器。因此,我将s3块大小更改为20KB,并使用了5个r3.2xlarge实例,但运行的并发任务数仍然只有30个。在减少块大小后,作业现在不应该运行更多数量的并发映射器吗?甚至在减少块大小后,每个映射器占用的内存仍然相同?
如何限制每个映射器的内存使用或增加并发映射器任务的数量?当前预计完成时间为100小时,将这些文件合并到较少数量的较大文件,如400MB文件,是否会增加处理时间?
发布于 2017-04-17 15:29:07
减小数据块大小可以增加特定作业所需的映射器数量,但不会增加群集可以在给定点运行的映射器的并行数,也不会增加用于这些映射器的内存。
使用了5个r3.2xlarge实例,但运行的并发任务数仍然只有30个
要查找Hadoop2EMR集群可以支持的并行映射/缩减程序,请参阅本文AWS EMR Parallel Mappers?
Ex: r3.2xlarge *5内核:
mapreduce.map.memory.mb 3392 3392
yarn.scheduler.maximum-allocation-mb 54272
yarn.nodemanager.resource.memory-mb 54272一次核心节点可以有54272/3392 = 16个映射器。
因此,一个集群总共可以有16*5 = 80个映射器并行。
因此,如果您作业像1000个映射器一样旋转,集群可以使用预配置的内存和节点上的堆启动80个映射器,而其他映射器将简单地排队。
如果您想要更多并行映射器,您可能希望为映射器配置更少的内存(基于数学)和更少的堆。
发布于 2017-03-15 01:56:27
你要找的是CombineFileInputFormat。
请记住,映射狭缝大小默认情况下= HDFS数据块大小。更改其中一个不会影响另一个。
请点击链接:http://bytepadding.com/big-data/map-reduce/understanding-map-reduce-the-missing-guide/
https://stackoverflow.com/questions/42575872
复制相似问题