CapacityScheduler today doesn’t support an auto queue creation which is flexible enough. The current constraints:
- Only leaf queues can be auto-created
- A parent can only have either static queues or dynamic ones. This causes multiple constraints. For example:
- It isn’t possible to have a VIP user like Alice with a static queue root.user.alice with 50% capacity while the other user queues (under root.user) are created dynamically and they share the remaining 50% of resources.
- In comparison, FairScheduler allows the following scenarios, Capacity Scheduler doesn’t:
- This implies that there is no possibility to have both dynamically created and static queues at the same time under root
- A new queue needs to be created under an existing parent, while the parent already has static queues
- Nested queue mapping policy, like in the following example:
|<rule name="nestedUserQueue" create=”true”>
<rule name="primaryGroup" create="true" />
- Here two levels of queues may need to be created
If an application belongs to user alice (who has the primary_group of engineering), the scheduler checks whether root.engineering exists, if it doesn’t, it’ll be created. Then scheduler checks whether root.engineering.alice exists, and creates it if it doesn't.
When we try to move users from FairScheduler to CapacityScheduler, we face feature gaps which blocks users migrate from FS to CS.