【问题标题】:MapReduce: Increase number of concurrent mapper tasksMapReduce:增加并发映射器任务的数量
【发布时间】:2017-03-03 10:02:32
【问题描述】:

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

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

【问题讨论】:

    标签: java hadoop mapreduce jvm amazon-emr


    【解决方案1】:

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

    使用了 5 个 r3.2xlarge 实例,但正在运行的并发任务数为 仍然只有 30

    要查找 Hadoop 2 EMR 集群可以支持的并行映射/Reducer,请参阅本文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 个映射器,而其他映射器将简单地排队。

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

    【讨论】:

      【解决方案2】:

      您正在寻找的是 CombineFileInputFormat 。

      请记住默认的映射狭缝大小 = 默认的 HDFS 块大小。改变一个不会影响另一个。

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

      【讨论】:

        猜你喜欢
        • 2020-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-12
        • 2019-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多