我是 hadoop 的初学者,当我运行 hadoop 作业时,我注意到进度日志显示映射 80% 减少 25%。我对 map reduce 的理解是映射器产生一堆中间值。在映射器产生输出之后,有中间对的洗牌/排序,这些值被发送以减少作业。谁能解释一下 map/reduce 如何并行工作。
最佳答案
必须将映射器的输出复制到适当的缩减器节点。这称为洗牌过程。这甚至可以在所有映射器完成之前就开始,因为决定将哪个键转到哪个缩减器仅取决于映射器的输出键。所以你看到的 25% 的进步是由于洗牌阶段。
shuffle之后是sort阶段,然后是reduce阶段。除非所有映射器都已完成,否则不会发生排序和减少。由于洗牌可以在映射器完成之前发生,您可以看到在映射器完成之前最多减少 33.33% 的完成度。这是因为默认的 apache 实现考虑了 shuffle、sort 和 reduce 中的每一个占用相同的 33.33% 的时间。
关于hadoop - map和reduce如何并行运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19994735/