走进 YARN 资源管理和调度| 青训营笔记

188 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的的第14天

Yarn整体架构

调度系统范型

其中集中式和两层式最常用 image.png

YARN诞生背景

image.png

离线生态

image.png

  • 集群资源管理层:YARN

系统架构

image.png

Resource Manager

  • 可以有多个Resource Manager,但每次只有一个Resource Manager起作用,其他备用,当主节点故障时,通过ZK进行切换。
  • 功能
    • 资源管理和调度
    • 任务生命周期管理
    • 对外进行交互

Node Manager

  • 对于每一个Node都有一个NodeManager
  • 功能
    • 提供资源
    • 管理Container运行

ZK

  • 功能
    • 选主
    • 集群中的一些重要元数据信息存储,保证重新选住后元数据信息完整

任务运行生命周期核心流程

流程详解【大数据专场 学习资料六】第四届字节跳动青训营 - 掘金 (juejin.cn)

YARN核心模块

Resource Manager

整体架构

image.png

主要职责

RM 负责集群所有资源的统一管理和分配,接收各节点汇报信息并按照一定策略分配给各个任务;

  • 与客户端交互,处理来自客户端的请求
  • 启动和管理 AM,运行失败时自动重试
  • 管理所有 NM,接收 NM 的汇报信息并下达管理指令
  • 资源管理与调度
    • 资源按照一定方式组织起来,例如:资源池
    • 任务按照一定方式组织起来,例如:队列
    • 接收来自各个 AM 的资源请求
    • 按照一定分配策略将资源分配给 AM

状态机管理

  • RMApp:用于维护一个Application的生命周期;

  • RMAppAttempt:用于维护一次试探运行的生命周期;

  • RMContainer:用于维护一个已分配的资源最小单位Container的生命周期;

  • RMNode:用于维护一个NodeManager的生命周期

调度器分析

任务/资源组织

Lable 一批有共同特点的集合 image.png

调度流程

image.png

典型调度器

image.png

NodeManager

整体架构

主要职责

NM 是节点代理,从 AM 接受命令(启停 Container)并执行,通过心跳方式向 RM 汇报节点状态并领取命令(清理 Container)。

  • 与 RM 交互

    • 心跳汇报节点健康状况和 Container 运行状态
    • 领取 RM 下达的命令
  • 与 AM 交互

    • 启动容器
    • 停止容器
    • 获取容器状态

状态管理

  • Application:用于维护节点上一个Application的生命周期
  • Container:用于维护节点上一个容器的生命周期
  • LocalizedResource:用于维护节点上资源本地化的生命周期

节点健康检测机制

节点健康检测机制是 NM 自带的健康状况诊断机制。通过该机制 NM 可时刻掌握自己健康状况并及时汇报给 RM,RM 根据 NM 健康情况决定是否为其分配新任务。

  • 分类
    • 自定义 Shell
      • 周期性执行节点健康状况检测脚本, 若输出以 “ERROR”开头,节点处于 unhealthy 状态任务
    • 检测磁盘损坏数目
      • 周期性检测 NM 本地磁盘好坏,一旦发现正常磁盘比例低于一定阈值则节点处于 unhealthy 状态;

重要机制

公平性保障

高兴能保障

高可用保障

公司实践

Gang调度器

反调度器

单集群规模 50K