Yarn及MapReduce工作流程(总结版)

hadoop的工作流程(未写出在hdfs上传和下载数据的流程,此流程请详见nn和2nn的爱恨情仇以及nn和dn的老大和小弟的故事)​ 1.MR程序提交到客户端所在的节点,客户端向RM发出申请Application的请求​ 2.RM同意,并返回提交资源的路径stag和application_id。​ 3客户端向集群的hdfs提交job运行所需要的资源,提交之后会生成向集群提交数据的stag路径、生成job_id、FileInputFormat调用getSplites()获取切片规划,并序列化成二进制
摘要由CSDN通过智能技术生成
Yarn及MapReduce工作流程(总结版)

(未写出在hdfs上传和下载数据的流程,此流程请详见nn和2nn的爱恨情仇以及nn和dn的老大和小弟的故事)

Yarn工作流程:
在这里插入图片描述
​ 1.MR程序提交到客户端所在的节点,客户端向RM发出申请Application的请求

​ 2.RM同意,并返回提交资源的路径stag和application_id。

​ 3客户端向集群的hdfs提交job运行所需要的资源,提交之后会生成向集群提交数据的stag路径、生成job_id、FileInputFormat调用getSplites()获取切片规划,并序列化成二进制文件、含有job运行参数的job.xml、集群运行所需要的jar包。

​ 4.资源提交完毕之后,向RM提交执行MRAppMaster的请求。

​ 5.RM把客户端的请求变成Task,并放进容量资源调度器(hadoop默认的),等待节点认领。

​ 6.某个节点拿到Task之后,生成Contain容器,并运行MRAppmaster。

​ 7.下载hdfs上的资源到本地。

​ 8.根据在hdfs上下载的切片规划,MR向RM申请运行运行的切片等同数量的MapTask。

​ 9.RM把Task放容量资源调度器,等待指定的节点领取MapTask。

​ 10.节点领取到MapTask之后,生成contain,并执行MapTask;

MapTask阶段:
在这里插入图片描述
​ 11.MapTask会调用默认的TextInputFormat使用LineRecordReader一行行读取文件的数据。(read阶段)

​ 12.读取的数据经过map()之后,会被上下文对象context以kv键值对的形式写出会,并等待被Collector环形缓冲区(默认是100m)使用collect()收集。(map阶段)

​ 13.数据到了环形缓冲区之后,会选择一个分界点,kv数据会向右边存储,kv的元信息(包括索引、分区信息、keystart、valuestart)向左边存储,当达到环形缓冲区的百分之八十之后(默认是半分之八十),在剩下的20m中寻找一个新的分界点,存储的形式跟原来保持一致;存储完毕的80m会溢出落盘,在溢出之前会进行一次快速排序,保证数据在区内有序,如果有conbiner(),那么会进行区内的key合并,做完这些之后才进行落盘。如果写入环形缓冲区的速度大于溢出的速度,写入会等待一下。(collect阶段、spill(溢出)阶段)

​ 14.溢出完毕之后,会把本节点所有的溢出文件进行一次归并排序形成一个大的文件,如果有conbiner(),会进行一次节点内合并key。(meger(合并)阶段)

RedcueTask阶段:
在这里插入图片描述
​ 15.ReduceTask会主动copy自己负责的区的所有节点的数据,如果数据不大ÿ

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值