Map减少Hadoop中的流量

时间:2014-01-04 02:51:52

标签: java hadoop mapreduce pseudocode

我正在使用本书Hadoop in Practice学习Hadoop,在阅读第1章时,我看到了这个图:

enter image description here

来自Hadoop文档:(http://hadoop.apache.org/docs/current2/api/org/apache/hadoop/mapred/Reducer.html

1.Shuffle

  

Reducer输入Mapper的分组输出。在该阶段,每个Reducer的框架都通过HTTP获取所有Mapper输出的相关分区。

2.SORT

  

框架在此阶段按键分配Reducer输入(因为不同的Mapper可能输出相同的键)。   混洗和排序阶段同时发生,即在提取输出时,它们被合并。

虽然我理解shufflesorting同时发生,但我不清楚框架如何决定哪个reducer收到哪个mapper输出。从文档中,似乎每个reducer都有办法知道要收集哪个map输出,但我无法理解。

所以我的问题是,鉴于上面的映射器输出,每个reducer的最终结果总是相同的?如果是,那么实现这一结果的步骤是什么?

感谢您的任何澄清!

1 个答案:

答案 0 :(得分:1)

Partitioner决定如何将映射器的输出分配给不同的reducer。

  

分区程序控制中间地图输出的键的分区。密钥(或密钥的子集)用于通常通过散列函数来导出分区。分区总数与作业的reduce任务数相同。因此,这将控制m减少任务中的哪一个中间密钥(以及记录)被发送以进行减少。