当前位置: 首页 > news >正文

yarn运行机制原理

1.客户端将任务提交给resourceManager

2.resourceManager接受任务请求

3.resourceManager在nodeManager上寻找一个比较空闲的节点,

通知启动一个appMaster,将任务信息发送给appMaster

等待appMaster启动成功

如果启动失败,认为当前任务直接报错,告知任务无法执行

当对应节点启动成功后 报告给主节点(resourceManager)已经启动成功

4.appMaster启动后,开始和主节点保持着心跳机制,

appMaster获知任务的相关信息(jar包路径、主类、参数)

5.appMaster开始根据任务信息,计算共需要多少mapTask和多少个reduceTask

6.appMaster通过心跳包,将任务计算的结果资源需求发送给主节点,进行资源的申请

7.主节点根据接收到的资源申请的结果信息,进行资源的分配工作

如果资源非常宽裕,一次性将所需的所有资源一并全返回

如果资源比较紧张,最起码应该返回所有mapTask所需资源

8.appMaster通过心跳包,一直向主节点询问,是否已经准备好资源,

一旦准备好,将资源信息全部获取

9.appMaster根据获取的资源信息,通知各个nodeManager,启动相关的程序

(先启动mapTask),同时告知nodeManager任务信息(jar包 主类 参数信息)

10.每一个运行的container定时和appMaster汇总执行任务的进度

并且还基于nodeManager 和resourceManager的使用情况,报告资源使用的情况

如果初始化的时候 只是返回mapTask运行的资源,当mapTask执行完成后或者执行过程中 appMaster向resourceManagerTask询问reduceTask的资源是否已经准备好了 如果准备好就进行reduce任务

11.当整个mapTask和reduceTask都运行完成后,container通知appMaster已经执行完成后,报告给resourceManager已经完成任务

12.resourceManager收回所有分配的资源,然后通知appMaster可以执行自毁程序 释放内存

通俗理解:

主节点ResourceManager相当于一个老板  appMaster相当于一个经理  container相当于员工

首先客户把需求给老板 老板找一个经理分配任务

经理要不断与老板保持联系 ,从老板那里获得任务相关信息

经理计算需要用到的map和reduce资源 向老板要资源

老板将资源给到经理  经理开始通知nodeManager干活

container小弟要与经理不断保持联系汇报map任务和reduce任务的进展 和主节点、nodeManager 资源使用情况

当map、reduce任务都完成后  小弟给经理汇报 经理给老板汇报

然后老板收到消息 收回资源 释放内存

YARN是一个资源管理、任务调度的框架,主要包含三大模块:ResourceManager(RM)、NodeManager(NM)、ApplicationMaster(AM)。

ResourceManager负责所有资源的监控、分配和管理;

ApplicationMaster负责每一个具体应用程序的调度和协调;

NodeManager负责每一个节点的维护

三大组件介绍

ResourceManager

  1. ResourceManager负责整个集群的资源管理和分配,是一个全局的资源管理系统。
  2. NodeManager以心跳的方式向ResourceManager汇报资源使用情况(目前主要是CPU和内存的使用情况)。RM只接受NM的资源回报信息,对于具体的资源处理则交给NM自己处理。
  3. YARN Scheduler根据application的请求为其分配资源,不负责application job的监控、追踪、运行状态反馈、启动等工作。

NodeManager

  1. NodeManager是每个节点上的资源和任务管理器,它是管理这台机器的代理,负责该节点程序的运行,以及该节点资源的管理和监控。YARN集群每个节点都运行一个NodeManager。
  2. NodeManager定时向ResourceManager汇报本节点资源(CPU、内存)的使用情况和Container的运行状态。当ResourceManager宕机时NodeManager自动连接RM备用节点。
  3. NodeManager接收并处理来自ApplicationMaster的Container启动、停止等各种请求

ApplicationMaster

  1. 用户提交的每个应用程序均包含一个ApplicationMaster,它可以运行在ResourceManager以外的机器上。
  2. 负责与RM调度器协商以获取资源(用Container表示)。
  3. 将得到的任务进一步分配给内部的任务(资源的二次分配)。
  4. 与NM通信以启动/停止任务。
  5. 监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。
  6. 当前YARN自带了两个ApplicationMaster实现,一个是用于演示AM编写方法的实例程序DistributedShell,它可以申请一定数目的Container以并行运行一个Shell命令或者Shell脚本;另一个是运行MapReduce应用程序的AM—MRAppMaster。

注:RM只负责监控AM,并在AM运行失败时候启动它。RM不负责AM内部任务的容错,任务的容错由AM完成。


http://www.mrgr.cn/news/26256.html

相关文章:

  • 关于 Camera Tuning 岗位的一些认识和看法
  • 深入理解线程互斥锁
  • 音视频入门基础:AAC专题(1)——AAC官方文档下载
  • C盘空间不足如何解决?解决C盘空间不足的7个方法
  • 【聊聊AI编程必不可少的NLTK及其punkt、punkt_tab安装】
  • 双线性插值概念及MATLAB实现
  • C#基础知识-.NET,变量,容量单位,数据类型
  • 总结拓展九:SAP数据迁移(2)
  • Java项目: 基于SpringBoot+mybatis+maven旅游管理系统(含源码+数据库+毕业论文)
  • icpc江西:L. campus(dij最短路)
  • SCRM电商管理后台Axure高保真原型 源文件
  • 李龙受邀参加济南高新区“质量月”能力提升活动,并做专题培训
  • 动手学习RAG: moka-ai/m3e 模型微调deepspeed与对比学习
  • 队列(链表实现)
  • [数据集][目标检测]车油口挡板开关闭合检测数据集VOC+YOLO格式138张2类别
  • 踩最深的坑,教会自己跨境支付
  • 认识泛型和包装类
  • 架构设计:实现负责消息转发、推送的网关服务
  • 数据库系统 第56节 数据库备份与恢复节
  • CSP 2023 提高级第一轮 CSP-S 2023初试题详细解析