大数据-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()方法

猜你喜欢

转载自blog.csdn.net/JavaDestiny/article/details/88652435