MapReduce:shuffle简单理解
如上图:
Mapreduce shuffle流程, 从1到6是:
1、map会把写进来的数据写入缓存,写入过程中,会根据key值做一次partition,partition的方式可以自定义
2、之后,会进行一次排序,sort by key,方便后续的合并
3、map阶段的combine,会根据key,进行数据数据合并,例如:
4、合并后,数据开始溢写到磁盘,在map阶段完成前,会对溢写文件根据partition进行一次排序,由于Map shuffle阶段已经进行过一次排序,所以这一次也会快很多
5、Reduce shuffle的第一个阶段,从磁盘读数据到缓存,对数据根据partition做combine
6、对合并后的数据再做一次排序,由于之前排过的原因,这次也相对很快
备注:过程中一共有三次排序,第一次是快速排序,后两次是归并排序