i) jobs to make equal progress instead of following the FIFO order then must use Fair Scheduling.
ii) If slow connectivity and data locality plays a vital role and makes a significant difference to the job runtime then must use Fair Scheduling.
iii) if there is lot of variability in the utilization between pools.
i) If the jobs require scheduler detrminism then Capacity Scheduler can be useful.
ii) CS's memory based scheduling method is useful if the jobs have varying memory requirements.
iii) want to enforce resource allocation because you know very well about the cluster utilization and workload then use Capacity Scheduler.