这是我参与「第四届青训营 」笔记创作活动的的第14天
Yarn整体架构
调度系统范型
其中集中式和两层式最常用
YARN诞生背景
离线生态
- 集群资源管理层:YARN
系统架构
Resource Manager
- 可以有多个Resource Manager,但每次只有一个Resource Manager起作用,其他备用,当主节点故障时,通过ZK进行切换。
- 功能
- 资源管理和调度
- 任务生命周期管理
- 对外进行交互
Node Manager
- 对于每一个Node都有一个NodeManager
- 功能
- 提供资源
- 管理Container运行
ZK
- 功能
- 选主
- 集群中的一些重要元数据信息存储,保证重新选住后元数据信息完整
任务运行生命周期核心流程
流程详解【大数据专场 学习资料六】第四届字节跳动青训营 - 掘金 (juejin.cn)
YARN核心模块
Resource Manager
整体架构
主要职责
RM 负责集群所有资源的统一管理和分配,接收各节点汇报信息并按照一定策略分配给各个任务;
- 与客户端交互,处理来自客户端的请求
- 启动和管理 AM,运行失败时自动重试
- 管理所有 NM,接收 NM 的汇报信息并下达管理指令
- 资源管理与调度
- 将资源按照一定方式组织起来,例如:资源池
- 将任务按照一定方式组织起来,例如:队列
- 接收来自各个 AM 的资源请求
- 按照一定分配策略将资源分配给 AM
状态机管理
-
RMApp:用于维护一个Application的生命周期;
-
RMAppAttempt:用于维护一次试探运行的生命周期;
-
RMContainer:用于维护一个已分配的资源最小单位Container的生命周期;
-
RMNode:用于维护一个NodeManager的生命周期
调度器分析
任务/资源组织
Lable 一批有共同特点的集合
调度流程
典型调度器
NodeManager
整体架构
主要职责
NM 是节点代理,从 AM 接受命令(启停 Container)并执行,通过心跳方式向 RM 汇报节点状态并领取命令(清理 Container)。
-
与 RM 交互
- 心跳汇报节点健康状况和 Container 运行状态
- 领取 RM 下达的命令
-
与 AM 交互
- 启动容器
- 停止容器
- 获取容器状态
状态管理
- Application:用于维护节点上一个Application的生命周期
- Container:用于维护节点上一个容器的生命周期
- LocalizedResource:用于维护节点上资源本地化的生命周期
节点健康检测机制
节点健康检测机制是 NM 自带的健康状况诊断机制。通过该机制 NM 可时刻掌握自己健康状况并及时汇报给 RM,RM 根据 NM 健康情况决定是否为其分配新任务。
- 分类
- 自定义 Shell
- 周期性执行节点健康状况检测脚本, 若输出以 “ERROR”开头,节点处于 unhealthy 状态任务
- 检测磁盘损坏数目
- 周期性检测 NM 本地磁盘好坏,一旦发现正常磁盘比例低于一定阈值则节点处于 unhealthy 状态;
- 自定义 Shell