一、概述
1、MapTask和ReduceTask均会对数据按照key进行排序,这是Hadoop的默认行为。任何应用程序中的数据均会被排序,而不管逻辑上是否需要,默认排序是按照字典顺序排序,方法为:快速排序
2、MapTask,在什么时候排序?
a、环形内存缓冲区,快速排序,溢出到磁盘
b、所有数据处理完毕,将磁盘中的数据进行归并排序
3、ReduceTask,在什么时候发生排序?
a、从MapTask中copy数据到ReduceTask,若磁盘发生溢出,则进行归并排序
b、所有的数据分析完成后,将内存和磁盘中的所有数据进行归并排序
二、排序分类
1、部分排序
Partition,各个输出文件,分别排序
2、全排序
输出一个文件,排序
3、分组排序
4、二次排序
compareTo的判断条件有两次,即为二次排序