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

Shuffle机制_mapreduce

Shuffle机制_数据_02


map方法 写入<key,value>数据进入缓冲区

Shuffle机制_mapreduce_03

2.溢写

分区

排序

Shuffle机制_网络传输_04

combiner为可选的流程

Shuffle机制_mapreduce_05

如果设置了,就会进行合并多次溢写的操作

spill.index:溢写文件的大小,位置信息

spill.out:溢写文件


多次溢写

Shuffle机制_数据_06

再一次combiner为可选的流程,设置了

如果设置了对数据进行了压缩,也是优化的手段

协调了网络传输

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

4.Map方法拷贝数据

Shuffle机制_数据_07

分别拷贝各自管理的分区,如果内存不够,溢写到磁盘中

Shuffle机制_网络传输_08

优化提高内存缓冲

5. 归并排序并分组

6.Shuffle机制_网络传输_09