这是我参与「第四届青训营 」笔记创作活动的的第15天
一、Yarn概述
调度系统演进-调度系统发展的背景
- IT 到DT时代的变革,注重数据价值;
- 数据计算方式的变革,注重计算效率;
- 企业对外服务需数以万计的硬件资源;
- 灵活调度、提高利用率是降本增效的关键问题;
调度系统演进-调度系统解决的问题
- 用有限资源解决有限资源无法满足的需求时就需要调度;
- 调度系统主要解决资源请求和可用资源间的映射(Mapping)问题;
调度系统演进-调度系统预达的目标
- 严格的多租户间公平、容量保障
- 调度过程的高吞吐与低延迟
- 高可靠性与高可用性保障
- 高可扩展的调度策略
- 高集群整体物理利用率
- 满足上层任务的个性化调度需求
- 任务持续、高效、稳定运行
YARN设计思想-面临挑战
- 公平性:各租户能够公平的拿到资源运行任务
- 高性能:高调度吞吐、低调度延迟,保障资源快速流转
- 高可用:集群要具备很强的容错能力
- 大规模:单集群规模提升(原生YARN 5K)
- 高集群资源利用率
- 高任务运行质量保障
二、Yarn核心模块
Resource Manager -主要职责
RM负责集群所有资源的统一管理和分配, 接收各节点汇报信息并按照一定策略分配给各个任务。
- 与客户端交互
- 启动和管理所有AM
- 管理所有NM
- 资源管理与调度
- 组织资源(资源池)
- 组织任务(队列)
- 接收资源请求
- 分配资源
Resource Manager状态机管理- RMApp状态机
- NEW SAVING:收到任务后,创建RMApplmpl对象并将基本信息持久化;
- ACCEPTED:调度器接受该任务后所处的状态,任务等待被分配资源;
- RUNNING:任务成功获取到资源并在节点运行;
Resource Manager调度器分析-调度流程
- AM与RM心跳:记录资源请求
- 触发时机:节点心跳
- 找Label:获取所有队列
- 找队列:最“饥饿”队列优先
- 找任务:优先级高的任务优先
- 找资源请求:优先级高的请求优先
Node Manager主要职责
NM是节点代理,从AM接受命令(启停Container) 并执行,通过心跳方式向RM汇报节点状态并领取命令(清理Container)
- 与RM交互
- 心跳汇报节点状态
- 领取RM下达的命令
- 与AM交互
- 启动容器
- 停止容器
- 获取容器状态
三、重要机制
调度策略。Instantaneous Fair Share定义
Instantaneous Fair Share计算
定义
- 所有队列Fair Share之和<= TotalResource;
- S.minShare <= Fair Share <= S.maxShare;
目标
找到一个R使其满足:
- R*(AII S.wieght) <= TotalResource;
- S.minShare <= R * S.weight < = S.maxShare;
结果
- 若S.minShare > R * S.weight, Fair Share = S.minShare
- 若S.maxShare < R * S.weight, Fair Share = S.maxShare
- 其他Fair Share = R * S.weight