Scheduling Queues
The scheduler organizes
applications further into queues, and shares resources
fairly between these queues. By default, all users share a single
queue, named default
. If an application specifically
lists a queue in a container resource request, the request is
submitted to that queue. You can also assign queues based on the
user name included with the request through configuration. Within
each queue, a scheduling policy is used to share resources between
the running applications. The default is memory-based fair sharing,
but FIFO and multi-resource with Dominant Resource Fairness can
also be configured.
Queues can be arranged in a hierarchy to divide resources, and they can be configured with weights to share the cluster in specific proportions. The Fair Scheduler uses a concept called a queue path to configure a hierarchy of queues. The queue path is the full path of the queue's hierarchy, starting at root. The following example has three top-level child-queues a, b, and c and some sub-queues for a and b:
In addition to providing fair sharing, the Fair Scheduler allows assigning guaranteed minimum shares to queues, which is useful for ensuring that certain users, groups or production applications always get sufficient resources. When a queue contains apps, it gets at least its minimum share, but when the queue does not need its full guaranteed share, the excess is split between other running apps. This lets the scheduler guarantee capacity for queues while utilizing resources efficiently when these queues do not contain applications.