YARN队列管理说明

调整default和sla子队列的权重配比

默认情况下,若用户的队列名为foo,则会有2个子队列,分别是foo.sla 和 foo.default, 其资源分配权重比为9:1。 这样配置是为了保障用户的高优先级作业可以顺利分配到资源,但这样也会导致部分资源闲置和情况;而且在某些特定情况下,用户的作业只提交到default子队列。 这就需要调整这个默认的参数。

调整的步骤如下:

使用EasyOps,打开HadoopMeta服务,进入配置界面

新增scheduler.meta.xml配置项

若想变更所有的队列的配比,则新增一个键值对,subqueue_weight = 9:1

若只想调整某一个队列的权重配置,则新增的属性名为subqueue_weight_。对于foo队列来说,改成 subqueue_weight_foo = 9:1

重启scheduler组件,选择同步配置。

在Yarn WebUI界面验证是否生效。

Capacity调度器下绑定队列至特定Label

目前猛犸平台未实现CS调度器下的不同Label的队列绑定和管理操作,需要手动维护新建队列与所在Label的关系。

相应步骤如下:

在用户提交新建队列之前,进入HadoopMeta服务的数据库

在数据库界面,可以查看到目前已有的Label分组信息

mysql> select * from yarn_node_label;
+----+---------+-----------------+----------+----------+
| id | label   | clustername     | totalcpu | totalmem |
+----+---------+-----------------+----------+----------+
|  1 | offline | hdfs://cluster1 |     9920 | 31860000 |
|  2 | sloth   | hdfs://cluster1 |      640 |  2160000 |
+----+---------+-----------------+----------+----------+
2 rows in set (0.00 sec)

若需要新建一个队列foo,到名为sloth 的Label中,则

mysql> desc yarn_queue_label;
+-------------+---------------------+------+-----+---------+----------------+
| Field       | Type                | Null | Key | Default | Extra          |
+-------------+---------------------+------+-----+---------+----------------+
| id          | bigint(10) unsigned | NO   | PRI | NULL    | auto_increment |
| queue       | varchar(64)         | NO   | MUL | NULL    |                |
| label       | varchar(64)         | NO   |     | NULL    |                |
| clustername | varchar(64)         | NO   |     | NULL    |                |
| maxammemgb  | int(11)             | NO   |     | NULL    |                |
| orderpolicy | varchar(16)         | NO   |     | fair    |                |
+-------------+---------------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)

mysql> insert into yarn_queue_label (queue,label,clustername,maxammemgb,orderpolicy) 
values ('root.foo','sloth','hdfs://cluster1',100,'fair');

注意queue的名称必须以root.的形式,如 root.foo, label为所要绑定的Label名称,clusterName以上一个表中的Label信息为准,maxammemgb保持不变即可

以上配置完毕后,让用户在猛犸上重新提交这个队列新建流程即可

若用户先完成了队列创建流程,则运维同学需要补充以上的操作流程,并重启scheduler服务,才能触发RM加载到正确的队列配置

Capacity调度器下调整队列的AM资源数量

在CS调度器下,队列的AM资源也有对应的限制。具体的配置信息,可以在Yarn WebUI的scheduler页面下,打开队列的详情进行查看。默认情况下AM的资源,占当前队列的10%。有些情况下,这些资源无法满足业务的需求,我们可以调整这个配比,让其最大值达到100%。

操作步骤如下:

进入HadoopMeta服务的数据库

查看要调整的队列的AM资源配置情况,以foo队列为例

mysql> select * from yarn_queue_label where id = 1;
+-----+------------+-------+-----------------------------+------------+-------------+
| id  | queue      | label | clustername                 | maxammemgb | orderpolicy |
+-----+------------+-------+-----------------------------+------------+-------------+
| 1   | root.sloth | sloth | hdfs://easyops-cluster      |        20 | fair        |
+-----+------------+-------+-----------------------------+------------+-------------+
mysql> update yarn_queue_label set maxammemgb = 100 where id = 1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

Maxammemgb * MaxRunningApp / MaxQueueMem 极为 AM的资源配置百分比, 这个百分比会设置到Capacity.xml中队列自身的max.am.percentag参数