1、从map方法开始,到reduce方法结束,就是数据排序的一个过程
2、具体流程
①map方法将数据写入到环形缓冲区(数组),默认大小为100M,环形缓冲区对map方法写入的数据进行分区,然后再排序(按照key排序(字典序)),这个数组中一半放的是数据,一半放的是数据的索引,目的是为了方便排序(快排序)。
当数据写入到数组的80%时反向写入,同时combiner将数据溢写并进行第二次排序(归并排序),到这里map阶段结束。
②reduce阶段,将若干个maptask处理的结果拷贝到内存中,如果内存不够就溢写到磁盘上
然后对不同的maptask进行归并排序,这里是按照相同的key排序,reduce阶段结束,shuffle结束。
注意:数据在进入环形缓冲区之前就会进行分区,有几个分区就有几个reducetask
当只有一个分区时,数据都写入0号分区;当有多个分区时,通过key的hashcode&integer.MAX_VALUE%分区数的结果,来确定数据写入到哪个分区。
hadoop中的shuffle流程详解
最新推荐文章于 2022-09-09 21:08:14 发布