摘自“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上运行?
答案 0 :(得分:0)
回答这个问题就像重写整个历史一样。您的很多疑问与操作系统概念有关,而与MapReduce无关。
要了解更多有趣的想法,请参阅: http://bytepadding.com/big-data/map-reduce/understanding-map-reduce-the-missing-guide/