学习 YARN(五):调度器

更新至 Hadoop 2.9.2 版本

YARN 提供了两个主要的调度器实现:

  • Capacity Scheduler 根据集群资源的百分比分配资源;
  • Fair Scheduler 根据集群资源的内存和处理器分配资源。

Capacity Scheduler

Capacity Scheduler 由 Yahoo 贡献给 Hadoop 社区。Capacity Scheduler 在共享的多租户的集群中保证每个租户资源。

使用 Capacity Scheduler 调度器,编辑 yarn-site.xml 文件:

<property>  
    <name>yarn.resourcemanager.scheduler.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>  

Capacity Scheduler 使用队列作为资源调度的抽象。根队列为 root。

以创建 adhoc、batch、stream 子队列为例:

                +----------+
                |          |
                |  default |
                +----+-----+
                     |
      +-----------------------------+
      |              |              |
      |              |              |
+-----v-----+  +-----v-----+  +-----v-----+
|           |  |           |  |           |
| adhoc 30% |  | batch 50% |  | stream 20%|
+-----------+  +-----------+  +-----------+

编辑 capacity-scheduler.xml 文件:

<property>  
    <name>yarn.scheduler.capacity.root.queues</name>
    <value>default</value>
</property>

<property>  
    <name>yarn.scheduler.capacity.root.default.queues</name>
    <value>adhoc,batch,stream</value>
</property>

<property>  
    <name>yarn.scheduler.capacity.root.default.capacity</name>
    <value>100</value>
</property>

<property>  
    <name>yarn.scheduler.capacity.root.default.adhoc.capacity</name>
    <value>30</value>
</property>

<property>  
    <name>yarn.scheduler.capacity.root.default.batch.capacity</name>
    <value>50</value>
</property>

<property>  
    <name>yarn.scheduler.capacity.root.default.stream.capacity</name>
    <value>20</value>
</property>  

Fair Scheduler

TODO

参考