gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 15:27:16 26 4
gpt4 key购买 nike

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

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

最佳答案

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

used 5 r3.2xlarge instances but number of concurrent tasks running is still just 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 个映射器,并在您的节点上堆,其他映射器将简单地排队。

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

关于java - MapReduce:增加并发映射器任务的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42575872/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com