• Apache Hadoop3.1.3 默认的资源调度器是 Capacity Scheduler
  • CDH 框架默认调度器是 Fair Scheduler。

总述

Hadoop 作业调度器主要有三种:FIFO、容量(Capacity Scheduler)和公平(Fair Scheduler)

  1. <property>
  2. <description>The class to use as the resource scheduler.</description>
  3. <name>yarn.resourcemanager.scheduler.class</name>
  4. <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
  5. </property>

FIFO

单队列,根据提交作业的先后顺序,先来先服务
优点:简单易懂;
缺点:不支持多队列,生产环境很少使用;

Capacity

image.png

特点

  • 多队列:

每个队列可配置一定的资源量,每个队列采用FIFO调度策略。

  • 容量保证:

管理员可为每个队列设置资源最低保证和资源使用上限

  • 灵活性:

如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则其他队列借调的资源会归还给该队列。

  • 多租户:

支持多用户共享集群和多应用程序同时运行。 为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定

分配顺序:三步走

  1. 选择队列: 从root开始,使用深度优先算法,优先选择资源占用率最低的队列分配资源。
  2. 选择作业:默认按照提交作业的优先级和提交时间顺序分配资源。
  3. 选择容器:按照容器的优先级分配资源; 如果优先级相同,按照数据本地性原则

    Fair

    image.png

    特点

  • 所有作业获得公平的资源
    • 公平调度器每个队列资源分配策略如果选择FIFO的话,此时公平调度器相当于上面讲过的容量调度器
  • 调度器会优先为缺额大的作业分配资源
    • 缺额:某一时刻一个作业应获资源和实际获取资源的差距叫“缺额”
  • DRF:将CPU、内存两者进行资源调控、默认只调控内存

    与Capacity的不同

  • 队列选择不同:容量调度器优先选择资源占用率低的队列、公平调度器优先选择对资源缺额比例大的队列。

  • 每个队列可设置的资源分配方式不同:容量调度器可选FIFO&DRF、公平调度器可选FIFO&DRF&FAIR(默认是fair)

image.png