【发布时间】:2013-11-22 12:38:09
【问题描述】:
我对 Hadoop 的实现感到困惑。
我注意到,当我使用多个映射器和化简器运行 Hadoop MapReduce 作业时,我会得到很多 part-xxxxx 文件。同时,一个键确实只出现在其中一个中。
因此,我想知道 MapReduce 是如何工作的,这样一个键只能转到一个输出文件?
提前致谢。
【问题讨论】:
标签: hadoop cloud elastic-map-reduce
我对 Hadoop 的实现感到困惑。
我注意到,当我使用多个映射器和化简器运行 Hadoop MapReduce 作业时,我会得到很多 part-xxxxx 文件。同时,一个键确实只出现在其中一个中。
因此,我想知道 MapReduce 是如何工作的,这样一个键只能转到一个输出文件?
提前致谢。
【问题讨论】:
标签: hadoop cloud elastic-map-reduce
MapReduce 过程中的 shuffle 步骤负责确保具有相同 key 的 所有 记录最终在同一个 reduce 任务中。有关 MapReduce 数据流的描述,请参阅 this Yahoo tutorial。名为 Partition & Shuffle 的部分指出
每个 map 任务都可以向任何分区发出 (key, value) 对;同一个键的所有值总是一起减少,不管它的来源是哪个映射器。
【讨论】:
随机播放
Reducer 的输入是映射器的排序输出。在这个阶段,框架通过 HTTP 获取所有映射器输出的相关分区。
排序
框架在这个阶段通过键对Reducer输入进行分组(因为不同的映射器可能输出相同的键)。
洗牌和排序阶段同时发生;在获取地图输出时,它们会被合并。
我从这里得到这个
https://hadoop.apache.org/docs/r1.2.1/mapred_tutorial.html
看看吧,希望对你有帮助
【讨论】: