本文来自:http://blog.csdn.net/DianaCody/article/details/39502917
一、MapReduce 总体架构
整体的Shuffle过程包含以下几个部分:Map端Shuffle、Sort阶段、Reduce端Shuffle。即是说:Shuffle 过程横跨 map 和 reduce 两端,中间包含 sort 阶段,就是数据从 map task 输出到reduce task输入的这段过程。
-----------------------------------------------------------------------------------------------------------------------------
注意:sort、combine 是在 map 端的,combine 是提前的 reduce ,需要自己设置。
combiner 是提前的 reducer ,同样需要用户设置 combiner,combiner 就是根据相同 key 来合并结果的。MapReduce 的术语中,reduce 只指 reduce 端执行从多个 map task 取数据做计算的过程。除 reduce 外,非正式地合并数据只能算做 combine(比如这里 map 端的提前合并 combine)。MapReduce 中将 Combiner 等同于 Reducer。
---------------------------------------------------------------------------------------------------------------------------
官方给的文档中图为:其中分为 map 端 shuffle 和 reduce 端 shuffle ,这是总体的过程图,具体细节图例还需再在 map 和 reduce 两个阶段细分,详细图解见后文。这里先给出总体过程图: