YARN的执行流程

MR 程序运⾏时,有五个独⽴的进程:

        1. YarnRunner:⽤于提交作业的客户端程序

        2.ResourceManager:yarn资源管理器,负责协调集群上计算机资源的分配
        3. NodeManager:yarn节点管理器,负责启动和监视集群中机器上的计算容器 (container
        4.Application Master:负责协调运⾏ MapReduce 作业的任务,他和任务都在容器中运⾏,这些容由资源管理器分配并由节点管理器进⾏管理。
        5.HDFS:⽤于共享作业所需⽂件。

1 . 调⽤ waitForCompletion ⽅法每秒轮询作业的进度,内部封装了 submit() ⽅法,⽤于创建JobCommiter 实例,并且调⽤其的 submitJobInternal ⽅法。提交成 功后,如果有状态改变,就会把进度报告到控制台。错误也会报告到 控制台
2 . JobCommiter 实例会向 ResourceManager 申请⼀个新应⽤ ID ,⽤于 MapReduce 作业ID 。这期间 JobCommiter 也会进⾏检查输出路径的情况,以及计算输⼊分⽚。
3. 如果成功申请到 ID, 就会将运⾏作业所需要的资源(包括作业 jar ⽂件,配置⽂件和 计算所得的输⼊分⽚元数据⽂件)上传到⼀个⽤ID命名的⽬录下的 HDFS 上。此时副本个数默认是10.
4 . 准备⼯作已经做好,再通知 ResourceManager 调⽤ submitApplication ⽅法提交作业。
5 . ResourceManager 调⽤ submitApplication ⽅法后,会通知 Yarn 调度器 (Scheduler ),调度器分配⼀个容器,在节点管理器的管理下在容器中启动 application master进程。
6 . application master 的主类是 MRAppMaster ,其主要作⽤是初始化任务,并接 受来⾃任务的进度和完成报告。
7 . 然后从 HDFS 上接受资源,主要是 split 。然后为每⼀个 split 创建 MapTask 以及参 数指定的ReduceTask ,任务 ID 在此时分配
8 . 然后 Application Master 会向资源管理器请求容器,⾸先为 MapTask 申请容 器,然后再为ReduceTask 申请容器。( 5%
9 . ⼀旦 ResourceManager 中的调度器( Scheduler ),为 Task 分配了⼀个特定节 点上的容器,Application Master 就会与 NodeManager 进⾏通信来启动容器。
10 . 运⾏任务是由 YarnChild 来执⾏的,运⾏任务前,先将资源本地化( jar ⽂件,配置⽂件,缓存⽂件)
11 . 然后开始运⾏ MapTask ReduceTask
12 . 当收到最后⼀个任务已经完成的通知后, application master 会把作业状态设 置为success 。然后 Job 轮询时,知道成功完成,就会通知客户端,并把统计信息输出 到控制台

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值