YARN【工作机制】

Yarn概念

        Yarn 是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的 操作系统平台 ,而 MapReduce 等运算程序则相当于运行于 操作系统之上的应用程序

Yarn的四大组件

        YARN 主要由 ResourceManager(整个集群资源的老大) NodeManager(单个节点资源的老大) ApplicationMaster(每个作业的老大)  Container(容器,负责运行MapTask、ReduceTask)  等组件构成。

ResourceManager(RM)

  1. 处理客户端请求,客户端请求提交一个任务,由RM来进行处理
  2. 监控NodeManager,监控所有节点的运行情况,有节点资源不足就进行处理
  3. 启动或监控ApplicationMaster,客户端提交了一个MR程序,对应启动一个ApplicationMaster,如果纸处理这个任务的节点挂了,就把这个任务交给别的节点去处理
  4. 资源的分配和调度

NodeManager

  1. 管理单个节点上的资源
  2. 处理来自RresourceManager的命令
  3. 处理来自ApplicationMaster的命令

ApplicationMaster

  1. 为应用程序申请资源并分配给内部任务
  2. 任务的监控与容错(MapTask、ReduceTask)

Container

        是YARN中对资源的抽象,封装了节点上的资源(内存、CPU、磁盘、网络等),相当于一台小型计算机。

YARN工作机制

例子:我们提交一个MapReduce程序给集群进行WordCount单词统计。

1.客户端提交MapReduce程序

job.waitForCompletion();  -> 创建一个YarnRunnner ->

2.客户端向RM申请一个Application

3. RM给客户端返回一个集群路径 以及 一个应用id(Application_id)-> 

4. 客户端提交MapReduce作业需要的资源

  • job.split,作业的切片信息
  • job.xml 作业的配置参数信息 
  • wordcount.jar 用户的业务逻辑代码

5. 客户端告诉MR资源提交完毕,申请运行MRAppMaster

6.RM将客户端的请求初始化为一个Task

        由于我们的客户端可能是多个,所以需要将每个客户端的Task都放到一个队列当中,一个一个执行。

7. NodeManager领取Task

        NodeManager领取到Task后创建容器Container(任何Task都是在容器中执行)
Container启动一个MRAppMaster进程

8. 去集群上下载job运行需要的资源到本地

9. MRAppMaster再次向RM申请MapTask容器

10. MRAppMaster创建MapTask需要的容器

        通过多个或一个NodeManager创建多个的容器,开启对应个数的MapTask(即使是多个MapTask也可能在同一个NodeManager的多个容器中)

11. MRAppMaster发送启动命令

        MRAppMaster向新开启的NodeManager发送启动命令,启动对应的MapTask,一个MapTask对应一个YarnChild进程。
        MapTask运行完毕,将数据持久化到磁盘

12. MRAppMaster创建ReduceTask需要的容器

        MRAppMaster一直监控运行的执行情况,当检测到MapTask任务执行完毕之后,立即向RM申请相应数量的容器来执行ReduceTask程序,依旧是开启相应数量的容器,在容器中启动ReduceTask,这些ReduceTask对应的进程任然是YarnChild。

13. 作业完成释放资源

        MRAppMaster检测到ReduceTask执行完毕,向RM申请注销自己,将资源(开启的所有NodeManager)全部释放
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

让线程再跑一会

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

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

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

打赏作者

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

抵扣说明:

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

余额充值