Hadoop Yarn工作机制

在yarn上写应用程序并不同于我们熟知的MapReduce应用程序,必须牢记yarn只是一个资源管理的框架,并不是一个计算框架,计算框架可以运行在yarn上。

我们所能做的就是向RM申请container,然后配合NM一起来启动container。就像MRv2一样,jobclient请求用于MR AM运行的container,设置环境变量和启动命令,然后交由NM去启动MR AM,随后map/reduce task就由MR AM全权负责,当然task的启动也是由MR AM向RM申请container,然后配合NM一起来启动的。

所以要想在yarn上运行非特定计算框架的程序,我们就得实现自己的client和applicationMaster。另外我们自定义的AM需要放在各个NM的classpath下,因为AM可能运行在任何NM所在的机器上。

YARN工作流程

要使用一个YARN集群,首先需要来自包含一个应用程序的客户的请求。ResourceManager 协商一个容器的必要资源,启动一个 ApplicationMaster 来表示已提交的应用程序。通过使用一个资源请求协议,ApplicationMaster 协商每个节点上供应用程序使用的资源容器。执行应用程序时,ApplicationMaster 监视容器直到完成。当应用程序完成时,ApplicationMaster 从 ResourceManager 注销其容器,执行周期就完成了。

  1. Client向ResourceManager中ApplicationsManager(AsM)提交一个应用程序
  2. AsM向Scheduler请求一个供ApplicationMaster运行的container,并与对应的NodeManager通信,要求它在这个Container中启动应用程序的ApplicationMaster

  3. ApplicationMaster启动后向AsM注册,这样Client即可以从AsM获取到AM相关的信息,并直接与AM进行通信,然后ApplicationMaster为各个任务申请资源,并监控它们的运行状态,直到运行结束,即重复步骤4-7

  4. ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源

  5. 一旦ApplicationMaster成功申请到资源container,便开始与对应的NodeManager通信,要求它启动任务

  6. NodeManager为任务设置好运行环境,即资源本地化(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务

  7. 各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,从而可以在任务失败时申请新的container重新启动任务

  8. 当每个task完成后,ApplicationMaster运行OutputCommitter的cleanup指令进行一些收尾工作,通过RPC协议向ResourceManager注销并关闭自己
    这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值