capacity scheduler
-
设计思想
- 通过比例来规划整个集群的资源使用
- 支持调度队列间的弹性资源使用
- 增加各种限制,避免队列、应用利用队列间的资源弹性能力而独占整个集群资源
-
队列(Queue)
- 以队列(Queue)作为调度单位
- 通过队列来规划整个集群的容量
- 支持层级的方式组织队列;root队列, leaf队列。其中leaf队列中包含了当前active的Application
-
资源分配策略
- 策略
- 队列间选择策略:资源使用率低者优先 不同的资源比较器对于资源定义不一样(DefaultResourceCalculator只考虑MEM, DominantResourceCalculator同时考虑CPU/MEM)
- leaf队列内选择策略(Application选择策略):按照提交时间FIFO
- Application队列内选主响应哪个ResourceRequest
- 流程
- 从root队列开始,依据子队列的资源使用率递归选择最小的,直到leaf队列。
- 确定leaf队列后,依据Application的 ApplicationID,选择最小的Application来分配资源。(根据应用的提交时间进行FIFO)
- 确定Application后,根据优先级、locality perference(node、rack、no-local)、资源规格和数量的顺序来确定响应那个ResourceRequest
- 策略
-
特点
- 支持多租户(通过层级的调度队列这个抽象来实现)
- 保证调度单位最少可用资源(通过定义队列的capacity来实现)
- 支持队列间资源弹性使用,即当一个队列可用资源有剩余时,可以暂时将剩余资源共享给其他有需求的队列
- 支持多重约束,避免因资源弹性的特性,造成单个Application或者队列独占整个集群的资源
-
主要配置
- 队列的soft、hard capacity
- capacity:队列的最小资源容量(百分比)。以此实现集群的资源规划
注意,所有队列的容量之和应小于100 - maximum-capacity:队列的资源使用上限。避免队列间资源弹性使用造成的独占资源问题
- capacity:队列的最小资源容量(百分比)。以此实现集群的资源规划
- 用户限制
- minimum-user-limit-percent:每个用户最低资源保障(百分比)
- user-limit-factor:每个用户最多可使用的资源量(百分比)
- Application限制
- 队列的soft、hard capacity
网友评论