这是我参与「第四届青训营」笔记创作活动的第16天
调度系统概述
优化的分配模型
以安排学生在饭堂就餐为例
解决的问题
- 情况:资源有限,需求远超。
- 解决资源请求和可靠资源之间的 映射 关系
预期目标
- 多租户间公平、容量保证
- 调度过程高吞吐、低延迟
- 高可靠性、高可用
- 高可拓展
- 高级群整体物理利用率
- 满足个性化调度需求
- 任务持续、高效、稳定运行
几类范式(目前业界前两种最多)
- 集中式
- 两层式:资源管理调度和任务控制解耦
- 共享状态式:多个调度器基于乐观并发共享全局资源视图
- 分布式:多个调度器基于先验知识进行最快调度决策
- 混合式:多种类型调度器共存
YARN(两层式)(yet another resource negotiator)
设计思想--离线生态
系统架构
整体架构
核心模块
Resource Manager
整体架构
主要职责
- 如其名
- 组织资源(资源池)
- 组织任务(队列)
- 与客户端交互
- 启动和管理所有AM
- 管理所有NM
RMApp状态机
RMAppAttempt
RMNode
典型调度器
Node Manager
整体架构
主要职责
节点代理,从AM接受命令(启停Container)并执行,通过心跳方式向RM汇报节点状态并领取命令(清理Container)
状态机管理
节点健康检测机制(时刻掌握NM健康状况并汇报给AM)
- 自定义shell,并由NodeHealthScriptRunner服务周期性执行
- 检测磁盘损坏数目,由localDirsHandlerService服务周期性检测,坏盘数超过阈值则异常
-
磁盘是否损坏标准:目录具有读写执行权限,则目录正常
-
YARN如何保证公平性?---调度策略
Fair Share
- 含义:队列空闲时按一定策略将资源分配给其他活跃队列(学院a座位有空闲可以分配给其他学院用)
- 分类:
- Steady
- Instantaneous
概述:
计算逻辑:
- DRF(Dominant Resource Fair)
简单理解:数学建模中的一定约束条件下的最优化问题 算法:
YARN如何保证高性能?---状态机管理
- YARN中的三种状态转换形式
- 事件处理模型
YARN如何保证高可用?---容错机制
- RM高可用
- 热备方案:Active Master提供服务,Standby Master作为备节点
- 基于共享存储的HA解决方案:关键信息写入共享存储系统(ZK)
- 两种切换模式;
- 手动模式: yarn rmadmin
- 自动模式:所有RM竞争写一个子节点,ZK保证最终只有一个RM能够创建成功 然后成为Active Master
- Client、AM、NM采用round-robin方式尝试重新连接RM(自动重试)
- NM高可用
- 关键信息存储至leveldb
- 重启时从此处加载数据
企业实践
- 调度器:如Gang
- 反调度器
- 提升单集群规模