0.FIFO(先入先出调度器)
FIFO是简单容易理解的调度器,它是一个先进先出的队列,也就是按照job提交顺序来排队,在进行资源分配的时候,先给队列中最头上的应用进行分配资源,待最头上的应用需求满足后再给下一个分配,以此类推。
FIFO(先入先出调度器).jpg
1.Capacity Scheduler(容量调度器)
- 支持多个队列,每个队列可配置一定量的资源,每个采用FIFO的方式调度。
- 为了防止同一个用户的job任务独占队列中的资源,调度器会对同一用户提交的job任务所占资源进行限制。
- 分配新的job任务时,首先计算每个队列中正在运行task个数与其队列应该分配的资源量做比值,然后选择比值最小的队列。比如如图队列A15个task,20%资源量,那么就是15%0.2=70,队列B是25%0.5=50 ,队列C是25%0.3=80.33 。所以选择最小值队列B。
- 其次,按照job任务的优先级和时间顺序,同时要考虑到用户的资源量和内存的限制,对队列中的job任务进行排序执行。
-
多个队列同时按照任务队列内的先后顺序一次执行。例如下图中job11、job21、job31分别在各自队列中顺序比较靠前,三个任务就同时执行。
Capacity Scheduler(容量调度器).jpg
2.Fair Scheduler(公平调度器)
支持多队列多用户,每个队列中的资源量可以配置,同一个队列中的作业公平共享队列中所有资源。比如有三个队列: queueA、queueB 和queueC,每个队列中的job按照优先级分配资源,优先级越高分配的资源越多,但是每个job都会分配到资源以确保公平。在资源有限的情况下,每个job理想情况下获得的计算资源与实际获得的计算资源存在一种差距,这个差距就叫做缺额。在同一个队列中,job的资源缺额越大,越先获得资源优先执行。作业.是按照缺额的高低来先后执行的,而且可以看到上图有多个作业同时运行。
Fair Scheduler(公平调度器).jpg












网友评论