在减少之前必须先完成地图吗?

时间:2014-02-02 10:02:33

标签: hadoop mapreduce

我在大学的讲师说(Hadoop)减少操作只能在所有地图操作完成后开始。

这与地图缩减流操作的输出形成鲜明对比,显然有时显示:

map 80% reduce 13%
map 80% reduce 27%
and then
map 100% reduce 27%
.
.
map 100% reduce 100%

(我家里有一个地图减少三个节点集群,我已经运行了一些流媒体工作)。

考虑到我的讲师知道他在说什么,输出意味着什么?当reduce开始但map没有完成时,工作状态是什么?

1 个答案:

答案 0 :(得分:6)

减少阶段有3个步骤:

1)复制(数据到Reducer)

2)排序(或者更确切地说是合并)

3)减少(执行Reduce())。

这个 Mapper完成执行时,Reducers可以开始从Mapper处理数据。

默认情况下,调度程序会等到作业中5%的地图任务完成之前 调度减少同一工作的任务。对于大型工作,这可能会导致问题 集群利用率,因为它们在等待映射任务时占用减少的插槽 完成。将 mapred.reduce.slowstart.completed.maps 设置为更高的值,例如 0.80(80%),可以帮助提高吞吐量。