MR程序在yarn上运行的生命周期

1,图解:

MR程序在yarn上运行的生命周期

 

2,基本概念:

  • ResourceManager: 资源调度器
           首先保持和NodeManager的心跳机制, 接受客户端的任务请求, 根据NodeManager报告的资源情况, 启动调度任务, 分配Container给ApplicationMaster, 监控AppMaster的存在情况, 负责作业和资源分配调度, 资源包括CPU, 内存, 磁盘, 网络等, 它不参与具体任务的分配和监控, 也不能管理具体任务的失败和重启等.
  • ApplicationMaster: 任务管理器
           在其中一台Node机器上, 负责一个Job的整个生命周期. 包括任务的分配调度, 任务的失败和重启管理, 具体任务的所有工作全部由ApplicationMaster全权管理, 就像一个大管家一样, 只向ResourceManager申请资源, 向NodeManager分配任务, 监控任务的运行, 管理任务的失败和重启.
  • NodeManager: 任务处理器
          负责处理ApplicationMaster分配的任务, 并保持与ResourceManager的心跳机制, 监控资源的使用情况并向RM报告进行报告, 支持RM的资源分配工作.

3,资源调度

资源调度的方式通常有三种:FIFO调度器,容器调度器、公平调度器

MR程序在yarn上运行的生命周期

  • FIFO调度器:先进先出。
    比如A、B两个作业,A先到,则A占用所有资源当B来时等待直至A完成调度,B方可使用。缺点:有阻塞风险
  • 容量调度器:既可以提前限定当前队列所使用的资源占比。如有两个队列,A作业位于队列1,2队列有两个作业B、C,队列1占比25%,队列2占比75%,则整个过程中A作业不会因为作业过大关系调用队列2资源,B、C也同理。缺点:若其中一个队列任务完成的快的话,那就造成了资源浪费
  • 公平调度器:A、B两个用户,当A用户资源先到时B用户没有需求则A占用整个资源,B来到后逐渐占用一半资源,如当接下来B用户有第二个作业而其他作业仍在工作,则第二个作业随即占用B用户一半资源既整个集群资源的1/4,实现资源在用户之间共享。

通常使用后两者,效率较高。

 

参考链接:
                 https://blog.csdn.net/weixin_42582592/article/details/83080900
                
https://blog.csdn.net/xiaozou_it/article/details/86525718