一、排序概述
1、在MapReduce的shuffle过程中执行了三次排序,分别是:
map的溢写阶段:根据分区以及key进行快速排序
map的合并溢写文件:将同一个分区的多个溢写文件进行归并排序,合成大的溢写文件
reduce输入阶段:将同一分区,来自不同map task的数据文件进行归并排序
2、在MapReduce整个过程中,默认是会对输出的KV对按照key进行排序的,而且是使用快速排序。
map输出的排序的,其实也就是上面的溢写过程中的排序。
reduce输出的排序,即reduce处理完数据后,MapReduce内部会自动对输出的KV按照key进行排序
以上排序都是根据KV中的Key进行排序的。所以当我们自定义的类作为Key时,需要实现WritableComparable 接口,也就是实现里面的 compareTo() 方法,用于排序时进行比较。