hadoop3.x yarn 调度策略:Fair Scheduler(公平调度) 作者:马育民 • 2021-04-16 22:35 • 阅读:10287 # 介绍 Fair Scheduler,公平调度器,可以为所有的应用 **平均公平** 分配资源,**公平** 的 **共享** 集群中的资源 可以配置多个队列 官网: https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/FairScheduler.html **提示:** - Apache hadoop 默认是容量调度器 - CDH hadoop 默认是公平调度器 # 公平共享 1. 两个队列,各占集群 50% 的资源,如下图: [![](/upload/0/0/1IX4GLgsBjMy.png)](/upload/0/0/1IX4GLgsBjMy.png) 2. 向 `队列1` 提交 `app1`,由于 `队列2` **空闲** ,`app1` 会 **抢占** `队列2` 的资源,即:`app1` 会占用整个集群 `100%` 的资源 [![](/upload/0/0/1IX4GLh76TE1.png)](/upload/0/0/1IX4GLh76TE1.png) 3. 向 `队列2` 提交 `app2`,资源会动态调整,`app1` 和 `app2` 各占 `50%` 的资源 [![](/upload/0/0/1IX4GLhOJEb5.png)](/upload/0/0/1IX4GLhOJEb5.png) 4. 向 `队列2` 提交 `app3`,资源会动态调整,`app2` 和 `app3` 各占 `25%` 的资源。`app1` 占用资源不变 [![](/upload/0/0/1IX4GLhbEKY9.png)](/upload/0/0/1IX4GLhbEKY9.png) # 队列 默认有 `default` 队列,也可以 **自定义队列** 默认基于内存公平共享 ### 如何指定 提交到哪个队列 有以下两种方式: - 提交应用时,通过参数 **指定队列** - 提交应用时,可以根据 **登录linux的 用户名**、**用户组** 自动分配队列 ### 队列内的调度策略 每个队列可以拥有自己的调度策略: - FIFO:同一队列的应用,按照顺序一个一个执行,每次执行一个 - **FAIR**:默认值,同一队列的应用,同时执行,**公平共享该队列的资源** - DRF # 资源抢占 默认不抢占,开启抢占需要修改配置文件 ### 权重 抢占资源多少,是可以配置的,称为 **权重** 如果没有设置,默认是 `1`, 如果权重相同,两个应用抢占资源占比相同 # 优点 - 容量保证:为每个队列设置资源的上限和下限,保证每个队列不会占用整个集群 - 弹性分配:如果一个队列中的资源有剩余,可暂时共享给其他队列 - 多租户:支持多用户共享集群,多应用程序同时运行。 - 动态修改:修改配置不需要重启 - 按照提交作业的优先级和提交时间顺序分配资源 参考: https://blog.csdn.net/candy_rainbow/article/details/102751888 原文出处:http://malaoshi.top/show_1IX2Ew6WklJS.html