map-reduce流

3mpgtkmj  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(361)

我正在用这本书学习hadoop Hadoop in Practice 在阅读第一章的时候,我看到了这个图表:

从hadoop文档:(http://hadoop.apache.org/docs/current2/api/org/apache/hadoop/mapred/reducer.html)

1.洗牌

reducer输入Map器的分组输出。在这个阶段,对于每个reducer,框架通过http获取所有Map器输出的相关分区。

2.排序

在这个阶段,框架按键对输入进行分组(因为不同的Map器可能输出相同的键)。洗牌和排序阶段同时发生,即在提取输出时,它们被合并。
但我明白 shuffle 以及 sorting 同时发生,我不清楚框架如何决定 reducer 收到哪个 mapper 输出。从文件上看,似乎每个 reducer 有办法知道 map 输出收集,但我不明白如何。
所以我的问题是,给定上面的Map器输出,最终的结果对于每个reducer总是相同的?如果是这样的话,有什么步骤来实现这个结果?
感谢您的澄清!

xiozqbni

xiozqbni1#

分区器决定如何将Map器的输出分配给不同的归约器。
partitioner控制中间Map输出的键的分区。密钥(或密钥的子集)通常通过哈希函数来派生分区。分区总数与作业的reduce任务数相同。因此,这就控制了m个reduce任务中的哪一个将中间键(以及记录)发送到reduce。

相关问题