hadoop3.x yarn 调度策略:Capacity Scheduler 作者:马育民 • 2021-04-16 22:34 • 阅读:10233 # 介绍 容量调度器,Apache hadoop3.x 默认的调度策略 支持多队列,每个队列可配置指定的资源(内存、CPU),每个队列采用 **FIFO调度策略**,先进先出,如下图: [![](http://65242847.gitee.io/pic/hadoop/Snipaste_2022-03-16_11-21-14.png)](http://65242847.gitee.io/pic/hadoop/Snipaste_2022-03-16_11-21-14.png) ### 并行度 同一时刻,一个队列只有一个任务在执行,集群的并行度为队列的个数 ### 应用场景 一般公司有 1-3 个集群,线上业务、开发调试、测试等,会同时运行多个应用,都使用这个集群 容量调度器支持多队列,可让多个应用同时执行 # 案例 [![](/upload/0/0/1IX4GcSNjN6A.png)](/upload/0/0/1IX4GcSNjN6A.png) **解释:** - root:根队列,逻辑概念 - default:该队列划分资源 **较多**,如:用于线上业务,占 `70%` 资源 - dev:用于开发的队列,划分资源 **较少**,占用 `30%` 资源 且又划分了 `2个子队列`: - group1:占 `15%` 资源 - group2:占 `15%` 资源 ### 运行应用 三个队列同时按照任务的先后顺序依次执行,先同时运行 app1、app21、app31,后面的应用等待 [![](/upload/0/0/1IX4Gcw16LPe.png)](/upload/0/0/1IX4Gcw16LPe.png) # 特点 ### 优点 - 容量保证:为每个队列设置资源的上限和下限,保证每个队列不会占用整个集群 - 弹性分配:如果一个队列中的资源有剩余,可暂时共享给其他队列 - 多租户:支持多用户共享集群,多应用程序同时运行。 - 动态修改:修改配置不需要重启 - 按照提交作业的优先级和提交时间顺序分配资源 ### 缺点 配置复杂 # 配置 ### yarn-site.xml 在 `$hadoop_HOME/etc/hadoop/yarn-site.xml` 配置: ``` The class to use as the resource scheduler. yarn.resourcemanager.scheduler.class org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler ``` Apache hadoop3.x 默认使用该调度策略,所以不需要配置 ### capacity-scheduler.xml 在 `hadoop_HOME/etc/hadoop/capacity-scheduler.xml` 配置: [![](http://65242847.gitee.io/pic/hadoop/Snipaste_2021-11-16_20-32-04.png)](http://65242847.gitee.io/pic/hadoop/Snipaste_2021-11-16_20-32-04.png) 默认只有一个 `default` 队列,占 100% 资源 原文出处:http://malaoshi.top/show_1IX2Ev41qiCX.html