走进 Yarn 资源管理和调度| 青训营笔记

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

一、Yarn概述

调度系统演进-调度系统发展的背景

  • IT 到DT时代的变革,注重数据价值;
  • 数据计算方式的变革,注重计算效率;
  • 企业对外服务需数以万计的硬件资源;
  • 灵活调度、提高利用率是降本增效的关键问题;

调度系统演进-调度系统解决的问题

  • 用有限资源解决有限资源无法满足的需求时就需要调度;
  • 调度系统主要解决资源请求和可用资源间的映射(Mapping)问题;

调度系统演进-调度系统预达的目标

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

YARN设计思想-面临挑战

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

二、Yarn核心模块

Resource Manager -主要职责

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

  • 与客户端交互
  • 启动和管理所有AM
  • 管理所有NM
  • 资源管理与调度
    • 组织资源(资源池)
    • 组织任务(队列)
    • 接收资源请求
    • 分配资源

Resource Manager状态机管理- RMApp状态机

  • NEW SAVING:收到任务后,创建RMApplmpl对象并将基本信息持久化;
  • ACCEPTED:调度器接受该任务后所处的状态,任务等待被分配资源;
  • RUNNING:任务成功获取到资源并在节点运行;

Resource Manager调度器分析-调度流程

  • AM与RM心跳:记录资源请求
  • 触发时机:节点心跳
  • 找Label:获取所有队列
  • 找队列:最“饥饿”队列优先
  • 找任务:优先级高的任务优先
  • 找资源请求:优先级高的请求优先

Node Manager主要职责

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

  • 与RM交互
    • 心跳汇报节点状态
    • 领取RM下达的命令
  • 与AM交互
    • 启动容器
    • 停止容器
    • 获取容器状态

三、重要机制

调度策略。Instantaneous Fair Share定义

Instantaneous Fair Share计算

定义

  • 所有队列Fair Share之和<= TotalResource;
  • S.minShare <= Fair Share <= S.maxShare;

目标

找到一个R使其满足:

  • R*(AII S.wieght) <= TotalResource;
  • S.minShare <= R * S.weight < = S.maxShare;

结果

  • 若S.minShare > R * S.weight, Fair Share = S.minShare
  • 若S.maxShare < R * S.weight, Fair Share = S.maxShare
  • 其他Fair Share = R * S.weight