MapReduce工作流程

MapReduce工作流程,第1张

MapReduce工作流程

 

1. client 客户端有一个文件 200m

2. 客户端subnmit()之前 对文件进行切片 hadoop默认切片为128m 所以会切成2片

3.客户端提交信息 job.split wc.jar job.xml 如果是本地模式没有jar包

4.提交信息给yarn yarn启动 MRAppMaster  进程计算出MapTask数量

5.当实例化一个maptask后,创建TextInputFormat,调用里面的RecoreReader方法将切片读取封装成(k,v)传送给Mapper

6.当调用了context.write()方法时,此时会初始化一个outputCollector对象将map输出的key,value收集到缓冲区(MapOutBuffer)中 

默认是100m

7. 环形缓冲区是双向写入 左边的是索引 右边是数据 当缓冲区达到80%准备将数据溢写到文件之前,会以分区为单位对区内的数据进行快速排序,同时每溢写一次就调一次combiner进行合并 合并小的切片文件 多个maptask转变为一个task

8.此时将环形缓冲区的数据溢写到文件(分区且区内有效)

对所有溢写的文件进行Merge归并排序,此时一个maptask结束

reduce阶段

 所有maptask任务完成后,启动相应数量的reducetask,并告知reducetask处理数据的范围
启动shuffle线程通过网络I/O将数据拷贝到内存中合并,此时如果数据量太大或者shuffle线程不够的话它也会先进行combiner合并一部分溢写到磁盘落盘处理


对每个map来的数据并归排序,让其所有数据整体有序


按照相同key进行分组(GroupingComparator(k,knext))


使用分组比较器对(key,value)进行迭代,一次读入一组进入reducer(k,v)创建TextOutputFormat对象,调用里面的RecoreWriter方法对数据进行写出
 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5669625.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存