这是我参与「第四届青训营 」笔记创作活动的的第10天 今天我学习了YARN资源管理与调度的相关知识。
4.1 Gang调度器-为不需要发Gang 调度器?
流式作业和训练作业的调度需求与批处理有很大的不同:批处理强调高吞吐,而流式训练类型作业更强调低延迟和全局视角;
1.调度缺乏全局视角
2.单App调度过慢
3.App间存在资源互锁
4.1Gang调度器-Gang调度有什么典型特点?
➢全局视角
V作业可自定义配置强弱约束;
强约束:必须要满足的条件,
弱约束:尽量满足的约束,;
➢低调度延迟
RM维护所有节点状态信息;
资源请求同步分配,毫秒级返回;
➢Gang 性资源交付
提供All-or-Nothing语义;
可满足的请求全部分配,否则返回失败;
4.1Gang调度器-Gang调度器调度流程
➢强约束阶段:过滤掉不符合条件的节点
➢弱约束阶段:选择合适的节点分配资源(不排序,时间复杂度O(n))
1.Quota 平均:分配后节点已使用资源尽可能平均
总请求资源为V1,总节点数为N,已用资源为U,节点目标资源为: S = (V1 + U)/N,遍历所有节点,每个节点分配S- Un即可;
2.跳过高load 节点:优先往低load节点调度
满足load阈值节点N1,不满足N2,优先把N1剩余资源分配完,分配后未满足资源量为V2,每个节点分配V2/N2;
➢兜底分配
4.2反调度器-为什么需要开发反调度器?
➢调度器的调度决策受“时空”限制
"时”:触发调度时刻;
"空”: 触发调度时集群状态;
➢任务运行和集群状态高动态性
1.任务资源使用随流量变化而不断波动;
2.调度过程持续进行,集群状态持续变化;
➢需要持续保证最初调度决策的正确性
4.2反调度器-反调度流程
根据AM请求中的强约束,构造强约束集;
遍历强约束集选择不再符合强约束条件的节点;
遍历异常节点下的Container,选择需要进行反调度的Container;
将反调度Container列表随心跳返回给AM;