MapReduce的工作机制

(1)通过submit()方法将任务提交给客户端
(2)将通过split()方法得出的切片信息提交给Yarn
(3)NodeManger计算出MapTask数量(MapTask由Block大小决定)
(4)MapTask通过InputFormat类读取文件数据
(5)客户端以(key,value)结构来传输数据
(6)在Mapper阶段执行Mapper类中的map()方法和context.write()方法将数据写入到环形缓冲区
(7)环形缓冲区默认大小为100M,当达到80%时,会进行溢写
(8)在Combiner阶段,可以通过本地化的reduce操作(Combiner)进行优化,对数据进行简单的合并,减少网络之间的传输
(9)根据分区进行归并排序
(10)将归并排序好的数据下载到ReudceTask本地磁盘中
(11)合并文件,再进行归并排序
(12)每次读取一组数据到Reducer阶段当中
(13)在Reducer阶段执行Reducer类中的reduce()方法和context.write()方法,通过OutputFormat类写入到part-r-00000文件当中
本文详细阐述了MapReduce的工作流程,从任务提交到数据读取,再到Mapper和Reducer的执行过程,深入解析了其核心机制,包括数据溢写、Combiner优化、归并排序等关键步骤。
414

被折叠的 条评论
为什么被折叠?



