这是我参与「第四届青训营 」笔记创作活动的第8天。
主题:大规模集群中的资源管理与任务调度
一、调度系统的引入:
正如餐厅的安排座位问题。
简易模型:
学生按院组织,有餐厅经理分配,座位也要有序摆放
其他重点:
保障公平(FIFS,低分配率优先)、高效(更多不同层级助手)、高可用(备用经理)
尽可能多(超售,超用,超发,快餐)、个性化需求(靠窗,同桌坐)
调度系统的演进
调度可以降本增效,解决请求和可用之间映射关系
目标:
多租户公平、高吞吐低延迟、高可靠高可用、高可扩展、高整体物理利用率、满足上层任务个性化、持续稳定高效
演进中的范型:
集中/ 两层/ 共享状态/ 分布式/ 混合
前两种居多。
二、Yarn整体架构
1. Resource Manager
整个集群资源管理调度、生命周期管理、对外交互
2. Node Manager
提供资源、管理container
生命周期运行
Yarn核心模块
整体架构
Resource Manager
所有资源分配,接收节点汇报
客户端交互/ 启动和管理am/ 管理所有nm/ 资源管理和调度(组织资源和任务/接收资源/分配资源)
状态机管理
1.RMApp
状态 因事件发生变化
New-new_saving(持久化)-submitted-acceppted(接受任务等待资源)-running(获取资源)-failed killed-finishing
2.RMAppAttempt
多个实例
Scheduled 合法性检查通过 开始分配资源
Allocated_Saving 收到 container后持久化完成前
Allocated 持久化后
Lauched RM和NM通信以启动AM
3.RMContainer
每个任务以容器方式运行于集群
Reserved 节点不满足资源
Allocated 分配一个container给am
Acquired container被am领走
Expired Am领走后一段时间未启动container被rm回收
4.NodeManager
心跳、container管理、健康检测和状态机
Decommissioned 节点下线
Unhealthy 检测的不健康状态
Lost 长时间未与RM发生心跳
RM调度
1, 任务资源组织
任务 - 队列组织
节点 – Label组织
调度流程
AM和RM心跳 记录资源请求
触发时机 节点心跳
找lable
找饥饿队列、
找优先的任务
找优先的资源
典型调度器
NM节点代理
和RM心跳汇报,领取命令
与AM是停止、启动、获取状态
状态机
Application Container LocalizedResource
三、重要机制
公平性保障(重点)
1)Fair Share调度策略
即队列空闲时按策略分配给其他所需队列。
实现资源共享,提高利用率,缓解压力。
Instantaneous Fair Share
有total min max控制
目标是找一个R
2)DRF调度策略
Dominant Resource Fair
最大化保持公平
最大最小公平算法:最大化最小资源需求的满足度
按需递增分配,获取资源不超自身需求,未满足用户等价分享剩余资源
高性能保障:
1. 事件机制
状态机管理:
由初始、中间、最终状态组成,调控状态机
2. 事件处理模型
Yarn采用基于事件驱动的并发模型
3. 高可用
RM高可用(热备方案、基于共享存储的HA解决方案、手动和自动切换、Client,am,nm自动重试机制)
NM高可用(关键信息持久化)