Hadoop 文档

General

Common

HDFS

MapReduce

MapReduce REST APIs

YARN

YARN REST APIs

YARN Service

Submarine

Hadoop Compatible File Systems

Auth

Tools

Reference

Configuration

目的

本文档简要介绍了YARN ReservationSystem

总览

YARN 的ReservationSystem为用户提供了(或提前)保留资源的能力,以确保重要的生产作业将非常可预测地运行。ReservationSystem执行仔细的准入控制,并保证绝对资源量(而不是群集大小的百分比)。保留可以是可延展的,也可以具有帮派语义,并且可以具有随时间变化的资源需求。ReservationSystem是YARN ResourceManager的组件。

预约流程

纱预订系统|  宽度= 600px

参考上图,典型的预订如下:

  • 步骤0 用户(或代表其的自动化工具)提交预订创建请求,并收到包含ReservationId的响应。

  • 步骤1 用户(或代表其的自动化工具)提交由上一步骤中检索到的预订定义语言(RDL)和ReservationId指定的预订请求。这描述了用户对资源超时(例如,资源的天际线)和时间限制(例如,截止日期)的需求。这可以通过常规的Client-to-RM协议以编程方式完成,也可以通过RM的REST API来完成。如果提交的预订具有相同的ReservationId,并且RDL相同,则不会创建新的预订,并且请求将成功。如果RDL不同,则保留将被拒绝,并且请求将失败。

  • 步骤2 ReservationSystem利用ReservationAgent(图中的GREE)为计划中的预留找到一个合理的分配,一个跟踪当前所有已接受的预留以及系统中可用资源的数据结构。

  • 步骤3 SharingPolicy提供了一种在接受的保留上强制不变式的方法,有可能拒绝保留。例如,CapacityOvertimePolicy允许强制执行用户可以在其所有保留中请求的瞬时最大容量,以及一段时间内对资源积分的限制,例如,用户最多可以保留50%集群容量会立即变化,但是在任何24小时内,他/她的平均值都不能超过10%。

  • 步骤4 成功验证后,ReservationSystem会向用户返回一个ReservationId(将其视为机票)。

  • 步骤5 当时间到了时,一个名为PlanFollower的新组件通过动态创建/调整/销毁队列将计划的状态发布到调度程序。

  • 步骤6 然后,用户可以通过简单地将ReservationId作为ApplicationSubmissionContext的一部分来将一个(或多个)作业提交到可保留队列。

  • 步骤7 然后,调度程序将从创建的特殊队列中提供容器,以确保尊重资源预留。在预留的范围内,用户保证了对资源的访问,在此之上,资源共享以标准的容量/公平性共享进行。

  • 步骤8 该系统包括适应群集容量下降的机制。这包括重新计划,如果可能的话“移动”保留,或者拒绝最小数量的先前接受的保留(以确保其他保留将全额收取)。

配置预订系统

配置ReservationSystem很简单。目前,我们已在CapacitySchedulerFairScheduler中添加了对预订的支持。您可以在Capacity -scheduler.xmlfair-scheduler.xml中将任何叶队列标记为可用于“预订”(有关详细信息,请参阅CapacitySchedulerFairScheduler)。然后,可以使用该队列中的容量/公平份额进行预订。作业仍可以提交到可保留队列 无需保留,在这种情况下,无论活动保留内运行的作业剩余多少容量,它们都将以尽力而为模式运行。