MapReduce:增加并发映射器任务的数量

时间:2017-03-03 10:02:32

标签: java hadoop mapreduce jvm amazon-emr

我正在使用AWS EMR来运行地图缩减作业。我的输入集包含100万个文件,每个文件大约15KB。由于输入文件非常小,因此这将导致大量的映射器。因此,我将s3块大小更改为20KB并使用了5个r3.2xlarge实例,但运行的并发任务数仍然只有30个。在减小块大小后甚至在减小块大小后,该作业现在不应运行更多并发映射器,每个映射器采用的内存是否相同?

如何限制每个映射器的内存使用量或增加并发映射器任务的数量?目前的预计完成时间是100小时,将这些文件合并到较少数量的较大文件,如400MB文件,会增加处理时间吗?

2 个答案:

答案 0 :(得分:1)

减少块大小可以增加特定作业所需的映射器数量,但不会增加群集可以在给定点运行的映射器的并行数量,也不会增加用于这些映射器的内存。

  

使用了5个r3.2xlarge实例,但运行的并发任务数是   还是只有30岁

要查找Hadoop 2 EMR群集可以支持的并行映射/ Reducers,请参阅此文AWS EMR Parallel Mappers?

例如: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个映射器,其他映射器将简单地排队。

如果您想要更多并行映射器,您可能希望配置更少的内存(基于该数学运算)和更少的映射器堆。

答案 1 :(得分:0)

您正在寻找的是CombineFileInputFormat。

默认情况下,请记住地图切口大小= HDFS块大小。改变一个不会影响另一个。

请点击链接:http://bytepadding.com/big-data/map-reduce/understanding-map-reduce-the-missing-guide/