YARN 作业流程 详细介绍(资源模型)

 

  1. 客户端Application(job)请求,客户端通知ResourceManager他要提交一个应用程序。

  2. ResourecManager应答并带回ApplicationID。

  3. Application Submission Context(应用程序提交上下文)包含ApplicationID、用户名、队列名、Container Launched Context(CLC)的资源请求、作业文件、安全令牌。CLC提供了资源需求(内存、CPU)、作业文件、安全令牌以及在节点上启动ApplicationMaster(AM)需要的其他信息。

  4. ResourceManager收到Client(客户端)的Application Submission Context,就为ApplicationMaster调度一个可用的Contaner,这个Container就是ApplicationMaster,通常被称为Container0。此时若没有使用的Container,这个请求就会等待,直到找到了合适的Container,ResourceManager就会联系相应的NodeManager并启动ApplicationMaster。这个过程中将建立ApplicationMaster的RPC端口和用于跟踪的URL,用来监控应用程序状态。ResourceManager分配了Container后,ApplicationMaster的启动器直接与ApplicationMaster Container(Container0)相应的NodeManager通信,以设置并启动该Container,于是ApplicationMaster的生命周期开始。

  5. ResourceManager发送关于集群的最大和最小容量信息。这时ApplicationMaster决定如何使用当前集群可用资源。

  6. 基于ResourceManager的可用资源报告,ApplicationMaster请求一定量的Container。该请求可非常具体。

  7. ResourceManager基于调度策略,尽可能最优的为ApplicationMaster分配Container资源,然后将资源请求的应答发给ApplicationMaster。

  8. ApplicationMaster将ResourceManager分配的Container告知NodeManager以便ApplicationMaster使用。

  9. 计算任务过程在Container中进行,这些Container与ApplicationMaster(不是ResourceManager)保持通信,并告知任务过程。          在这一点上,ResourceManager已经将分配的NodeManager的控制权移交给了ApplicationMaster。ApplicationMaster将独立联系其指定的NodeManager并提供Container Launch Context(CLC),CLC包括环境变量、远程存储依赖文件、安全令牌以及启动实际进程所需的命令。当Container启动时,所有数据文件、可执行文件以及必要的依赖文件都被拷贝到节点的本地存储上了。其中依赖文件可以被应用程序(job)的Container之间共享。          ResourceManager不参与应用程序的执行,只处理调度和监控其他资源。ResourceManager可以命令NodeManager杀死Container。(1)在ApplicationMaster通知ResourceManager自己已完成   或(2)ResourceManager需要为另一个应用程序抢占资源  或(3)Container超出资源限制   或(4)NodeManager接受ResourceManager指令杀死Containter 这样都可能发生杀死Container事件。 当Container被杀死后,NodeManager会清理本地工作目录。         作业结束后,ApplicationMaster通知ResourceManager该作业完成,然后ResourceManager通知NodeManager聚集日志并清理Container专用文件。如果Container还没有退出,NodeManager也可以接受指令去杀死剩余的Container(包括ApplicationMaster)。

  10. ApplicationMaster将心跳和进度信息通过心跳发送给ResourceManager。在这些心跳中,ApplicationMaster可以请求和释放Constainer。当作也结束时,ApplicationMaster向Resourcemanager发出一个Finish消息,然后退出。

 

ApplicationMaster启动成功后将负责以下任务:

  • 初始化向ResourceManager报告自己活跃信息的进程
  • 计算应用程序的资源需求
  • 将需求转换成YARN调度器可以理解的ReqsourceRequest
  • 与调度器协商申请资源
  • 与NodeManager合作使用分配的Container
  • 跟踪正在运行的Container的状态,监控他们的进程
  • 对Container或节点失败的情况进行处理,在必要的情况下重新申请资源

 

参考Hadoop YARN权威指南、Hadoop大数据挖掘

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ahuuua

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值