FairScheduler的设计目标: 为所有的应用分配公平的资源 (对公平的定义可以通过参数来设置)。
FairScheduler特点:
支持资源抢占
允许调度器杀死占用超过其应占份额资源队列的containers, 这些containers资源便可被分配到应该享有这些资源份额的队列中。
当队列没有任务时, 最小资源可以被其他队列抢走。
当有新的任务进来时, 如果集群有资源则获取资源, 如果没有则会从其他优先级较低的队列中抢占资源来执行任务。
抢占会降低集群的执行效率, 因此被终止的containers需要被重新执行。
## 实现抢占功能的全局参数
yarn.scheduler.fair.preemption=true
## 最小资源分配抢占超时时间
minimum share preemption timeout
## 公平资源分配抢占超时时间
fair share preemption timeout
如果队列的minimum share preemption timeout指定的时间内未获得最小的资源保障, 调度器就会抢占containers
灵活的调度策略配置
提高小应用程序响应时间
FIFOScheduler分配资源的顺序和提交应用程序的顺序相同, 不适用于共享集群。大的应用可能会占用所有集群资源, 这就导致其他应用被阻塞。
CapacityScheduler中, 有一个专门的队列来运行小任务, 但这会预先占用一定的集群资源, 因此会导致大任务的执行时间会落后于FIFO调度器运行其的时间。
FairScheduler中, 我们不需要预先占用一定的系统资源, Fair调度器会为所有运行的job动态的调整系统资源。
yarn调度器 FairScheduler 与 CapacityScheduler
原文:https://www.cnblogs.com/ronnieyuan/p/11587648.html