yarn作业调度

容器调度(Capacity Scheduler)

Capacity调度器,有一个专门的队列用来运行小任务,但是为小任务专门设置一个队列会预先占用一定的集群资源,这就导致大任务的执行时间会落后于使用FIFO调度器时的时间。

工作逻辑

Capacity Schedule调度器以队列为单位划分资源。简单通俗点来说,就是一个个队列有独立的资源,
队列的结构和资源是可以进行配置的,如下图:

yarn 指定队列不起作用 yarn队列_yarn 指定队列不起作用

队列以分层方式组织资源,设计了多层级别的资源限制条件以更好的让多用户共享一个Hadoop集群

比如队列资源限制用户资源限制用户应用程序数目限制。队列里的应用以FIFO方式调度,每个队列可
设定一定比例的资源最低保证和使用上限,同时,每个用户也可以设定一定的资源使用上限以防止资源
滥用。而当一个队列的资源有剩余时,可暂时将剩余资源共享给其他队列。

公平调度器(Fair Scheduler)

在Fair调度器中,我们不需要预先占用一定的系统资源,Fair调度器会为所有运行的job动态的调整系统资源。实现了用户队列间的公平调度,也实现了队列内作业间的公平调度

工作逻辑

假设用户A,B各自拥有队列Q1,Q2

  1. A先启动一个job J1,则J1占用集群所有资源
  2. B启动一个job J2,则Q1中的J1需要分一半资源给Q2中的J2
  3. B又启动一个job J3,则Q2中的J2需要分一半资源给Q2中的J3
  4. yarn 指定队列不起作用 yarn队列_yarn 指定队列不起作用_02

先进先出调度器(FIFO Scheduler)

FIFO Scheduler把应用按提交的顺序排成一个队列,这是一个先进先出队列,在进行资源分配的时候,先给队列中最头上的应用进行分配资源,待最头上的应用需求满足后再给下一个分配,以此类推。正因为是先来先得,所以小任务往往会被大任务阻塞。