Yarn提交Job的流程

在这里插入图片描述

1.作业提交
(1)client 调用 job.waitForCompletion 方法,向整个集群提交 MapReduce作业。
(2)client 向 ResourceManager 申请一个作业 Id。
(3)ResourceManager 给 Client 返回该 job 资源的提交路径(HDFS 路径)和作业 Id,每一个作业都有一个唯一的 Id。
(4)Client 发送 jar 包、切片信息和配置文件到指定的资源提交路径。
(5)Client 提交完资源后,向 ResourceManager 申请运行 MrAppMaster,执行作业(针对该 job 的 ApplicationMaster)。
2.作业初始化
(6)当 ResourceManager 收到 Client 的请求后,将该 job 添加到容量调度器(Resouce Scheduler)中。
(7)某一个空闲的 NodeManager 领取到该 job。
(8)该 NodeManager 创建 Container,并产生 MrAppMaster。
(9)下载 Client 提交的资源到本地,根据分片信息生成 MapTask 和ReduceTask。
3.任务分配
(10)MrAppMaster 向 ResouceManager 申请运行多个 MapTask 任务资源。
( 11 ) ResourceManager 将运行 MapTask 任 务 分 配 给 空 闲 的 多 个NodeManager,NodeManager 分别领取任务并创建容器(Container)。
4.任务运行
(12)MrAppMaster 向两个接收到任务的 NodeManager 发送程序启动脚本,每个接收到任务的 NodeManager 启动 MapTask,MapTask 对数据进行处理,并分区排序。
(13)MrAppMaster 等待所有 MapTask 运行完毕后,向 ResourceManager申请容器(Container),运行 ReduceTask。
(14)程序运行完毕后,MrAppMaster 会向 ResourceManager 申请注销自己。
(15)进度和状态更新
YARN 中的任务将其进度和状态(包括 counter)返回给应用管理器, 客户端每秒(通过 mapreduce.client.progressmonitor.pollinterval 设置)向应用管理器请求进度更新, 展示给用户。可以使用 YARN WebUI 查看任务执行状态。
5.作业完成
除了向应用管理器请求作业进度外, 客户端每 5 分钟都会通过调用waitForCompletion() 来 检 查 作 业 是 否 完 成 。 时 间 间 隔 可 以 通 过mapreduce.client.completion.pollinterval 来设置。作业完成之后, 应用管理器和container 会清理工作状态。作业的信息会被作业历史服务器存储以备之后用户核查。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值