gpt4 book ai didi

Hadoop:MR 启动的映射器比指定的少

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

我在一台远程机器(四核超线程)上安装了 Hadoop 1.2.1,并且正在用 1GB 的文件(一个文件,未压缩)测试 MR 的性能

当我将拆分大小设置为大约 250MB 时,我有四个映射器。在输出文件 (_logs/history/job....) 中,我看到上面写着 TOTAL MAP TASKS = 4

但是,当我将拆分大小设置为 1GB/8 以便它使用 8 个内核时,我看到日志显示 TOTAL MAP TASKS = 7。当拆分大小为 1GB/16 以查看发生了什么时,日志显示 TOTAL MAP TASKS = 14。是因为jobtracker指定了一个core不能用吗?

最佳答案

不幸的是,大多数可能影响 map task 数量的参数更接近于“建议”,而不是硬性规定。由 InputFormat 决定它与这些参数的接近程度。例如,FileInputFormat 执行以下操作:

它计算一个 splitSize 基于:Math.max(minSize, Math.min(maxSize, blockSize))。对于每个文件,它计算该大小的分割数将覆盖它。例如,如果拆分大小为 1 GB,并且您有两个大小为 1.5 GB 和 2.5 GB 的文件,您将获得 2 + 3 = 5 次拆分。但是,当接近文件末尾时,它有时会将这些拆分最多拉伸(stretch) 10%。例如,5.1 GB 文件的 1 GB 拆分大小将使用 5 个拆分。基于特定的子类实现,还有一些其他注意事项。

我的观点是,确实存在一些捏造行为,但这通常是合理的行为。您应该将您设置的参数视为准则,并相信您使用的 InputFormat 在确定要运行多少映射器时正在做一些合理的事情。

不,它与核心数或任务槽数无关。这可能会影响可以同时运行的映射器数量,但不会影响映射任务的总数。

关于Hadoop:MR 启动的映射器比指定的少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20382515/

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