hadoop - map和reduce如何并行运行

标签 hadoop mapreduce

我是 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/

相关文章:

Hadoop 组件未启动

hadoop - 如何使用 Ubuntu 终端运行 Map Reduce 程序?

hadoop - 溢出过程何时停止?

hadoop - 在 map reduce 中解决这个问题的最佳方法是什么?

java - Hadoop Java程序始终以独立模式运行

mongodb - 映射器无法让Pig将数据插入MongoDB

hadoop - PIG local和mapreduce模式的区别

java - 带Avro的Mapreduce-通用解析

javascript - 计算 couchdb 文档中的标签数量

amazon-s3 - map-reduce 如何在 HDFS 和 S3 上工作?