我正在使用AWS EMR运行地图减少作业。我的输入集包含大约15kb的100万个文件。由于输入文件很小,因此这将导致大量映射器。因此,我将S3块大小更改为20KB,并使用了5 r3.2xlarge实例,但是同时运行的任务数量仍然只有30个。在减小块大小或减小块大小之后,工作现在不应该现在运行更多的并发映射器。,每个映射器取得的内存仍然相同吗?
如何限制每个映射器的内存使用情况或增加并发映射器任务的数量?当前的预期完成时间是100小时,将这些文件结合到较小的较大文件(例如400MB文件),增加处理时间吗?
减小块大小可以增加特定作业所需的映射器数量,但不会增加群集可以在给定点运行的映射器的平行数量,也不会增加用于这些的内存的内存映射者。
使用了5个R3.2XLARGE实例,但正在运行的并发任务数为 仍然只有30
找到Hadoop 2 EMR群集可以支持的并行地图/还原器,请参阅本文AWS AWS EMR并行映射?
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个映射器,并在节点上使用预配置的内存和堆,而其他映射器将简单地排队。
如果您想要更多的并行映射器,则可能需要更少的内存(基于该数学),而对映射器的堆更少。
您正在寻找的是组合fileInputformat。
默认情况下,请记住地图缝隙大小= HDFS块大小。改变一个不会影响另一个。
请点击链接:http://bytepadding.com/big-data/map-reduce/understanding-map-reduce-the-missing-guide/