这是我参与【第四届青训营】笔记创作活动的第1天。
01 YARN概述
1.1初识调度系统-场景导入
分析需求:要满足公平性,高效性,高可用。
1.1.1一种简易的分配模型
思考可能存在的问题:
- 如果就餐时间不一致,可能造成本应分配到座位的学院因为就餐时间较晚而无法得到服务;
- 硬性分配的座位很难进行弹性调整;
- ……
1.1.2优化模型
根据需求对分配模型进行优化:
- 保障公平性:
- 学院间:低分配座位满足率优先
- 学院内:先来先服务
- 保障高效性
- 配备餐厅助手
- 用餐小组负责人
- 保障高可用
- 配置备用经理
1.1.3调度系统发展的背景
- IT到DT时代的变革,注重数据价值;
- 数据计算方式的变革,注重计算效率;
- 企业对外服务需数以万计的硬件资源;
- 灵活调度、提高利用率是降本增效的关键问题
1.2调度系统演进
1.2.1解决的问题
- 用有限的资源解决有限资源无法满足的需求时就需要调度;
- 调度系统主要解决资源请求和可用资源间的映射(Mapping)问题
1.2.2预达的目标
- 严格的多租户间的公平,容量保障
- 调度过程的高吞吐与低延迟
- 高可靠性和高可用性保障
- 高可扩展的调度策略
- 高集群整体物理利用效率
- 满足上层任务的个性化调度需求
- 任务持续、高效、稳定运行……
1.2.3调度系统范型
1.3YARN设计思想
1.3.1演化背景
1.3.2离线生态
1.3.3面临挑战
- 公平性:各租户能够公平的拿到资源运行任务
- 高性能:高调度吞吐、低调度延迟,保障资源快速流转高可用:集群要具备很强的容错能力
- 大规模:单集群规模提升(原生YARN 5K)
- 高集群资源利用率
- 高任务运行质量保障
1.4YARN整体架构
1.4.1系统架构
Resource Manager
- 资源管理和调度
- 任务生命周期管理
- 对外进行交互
Node Manager
- 提供集群资源
- 管理Container运行
1.4.2任务运行生命周期核心流程
02 核心模块
2.1Resource Manager
2.1.1整体架构
2.1.2主要职责
RM负责集群所有资源的统一管理和分配,接收各节点汇报信息并按照一定策略分配给各个任务。
- 与客户端交互
- 启动和管理所有AM
- 管理所有NM
- 资源管理与调度
- 组织资源(资源池)
- 组织任务(队列)
- 接收资源请求
- 分配资源
2.1.3RMApp状态机
- NEW_SAVING:收到任务后,创建RMApplmpl对象并将基本信息持久化;
- ACCEPTED:调度器接受该任务后所处的状态,任务等待被分配资源;
- RUNNING:任务成功获取到资源并在节点运行;
2.1.4RMAppAttempt
- SCHEDULED:通过合法性检查后所处的状态,开始为该任务分配资源;
- ALLOCATED_SAVING:收到分配的Container后,在持久化完成前所处的状态;
- ALLOCATED:信息持久化完成后所处的状态;
- LAUNCHED:RM的ApplicationMasterLauncher 与 NM通信以启动AM时所处的状态;
2.1.5任务/资源组织
- 任务按队列组织
- 节点按Label组织
2.1.6调度流程
- AM与RM心跳:记录资源请求
- 触发时机:节点心跳
- 找Label:获取所有队列
- 找队列:最“饥饿”队列优先
- 找任务:优先级高的任务优先
- 找资源请求:优先级高的请求优先
2.1.7典型调度器
2.2Node Manager
2.2.1整体架构
2.2.2主要职责
NM是节点代理,从AM接受命令(启停Container)并执行,通过心跳方式向RM汇报节点状态并领取命令(清理Container) 。
- RM交互
- 心跳汇报节点状态
- 领取RM下达的命令
- AM交互
- 启动容器停止容器
- 获取容器状态