Big Data

YARN的ReservationSystem机制

2018-12-25  本文已影响0人  盗梦者_56f2

介绍

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

工作流程


步骤:

  1. 用户提交预订(reservation)创建请求,并接收包含ReservationId的响应。
  2. 用户提交一个用RDL(Reservation Definition Language)表示的规格文件和ReservationId组成的预订请求。这描述了用户对资源随时间的需求(例如,资源的天际线)和时间约束(例如,期限)。这可以通过常用的Client-to-RM协议或通过RM的REST api以编程方式完成。如果使用相同的ReservationId提交预订,并且RDL相同,则不会创建新预留并且请求将成功。如果RDL不同,则将拒绝预留,并且请求将不成功。如果使用相同的ReservationId提交预订,并且RDL相同,则不会创建新预留但是请求将会成功。如果RDL不同,则将拒绝预留,并且请求将会不成功。
  3. ReservationSystem利用ReservationAgent(图中的GREE)启动一个客户端去查找合理的资源分配。一般是通过一个计划,计划是一个数据结构,描述了当前已经接受的保留和可获得的资源。
  4. SharingPolicy提供一种方式去接受或者拒绝预订。
  5. 成功验证后,ReservationSystem会向用户返回ReservationId。
  6. 到一定时间,一个名为PlanFollower的新组件通过动态的创建/调整/销毁队列,将计划状态发布到调度程序。
  7. 用户可以提交一个作业到可预留队列,可以明确指定ReservationId作为ApplicationSubmissionContext的一部分。
  8. Scheduler将从创建的特殊队列中提供容器,以确保遵守资源预留。在预留的限制内,用户已经保证访问资源,在资源共享之上进行标准的Capacity/Fairness共享。
  9. 系统同时提供一个机制去适应集群容量下降的机制。

配置Reservation System

配置ReservationSystem很简单。 目前,已在CapacityScheduler和FairScheduler中添加了对预订的支持。 可以将capacity-scheduler.xml或fair-scheduler.xml中的任何leaf queue标记为可用于“预留”。 然后,该队列中的容量/公平份额可用于进行预订。 仍然可以在没有预留的情况下将作业提交到可预留队列,在这种情况下,它们将以best-effort模式运行,无论在活动预留中运行的作业是否留下任何容量。

上一篇下一篇

猜你喜欢

热点阅读