我是 hadoop 的初学者,当我运行 hadoop 作业时,我注意到进度日志显示地图 80% 减少 25%。我对 map reduce 的理解是映射器会产生一堆中间值。在映射器产生输出之后,有中间对的洗牌/排序&这些值被发送到减少作业。有人可以解释一下 map/reduce 如何并行工作。
问问题
123 次
1 回答
2
映射器的输出必须复制到适当的 reducer 节点。这称为洗牌过程。这甚至可以在所有映射器完成之前开始,因为决定哪个键进入哪个reducer 仅取决于映射器的输出键。所以你看到的 25% 的进步是由于洗牌阶段。
在 shuffle 之后,有一个 sort 阶段,然后是 reduce 阶段。除非所有映射器都已完成,否则无法进行排序和归约。由于 shuffle 可能在映射器完成之前发生,因此在映射器完成之前,您最多可以看到 33.33% 的 reduce 完成。这是因为默认的 apache 实现考虑了 shuffle、sort 和 reduce 各占 33.33% 的时间。
于 2013-11-15T06:34:26.560 回答