MapReduce确保每个reducer的输入都是按键排序,系统执行排序的过程(将map的输入作为输出传给reducer)
Shuffle机制_ES  编程  机制
Shuffle机制_ES  编程  机制_02

  1. map方法 写入<key,value>数据进入缓冲区
    Shuffle机制_ES  编程  机制_03
    2.溢写
    分区
    排序
    Shuffle机制_ES  编程  机制_04

    combiner为可选的流程
    Shuffle机制_ES  编程  机制_05
    如果设置了,就会进行合并多次溢写的操作
    spill.index:溢写文件的大小,位置信息
    spill.out:溢写文件

多次溢写
Shuffle机制_ES  编程  机制_06
再一次combiner为可选的流程,设置了
如果设置了对数据进行了压缩,也是优化的手段
协调了网络传输

3.写入磁盘.等待reduceTask 进行操作

4.Map方法拷贝数据
Shuffle机制_ES  编程  机制_07
分别拷贝各自管理的分区,如果内存不够,溢写到磁盘中
Shuffle机制_ES  编程  机制_08
优化提高内存缓冲
5. 归并排序并分组
6.Shuffle机制_ES  编程  机制_09