我对Hadoop的实现感到困惑。
我注意到当我使用多个映射器和reducer运行我的Hadoop MapReduce作业时,我会得到许多part-xxxxx文件。同时,一个密钥只出现在其中一个密钥中。
因此,我想知道MapReduce是如何工作的,只有一个键只能转到一个输出文件?
提前致谢。
答案 0 :(得分:3)
MapReduce流程中的随机播放步骤负责确保具有相同键的所有记录在同一个reduce任务中结束。有关MapReduce数据流的说明,请参阅this Yahoo tutorial。这部分名为Partition& Shuffle表示
每个地图任务可以向任何分区发射(键,值)对;无论哪个映射器是它的原点,同一个键的所有值总是一起减少。
答案 1 :(得分:2)
<强>随机强>
Reducer的输入是映射器的排序输出。在此阶段,框架通过HTTP获取所有映射器的输出的相关分区。
<强>排序强>
框架在此阶段按键分配Reducer输入(因为不同的映射器可能输出相同的密钥)。
洗牌和分拣阶段同时发生;正在提取地图输出时,它们会被合并。
我从这里得到了这个
https://hadoop.apache.org/docs/r1.2.1/mapred_tutorial.html
看看它,我希望这会有所帮助