YARN 资源管理和调度|青训营笔记

140 阅读5分钟

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

本次笔记重点内容

  1. YARN概述
  2. 核心模块
  3. 重要机制

YARN

调度系统

演进

如今我们已经由信息科技时代(IT)进化到数据科技时代(DT),注重数据价值、效率,企业对外服务需要数以万计的资源,为了能进行灵活调度、提高利用率这种降本增效的关键问题,需要调度系统来改善。当用有限资源解决有限资源无法满足的需求时就需要调度,资源资源管理与调度主要解决资源请求和可用资源的映射(Mapping) 问题。

image.png

预达目标

  • 严格的多租户间公平、容量保障
  • 调度过程的高吞吐与低延迟
  • 高可靠性与高可用性保障
  • 高可扩展的调度策略
  • 高集群整体物理利用率
  • 满足上层任务的个性化调度需求
  • 任务持续、高效、稳定运行

调度系统范型

image.png

  • 集中式:融合资源管理调度和任务控制(常用)
  • 两层式:资源管理调度和任务控制解耦,调度层的压力缓解很多(常用)
  • 共享状态式:一个集群中有多个调度器基于乐观并发共享全局资源调度,调度效率更高
  • 分布式:一个集群中有多个调度器基于先验知识进行最快调度决策,调度很快
  • 混合式:多种类型调度器共存于一个集群,共同分配
YARN设计思想

image.png

  • Hadoop 1.0 时代:分布式存储系统 HDFS + 分布式计算框架 MapReduce,可扩展性和可靠性差,只能针对特定的计算框架,资源利用率低。
  • Hadoop 2.0 时代:解决了 Hadoop 1.0 时代中存在的问题,实现了资源管理和任务控制解耦,支持多种不同类型计算框架。

离线生态

image.png

面临挑战

  1. 公平性:各租户能够公平的拿到资源运行任务
  2. 高性能:高调度吞吐、低调度延迟,保障资源快速流转
  3. 高可用:集群要具备很强的容错能力
  4. 单集群规模提升:原生 YARN 单集群最大支持 5K 个节点
  5. 高集群资源利用率
  6. 高任务运行质量保障

系统架构

image.png

  • Resource Manager
    • 负责为应用调度资源,管理应用生命周期
    • 对外进行交互,对用户提供接口
    • 可以同时存在多个,同一时间只有一个在工作,Resource Manager 之间通过 Zookeeper 选主
  • Node Manager
    • 为整个集群提供资源
    • 管理Contianer的运行时生命周期

核心模块

Resource Manager

image.png

Resource Manager 负责集群所有资源的统一管理和分配,接收各节点汇报信息并按照一定策略分配给各个任务

  • 与客户端交互,处理来自客户端的请求
  • 启动和管理 Application MasterService,运行失败时自动重试
  • 管理所有 Node Manager,接收 Node Manager 的汇报信息并下达管理指令
  • 资源管理和调度
    • 将资源按照一定方式组织起来,例如:资源池
    • 将任务按照一定方式组织起来,例如:队列
    • 接收来自各个 AM 的资源请求
    • 按照一定分配策略将资源分配给 AM

状态机管理

RMApp状态机

image.png

  • NEW_SAVING状态: 收到提交的应用程序后,创建 RMAppImpl 对象并将基本信息持久化,否则任务可能会丢失
  • ACCEPTED状态:调度器接受该应用程序后所处的状态,任务等待被分配资源;
  • RUNNING状态:任务成功获取到资源并在节点运行

RMAppAttempt状态机

image.png

  • SCHEDULED状态: 通过 Scheduler 合法性检查后所处的状态,开始为该 App 分配资源;
  • ALLOCATED_SAVING状态:收到分配的 Container 后,在持久化完成前所处的状态;
  • ALLOCATED状态:信息持久化完成后所处的状态;
  • LAUNCHED状态:Resource Manager 的 ApplicationMasterLauncher 与 NM 通信以启动 AM 时所处的状态;

RMContainer状态机

image.png

  • RESERVED状态: 开启资源预留时,当前节点不能满足资源请求时所处的状态;
  • ALLOCATED状态:调度器分配一个 Container 给 Application MasterService;
  • ACQUIRED状态:Application MasterService 获取到分配的 Container 后所处的状态;
  • EXPIRED状态: Application MasterService获取到 Container 后,若在一定时间内未启动 Container,Resource Manager 会强制回收该 Container;

RMNode状态机

image.png

  • DECOMMSIONED状态: 节点下线后的状态;
  • UNHEALTHY状态:节点处于不健康状态,健康检测脚本异常或磁盘故障;
  • LOST状态:超过一定时间(默认 10 分钟)未与 Resource Manager 发生心跳后所处的状态;
Node Manager

image.png

Node Manager 是节点代理,从 Application MasterService 接受命令(启停 Container)并执行,通过心跳方式向 Resource Manager 汇报节点状态并定期清理 Container

状态机管理

Application

  • INITING: Application 初始化状态,创建工作目录和日志目录;
  • FINISHING_CONTAINERS_WAIT:调等待回收 Container 所占用的资源所处的状态;
  • APPLICATION_RESOURCE_CLEANINGUP:Application 所有 Container 占用的资源被回收后所处的状态;

Container

  • LOCALIZING: 正在从 HDFS 下载依赖的资源;
  • EXITED_WITH_SUCCESS:Container 运行脚本正常退出执行;
  • CONTAINER_CLEANUP_AFTER_KILL:Container 被 kill 后所处的状态;

LocalizedResource

  • DOWNLOADING: 资源处于下载状态;
  • LOCALIZED:资源下载完成;
  • FAILED:资源下载失败;

重要机制

Fair Share 调度策略

是什么?

队列配置 minShare 和 maxShare,当队列空闲时按照一定策略将资源分配给其他活跃队列

目的?

保障公平的前提下实现队列间资源共享,提高资源利用率,缓解繁忙队列压力

DRF 调度策略

目的?

在保证公平性的前提下进行资源降维,以达到更好的分配效果

Resource Manager高可用性

热备方案

Active Master提供服务,Standby Master作为备节点

基于共享存储的 HA 解决方案

Active Master 不断将信息写入共享存储系统(ZooKeeper),故障切换时 Standby Master 从共享存储恢复数据,待信息完全同步后切换至 Active Master