当前位置: 代码迷 >> 综合 >> Yarn的FIFO,Fair,Capicity三种调度器
  详细解决方案

Yarn的FIFO,Fair,Capicity三种调度器

热度:72   发布时间:2023-12-04 12:25:41.0

    目前Hadoop有三种比较流行的资源调度器:FIFO、Capacity Scheduier、Fair Scheduler。目前Hadoop2.7默认使用的是 Capacity Scheduler容量调度器。   

             

目录

1.FIFO(先入先出调度器)

?

2.Capacity Scheduler(容量调度器)

1.2.14.3 Fair Scheduler(公平调度器)   


 1.FIFO(先入先出调度器)

  Hadoop1.x使用的默认调度器就是FIFO。FIFO采用队列方式将一个一个job任务按照时间先后顺序进行服务。比如排在最前面的job需要若干maptask和若干reducetask,当发现有空闲的服务器节点就分配给这个job,直到job执行完毕。


2.Capacity Scheduler(容量调度器)

hadoop2.x使用的默认调度器是Capacity Scheduler。

1.支持多个队列,每个队列可配置一定量的资源,每个采用FIFO的方式调度。

2.为了防止同一个用户的job任务独占队列中的资源,调度哭合对同一用户提交的job任务所占资源进行限制。     

3.分配新的job任务时,首先计算每个队列中正在运行task个数与其队列应该分配的资源量做比值,然后选择比值最小的队列。比如如图队列A15个 task,20%资源量,那么就是15%0.2=70,队列B是25%0.5=50,队列c是25%0.3=80.33。所以选择最小值队列B。

4.其次,按照job任务的优先级和时间顺序,同时要考虑到用户的资源量和内存的限制,对队列中的job任务进行排序执行。

5.多个队列同时按照任务队列内的先后顺序一次执行。例如下图中job11、job21、job31分别在各自队列中顺序比较靠前,三个任务就同时执行。

   


1.2.14.3 Fair Scheduler(公平调度器)   

1.持多个队列,每个队列可以配置一定的资源,每个队列中的job任务公平共享其所在队列的所有资源。

2.队列中的job任务都是按照优先级分配资源,优先级越高分配的资源越多,但是为了确保公平每个job任务都会分配到资源。优先级是根据每个 job任务的理想获取资源量减去实际获取资源量的差值决定的,差值越大优先级越高。

                                                                                                      

  相关解决方案