- 容量调度器(Capacity Scheduler):是YARN的默认调度器。它基于队列的资源容量分配,支持层次队列结构和资源分配的最佳公平共享。
- 公平调度器(Fair Scheduler):尝试在作业之间公平分配资源,同时也允许指定优先级高的作业获取更多资源。每个作业最初获得相等的共享,然后逐渐获得更多资源,具体取决于作业的规模和当前使用情况。
- 作业离散度感知容量调度器(Capacity Scheduler v2):在容量调度器的基础上添加了对离散作业的感知,可以更好对资源进行分配。它通过计算每个队列的负载指标和请求剩余资源的比例来调整队列之间的资源分配。
- 多资源调度器(Multiple Resource Scheduler):可以同时基于多个资源分配容量,如内存和CPU。用户可以为不同的资源分配不同的队列结构和权重。这使其适用于需要根据不同资源进行细粒度管理的工作负载。
- 时间共享调度器(Time Schedule):允许用户指定作业应该运行的确切时间表。如果作业在其调度时间表结束后仍在运行,它将被移出队列,直到下一个调度运行时间。这对需要严格控制作业运行时间的工作负载来说非常有用。
除此之外,社区中也提供了其他调度器实现,如Dominant Resource Fairness Scheduler(支持多资源公平共享)和作业延迟感知容量调度器(Capacity Scheduler v2)等。
所以,总结来说,YARN提供了丰富的资源调度策略,用户可以根据自己的需求选择合适的调度器,来实现集群资源的最大化利用和工作负载的定制化调度。