我最近阅读了很多文档并询问有关Hadoop的问题,但我只有一件事情我不明白。
在以下两个场景中,究竟发生了什么?
我的理解是,即使在这个节点中最多可以同时运行4个映射器,我只有一个MapTask,因此它只使用1个映射器。 (1个过程)
这是我最困惑的...... - 分割尺寸= 250MB =>有四个地图任务 - mapred.tasktracker.map.task.maximum = 1
在这种情况下,在我的案例中实际发生的事情是它比场景1运行得快得多,并运行更多进程。我很困惑,因为我知道MapTasks可以同时运行,但是它也不受映射器数量的限制吗?因此,在这种情况下,我认为它看起来像这样,并且具有类似的执行时间结果。
mapper processes map task 1 ----> done
mapper processes map task 2 ----> done
mapper processes map task 3 ----> done
mapper processes map task 4 ----> done
当我有比Mapper更多的MapTasks时,究竟会发生什么?
答案 0 :(得分:1)
所以,我会回答你的问题,但它没有解释你在性能差异方面的看法。
当我有比Mapper更多的MapTasks时,究竟会发生什么?
如果你有比地图插槽更多的地图任务,那么你是正确的:地图插槽将被分配到最大值。完成地图任务后,JobTracker会在打开的地图位置中分配下一个地图任务。
将其拆分为四个可能会更快,即使它由于某些原因而顺序...也许缓冲区溢出行为因数据大小不同而不同。很难说清楚所提供的信息是什么。