走进调度系统(以yarn为例)| 青训营笔记

114 阅读3分钟

这是我参与「第四届青训营」笔记创作活动的第16天

调度系统概述

优化的分配模型

以安排学生在饭堂就餐为例

解决的问题

  • 情况:资源有限,需求远超。
  • 解决资源请求和可靠资源之间的 映射 关系

预期目标

  • 多租户间公平、容量保证
  • 调度过程高吞吐、低延迟
  • 高可靠性、高可用
  • 高可拓展
  • 高级群整体物理利用率
  • 满足个性化调度需求
  • 任务持续、高效、稳定运行

几类范式(目前业界前两种最多)

  • 集中式
  • 两层式:资源管理调度和任务控制解耦
  • 共享状态式:多个调度器基于乐观并发共享全局资源视图
  • 分布式:多个调度器基于先验知识进行最快调度决策
  • 混合式:多种类型调度器共存

YARN(两层式)(yet another resource negotiator)

设计思想--离线生态

image.png

系统架构

image.png

整体架构

image.png

核心模块

Resource Manager

整体架构

image.png

主要职责

  • 如其名
    • 组织资源(资源池)
    • 组织任务(队列)
  • 与客户端交互
  • 启动和管理所有AM
  • 管理所有NM

RMApp状态机

image.png

RMAppAttempt

image.png

RMNode

image.png

典型调度器

image.png

Node Manager

整体架构

image.png

主要职责

image.png

节点代理,从AM接受命令(启停Container)并执行,通过心跳方式向RM汇报节点状态并领取命令(清理Container)

状态机管理

image.png

image.png

节点健康检测机制(时刻掌握NM健康状况并汇报给AM)

  • 自定义shell,并由NodeHealthScriptRunner服务周期性执行
  • 检测磁盘损坏数目,由localDirsHandlerService服务周期性检测,坏盘数超过阈值则异常
    • 磁盘是否损坏标准:目录具有读写执行权限,则目录正常

YARN如何保证公平性?---调度策略

Fair Share

image.png

  • 含义:队列空闲时按一定策略将资源分配给其他活跃队列(学院a座位有空闲可以分配给其他学院用)
  • 分类:
    • Steady
    • Instantaneous 概述: image.png 计算逻辑: image.png
    • DRF(Dominant Resource Fair) image.png 简单理解:数学建模中的一定约束条件下的最优化问题 算法:

image.png

YARN如何保证高性能?---状态机管理

  • YARN中的三种状态转换形式

image.png

  • 事件处理模型

image.png

YARN如何保证高可用?---容错机制

  • RM高可用
    • 热备方案:Active Master提供服务,Standby Master作为备节点
    • 基于共享存储的HA解决方案:关键信息写入共享存储系统(ZK)
    • 两种切换模式;
      • 手动模式: yarn rmadmin
      • 自动模式:所有RM竞争写一个子节点,ZK保证最终只有一个RM能够创建成功 然后成为Active Master
    • Client、AM、NM采用round-robin方式尝试重新连接RM(自动重试)
  • NM高可用
    • 关键信息存储至leveldb
    • 重启时从此处加载数据

企业实践

  • 调度器:如Gang
  • 反调度器
  • 提升单集群规模