总共可能发生 4 次排序过程:
1)Map 阶段:
1.缓冲区的数据达到阈值后,对key按照字典序进行排序(快速排序)(这里的排序是只排索引,不会移动数据在缓冲区的位置)
2.对溢写到磁盘的数据进行分区归并排序
2)Reduce 阶段:
3.需要将多个Map任务的输出文件copy到ReduceTask中后合并。按指定分区读取数据到reduce缓存中(不够则落盘),当缓存数据达到阈值时,进行溢写到磁盘,最后对溢写的数据进行归并排序
(这里当溢写到磁盘的文件数量达到合并因子(默认是10)的时候就会进行合并,比如map有50个输出,那么合并将进行5趟。每趟将10个文件合并成一个文件)
4.Reducetask前分组排序:自定义