大数据-Shuffle工作机制
Shuffle工作机制
Shuffle过程:数据从MapTask拷贝到ReduceTask的过程(MapReduce的核心)
Shuffle基本要求:
(1)完整地将数据从MapTask端拷贝到ReduceTask端
(2)在拷贝过程中,应尽量减少网络资源的消耗
(3) 尽可能地减少磁盘IO对Task执行效率的影响
(1)经过map()方法后,将数据写入环形缓冲区(默认为100M)
(2)当缓冲区的数据达到80%时,数据将进行溢写
(3)当溢写线程启动后,就会对数据进行排序
(4)设置Combiner,对数据进行合并,减少磁盘IO资源的消耗
(5)数据进行归并排序
(6)通过context.write()将数据写到磁盘,MapTask结束
(7)如果是多个MapTask,MapTask就会将输出的结果拷贝到内存缓冲中
(8)当内存缓冲达到阀值,溢线程将会(单线程)启动,溢写到磁盘中
(9)数据再次进行归并排序,将多个溢写文件归并成一个溢写文件
(10)最后,按照相同key进行分组,传送给reduce()方法