什么是Map Reduce WorkFlow?

时间:2017-02-09 09:10:25

标签: hadoop mapreduce combiners bigdata

摘自“hadoop权威指南 - 汤姆白”一书是:

用户的map函数和用户的reduce函数之间的所有逻辑都称为shuffle。然后Shuffle跨越两个地图并减少。在用户的map()函数之后,输出位于内存循环缓冲区中。当缓冲区已满80%时,后台线程开始运行。后台线程将缓冲区的内容输出到溢出文件中。此溢出文件按键分区。在每个分区中,键值对按键排序。排序后,如果启用了组合器功能,则调用组合器函数。所有溢出文件将合并到一个MapOutputFile中。并且所有Map任务的MapOutputFile都将通过网络收集到Reduce任务。减少任务将做另一种。然后将调用用户的Reduce函数。

所以问题是:

1。)根据上述摘要,这是流程:

映射器 - Partioner - 排序 - 合 - 随机 - 排序 - 减速器 - 输出

1a。)这是流程还是别的什么?

1b。)你可以用一个例子说单词计数例子解释上面的流程(我在网上发现的那些不是那么详细)吗?

2。)那么映射器阶段输出是一个大文件(MapOutputFile)?这是一个被打破的大文件,键值对被传递到相应的Reducer?

3.。)为什么排序第二次发生,当数据已经排序&当它们传递到各自的减速器时结合在一起?

4.。)假设mapper1是否在Datanode1上运行,那么reducer1是否需要在datanode1上运行?或者它可以在任何Datanode上运行?

1 个答案:

答案 0 :(得分:0)

回答这个问题就像重写整个历史一样。您的很多疑问与操作系统概念有关,而与MapReduce无关。

  1. Mappers数据写在本地文件系统上。数据根据reducer的数量进行分区。在每个分区中,根据泄漏发生的时间,可以有多个文件。
  2. 在写入文件之前,对给定分区中的每个小文件进行排序,在内存排序中完成。
  3. 为什么需要在mapper端对数据进行排序? a。数据在映射器侧进行排序和合并,以减少文件数量。 b。文件被排序,因为在reducer上不可能收集给定键的所有值。
  4. 在reducer上收集数据后,首先需要减少系统上的文件数量(请记住,在这种情况下,uLimit对每个用户都有固定的数量hdfs)
  5. Reducer只是在一小组已排序文件上维护一个文件指针,并对它们进行合并。
  6. 要了解更多有趣的想法,请参阅: http://bytepadding.com/big-data/map-reduce/understanding-map-reduce-the-missing-guide/

相关问题