Yarn资源调度 | 青训营笔记

66 阅读3分钟

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

主题:大规模集群中的资源管理与任务调度

一、调度系统的引入:

正如餐厅的安排座位问题。

简易模型:

学生按院组织,有餐厅经理分配,座位也要有序摆放

其他重点:

保障公平(FIFS,低分配率优先)、高效(更多不同层级助手)、高可用(备用经理)

尽可能多(超售,超用,超发,快餐)、个性化需求(靠窗,同桌坐)

image.png

  调度系统的演进

调度可以降本增效,解决请求和可用之间映射关系

image.png

目标:

多租户公平、高吞吐低延迟、高可靠高可用、高可扩展、高整体物理利用率、满足上层任务个性化、持续稳定高效

演进中的范型:

集中/ 两层/ 共享状态/ 分布式/ 混合

image.png

前两种居多。

 

二、Yarn整体架构

1.     Resource Manager

整个集群资源管理调度、生命周期管理、对外交互

2.     Node Manager

提供资源、管理container

image.png

生命周期运行

image.png

 

Yarn核心模块

整体架构

image.png

Resource Manager

所有资源分配,接收节点汇报

客户端交互/ 启动和管理am/ 管理所有nm/ 资源管理和调度(组织资源和任务/接收资源/分配资源)

image.png

状态机管理

1.RMApp

image.png

状态 因事件发生变化

New-new_saving(持久化)-submitted-acceppted(接受任务等待资源)-running(获取资源)-failed killed-finishing

2.RMAppAttempt

多个实例

image.png

Scheduled 合法性检查通过 开始分配资源

Allocated_Saving 收到 container后持久化完成前

Allocated 持久化后

Lauched RM和NM通信以启动AM

 

3.RMContainer

每个任务以容器方式运行于集群

image.png

Reserved 节点不满足资源

Allocated 分配一个container给am

Acquired container被am领走

Expired Am领走后一段时间未启动container被rm回收

image.png  

4.NodeManager

image.png

心跳、container管理、健康检测和状态机

image.png

Decommissioned 节点下线

Unhealthy 检测的不健康状态

Lost 长时间未与RM发生心跳

 

RM调度

1, 任务资源组织

任务 - 队列组织

节点 – Label组织

image.png

调度流程

AM和RM心跳 记录资源请求

触发时机 节点心跳

找lable

找饥饿队列、

找优先的任务

找优先的资源

image.png

典型调度器

image.png  

NM节点代理

和RM心跳汇报,领取命令

与AM是停止、启动、获取状态

状态机

Application Container LocalizedResource

 

三、重要机制

公平性保障(重点)

1)Fair Share调度策略

即队列空闲时按策略分配给其他所需队列。

实现资源共享,提高利用率,缓解压力。

image.png

Instantaneous Fair Share

有total min max控制

目标是找一个R

image.png

2)DRF调度策略

Dominant Resource Fair

最大化保持公平

最大最小公平算法:最大化最小资源需求的满足度

按需递增分配,获取资源不超自身需求,未满足用户等价分享剩余资源

高性能保障:

1. 事件机制

状态机管理:

由初始、中间、最终状态组成,调控状态机

2. 事件处理模型

Yarn采用基于事件驱动的并发模型

3. 高可用

RM高可用(热备方案、基于共享存储的HA解决方案、手动和自动切换、Client,am,nm自动重试机制)

NM高可用(关键信息持久化)