这是我参与「第四届青训营 」笔记创作活动的的第6天
本节课主要介绍YARN的资源管理和调度问题。
一、YARN概述
随着大数据的发展,我们使用的资源越来越多,那如何有效地调度这些资源呢?
如何充分挖掘硬件资源潜力、灵活进行资源管理与调度以及提高集群整体利用率成为降本增效的关键问题。
资源调度包括资源请求与可用资源映射、利用分配的资源执行任务。
集群资源管理与调度期望达到以下目标:
- 严格的多租户间公平、容量保障
- 调度过程的高吞吐与低延迟
- 高可靠性与高可用性保障
- 高可扩展的调度策略
- 高集群整体物理利用率
- 满足上层任务的个性化调度需求
- 任务持续、高效、稳定运行
目前调度系统设计的基本问题:
1. 资源异质性与工作负载异质性
2. 数据局部性(节点局部性,机架局部性和全局局部性)
3. 抢占式与非 抢占式调度
4. 资源分配粒度(群体分配策略,增量满足式分配策略,资源储备策略)
5. 饿死与死锁问题
6. 资源隔离方法
资源管理与调度系统范型
(1)集中式调度系统
主要进行大规模的集群管理,一个中心式的 JobTracker 负责资源分配和调度等。
优点:JobTracker 能够感知集群中所有资源和任务的执行状态,能够进行全局最优的资源分配和调度;架构模型简单。
缺点:JobTracker 作为集群的中心,存在单点瓶颈问题,不能支持大规模集群;内部实现异常复杂;负载变更会导致系统需要进行不断的迭代;只支持单类型的任务,MR 类型的批处理任务。
(2)两层调度系统
主要为了解决集中式调度系统的扩展性问题,将资源管理和任务调度解耦。
优点:提高了系统的扩展性;能够提供对不同类型任务的支持;内部实现模块化,利于维护和扩展。
缺点:任务无法感知全局的资源情况,任务调度和资源管理解耦不利于实现多任务间的优先级抢占;所有任务的资源请求都需要资源管理器进行处理。
(3)共享状态调度系统
主要为了解决两层调度系统无法进行全局最优的调度问题,是一个半分布式的架构,通过共享集群状态为应用提供全局的资源视图,并采用乐观并发机制进行资源申请和释放,来提高系统的并发度。
优点:支持全局最优调度;能够一定程度的提高并发度。
缺点:高并发资源请求下会造成频繁的资源竞争;不利于资源分配的公平性;
资源全局副本维护模块存在单点瓶颈。
(4)分布式调度系统
为了提高系统吞吐率和并发度,每个分布式调度器根据自己最少的先验知识进行最快的决策,每个调度器单独响应任务,总体的执行计划与资源分配服从统计意义。
优点:提高吞吐量和并发度
缺点:调度质量得不到保障;资源非公平分配;不能支持多租户管理;不能避免不同任务之间的性能干扰。
(5)混合式调度系统
针对一些特定的混合任务调度场景,某些任务需要比较快的调度响应,对于没有资源偏好且响应要求高的任务采用分布式调度器,对于资源调度质量要求较高的采用集中式资源管理器进行资源分配。
优点:能够针对不同类型的任务进行不同方式的调度;为应用层提供灵活的接口和性能保障。
缺点:复杂化了计算框架层的业务逻辑;调度系统内部也需要针对两种不同的调度器进行协同处理。
YARN设计思想
(1)Hadoop演化背景
HDFS和MapReduce(集中式)->YARN(两层)->Hadoop YARN(混合式)
(2)YARN面临的挑战
1.公平性:各租户能够公平的拿到资源运行任务
高性能:高调度吞吐、低调度延迟,保障资源快速流转
高可用:集群要具备很强的容错能力
单集群规模提升:原生 YARN 单集群仅支持 5K
高集群资源利用率
高任务运行质量保障
(3)系统架构
主要包括Resource Manager和Node Manager,Resource Manager是大脑,Node Manager提供资源。
二、核心模块
1.Resource Manager架构
任务:与客户端交互,处理来自客户端的请求;启动和管理 AM,运行失败时自动重试;管理所有 NM,接收 NM 的汇报信息并下达管理指令;资源管理与调度。
调度流程(由心跳触发,AM 定期与 RM 保持心跳,并将资源请求记录在 RM 中 ):节点心跳触发->找Label->找队列->找应用->找资源
2.Node Manager架构
任务:与 RM 交互:心跳汇报节点健康状况和 Container 运行状态;领取 RM 下达的命令。与 AM 交互:启动容器;停止容器;获取容器状态。
三、重要机制
1. 公平性保障
(1)Fair Share 调度策略
队列配置 minShare 和 maxShare,当队列空闲时按照一定策略将资源分配给其他活跃队列。保障公平的前提下实现队列间资源共享,提高资源利用率,缓解繁忙队列压力。
(2)DRF 调度策略
在保证公平性的前提下进行资源降维,以达到更好的分配效果。资源按照需求递增的顺序进行分配,用户获取的资源不超过自身需求,对未满足的用户,等价分享剩余资源。
2. 高性能保障
YARN 采用了基于事件驱动的并发模型,具有很强的并发性可提高系统性能。
3. 高可用保障
(1)RM高可用
可用热备方案、基于共享存储的HA解决方案,Client 、 AM、NM 也会自动重试。
(2)NM 高可用
相关信息存储至 leveldb 数据库;NM 重启时加载 yarn-nm-recovery 下的 leveldb 数据库。
四、总结
YARN主要用于离线Batch类计算作业,由RM和NM组成,可以保障公平、高可用、高性能。但是YARN无法很好的满足流式、模型训练任务,调度缺乏全局视角,仍需要进一步改进。