MapReduce处理流程

MapReduce处理流程

在这里插入图片描述
1)把输出目录下文件按照一定的标准进行逻辑切片,形成切片规划

​ 默认为,split size=Block size=128M。每一个切片由一个MapTask处理

2)TextInputFormat对切片中的数据进行一行一行的读取,把每一行文本内容解析成键 值对。key是每一行的起始位置,value是本行的文本内容

3)调用map方法,并将mapper结果输出到环形缓冲区数据分区在此之前完成(job.setNumReduceTask()),partition对应Reducer。

​ 内存缓冲区大小为100M,内存缓冲区达到80%,进行spill溢出溢写在此之前对key进行排序,溢写到磁盘,如果设置combiner,运行combiner,进行merge合并(归并排序)小文件成大文件(每merge一次就排序一次

4)当maptask处理完自己负责的切片数据之后,把结果保存在自己运行机器的某个目录下,等待着ReduceTask的拉取

ReducerTask

5)Reducer任务会主动从Mapper中拉取其输出的键值对,拉取到Reducer缓冲区

6)对数据进行merge sort合并排序

7)然后进行grouping分组,key相同的为一组

8)同一分组的数据组成一个新的kv对

9)调用reduce方法,将结果输出到HDFS文件中

发布了14 篇原创文章 · 获赞 12 · 访问量 811

猜你喜欢

转载自blog.csdn.net/qq_45094921/article/details/104543510
今日推荐