大数据笔记4 |Yarn 资源管理和调度 青训营笔记

384 阅读6分钟

这是我参与「第四届青训营 」笔记创作活动的的第4天!
写了3小时,内动太多了!!!

1 YARN 概述

1.1 调度系统简介

调度系统: 把有限的资源(CPU/GPU)合理的分配给几乎无限的任务需求(数据分析,数据处理)的系统
调度系统主要解决的是 需求请求和可用资源之间的映射(mapping)问题

1.2 调度系统演化史

image.png

image.png

image.png

image.png

1.3 YARN 设计思想

演化背景

image.png 离线生态

image.png 面临挑战

image.png

1.4 YARN 整体架构

Resource Manager

  • 资源管理和调度
  • 任务生命周期管理
  • 对外进行交互 Node manager
  • 提供集群资源
  • 管理Continer(容器)运行

image.png 具体的执行过程(从1到14)

image.png

2 YARN的核心模块

  • Resource Manager
  • Node manager
  • Application Master(自己补充)

image.png

2.1 Rousource manager(RM)

2.1.1 Rousource manager的整体架构

image.png

RM主要职责

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

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

RM状态机管理(对应上图)

image.png

(1)RMApp 状态机
  • NEW_SAVING: 收到任务后,创建RMApplmpl对象并将基本信息持久化
  • ACCEPTED:调度器接受改任务后的状态,任务等待被分配
  • RUNNING:任务成功获取到资源并在节点上运行

image.png

(2)RMAppAttempt
  • SCHEDULED:通过合法性检查后的状态,开始为该任务分配资源
  • ALLOCATED_SAVING:收到分配的continer(容器)后,持久化完成所处的状态(比如备份数据等)
  • ALLOCATED:信息持久化后所处的状态
  • LAUNCHED: RM的ApplicationMaterLauncher 与 NM通信以启动AM时所处的状态

image.png

(3)RMcontiner
  • RESERVED:开始资源预留时,当前节点不能满足资源请求时所处的状态
  • ALLOCATED:调度器分配一个Container给AM
  • ACQUIRED:Continer被AM领走的状态
  • EXPIRED:AM收到Continer后,如果一段时间没启动Continer,RM会强制回收Continer
(4)RMNode
  • RECOMMISSIONED:节点下线后的状态
  • UNHEALTHY:节点处于不健康状态,节点监测。健康监测脚本异常或者磁盘故障
  • LOST:节点超过一定时间(一般10 min)没有跟RM发生心跳后的状态

RM调度器分析-任务资源组织

  • 按队列组织
  • 按节点label组织

image.png

RM调度器分析-调度流程

  • AM与RM心跳: 记录资源请求
  • 触发时机:节点心跳
  • 找label:获取所有队列
  • 找队列:最“饥饿”的队列优先(比如等待时间最长,看具体算法)
  • 找任务:优先级高的任务优先
  • 找资源请求:优先级高的请求优先

image.png

RM调度器分析-典型调度器

image.png

2.2 Node manager(NM)

image.png

Node manager的整体架构

image.png

Node manager的主要责任

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

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

image.png

NodeManager 状态机管理(对应上图)

image.png

NodeManager 状态机管理(1) - Application

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

image.png

NodeManager 状态机管理(2) - Continer

  • Localizing:正在从HDFS下载依赖的资源
  • Exited_With_Success:Continer运行脚本正常退出执行
  • Continer_Cleanup_After_Kill:Continer被kill所处的状态 image.png

NodeManager 状态机管理(3) - LocalizedResource

  • Downloading:资源处于下载状态
  • Localized:资源下载完成
  • Failed:资源下载失败 image.png

Node Manager节点健康监测机制

节点健康监测机制可以时刻掌握NM的状态并且汇报给RM,RM根据NM是否健康决定是否为其调度新任务

  • 自定义Shell
    • NodeHealthScriptRunner服务周期性执行节点健康状态检测的脚本
    • 若输出“Error”开头则不健康
  • 检测磁盘损坏数目
    • 判断磁盘损坏标准:若一个目录具有读、写和执行权限,则目录正常
    • LocalDirsHandlerService服务周期性检测NM本地磁盘好坏,磁盘数超过阈值则不健康

2.3 ApplicationMaster(AM)自己补充

引用链接1:Link
引用链接2:Link

2.3.1 AM是什么

ApplicationMaster运行在Container中。
ApplicationMaster的主要作用是
向ResourceManager申请资源并和NodeManager协同工作来运行应用的各个任务,然后跟踪它们状态及监控各个任务的执行,遇到失败的任务还负责重启它

2.32 AM的主要作用

  • 数据切分
  • 为应用程序申请资源并进一步分配给内部任务。
  • 任务监控与容错
  • 负责协调来自RM的资源,并通过NM监视任务的执行和资源使用情况。

启动后做以下的工作:

  • 和ResourceManager保持连接,定期向ResourceManager发送heartbeat
  • 计算一个Application需要的Resource
  • 通过ResourceRequest的形式,跟ResourceManager沟通,让ResourceManager给它分配Container
  • 和NodeManager沟通来加载Container
  • 跟踪Container的状态
  • 处理Container故障或者Node故障的问题

3 重要机制

image.png

3.1 调度策略 -Fair Share调度策略背景

  • 为什么需要Fair Share调度策略?
    • 实现队列减资源共享,提高资源利用率
    • 缓解繁忙的队列压力
  • 什么是Fair Share调度策略
    • 队伍空闲时按照一定策略将资源分配给其他队列
  • Fair Share类型
    • Steady Fair Share
    • Instantaneout Fair Share

3.2 Instantaneout Fair Share

3.2.1 Instantaneout Fair Share 定义

  • S: 队列
  • R:可以理解为 资源量

image.png

3.2.1 Instantaneout Fair Share 计算逻辑(二分法

image.png

3.3.1 DRF(Dominant Resource Fair)调度策略

  • 为什么需要DRF
    • 在保证公平的前提下进行资源降维(具体看下图)
  • 什么是DRF
    • DRF是最大最小公平算法在多维资源上的具体实现
    • 让不同的“主分享量保持最大的公平”
  • 最大最小公平算法:最大化最小资源需求的满足度
    • 资源按照需求递增顺序分配
    • 获取的资源不超过自身的需求
    • 未满足用户等价分享资源

具体例子
ABCD(比如CPU,GPU,内存,硬盘)的4种资源的总量是10,
image.png

  • 第一步:Task原本的申请资源量
  • 第二步:RM 给Task实际分配的,可以发现A多分配了0.5
  • 第三步:其他资源每个多0.1666(0.5/3) 发现B也多了
  • 第四步:把B多的部分分给CD

3.3.2 DRF(Dominant Resource Fair)调度策略描述

image.png

3.3.2 DRF(Dominant Resource Fair)调度策略计算逻辑

image.png

3.4 高性能保障

状态机管理 image.png 事件处理模型

image.png

3.4 高可用保障

image.png

4 公司实践

image.png

4.1 Gang调度器

image.png

image.png

image.png

4.2 返调度器

image.png

image.png

image.png

4.3 单集群规模50K

image.png

image.png

image.png

image.png

image.png

image.png

image.png