Specifying a Task queue

When MR3 uses capacity scheduling (see Task Scheduling), the user can use the configuration key hive.mr3.dag.queue.name to specify a Task queue for each query. For example, by setting hive.mr3.dag.queue.name to high, all subsequent queries are sent to a Task queue high in MR3. If hive.mr3.dag.queue.name is not set, the default value of default is used (which is safe because MR3 always maintains a Task queue default).

0: jdbc:hive2://blue0:9852/> set hive.mr3.dag.queue.name=high;

To allow users to specify Task queues, the configuration key hive.security.authorization.sqlstd.confwhitelist.append should be set to include hive.mr3.dag.queue.name before starting HiveServer2, e.g.:

<property>
  <name>hive.security.authorization.sqlstd.confwhitelist.append</name>
  <value>hive\.querylog\.location.*|hive\.mr3\.map\.task.*|hive\.mr3\.reduce\.task.*|hive\.mr3\.dag\.queue\.name</value>
</property>

Dynamically updating specifications for capacity scheduling

The user can update specifications for capacity scheduling without restarting HiveServer2 in two steps.

First delete the current ContainerGroup by setting hive.mr3.container.stop.cross.dag.reuse to true and submitting a query. After the query completes, the user can check that no ContainerWorkers are running.

0: jdbc:hive2://blue0:9852/> set hive.mr3.container.stop.cross.dag.reuse=true;
0: jdbc:hive2://blue0:9852/> select count(distinct foo) from bar;

Next set the configuration key hive.mr3.dag.queue.capacity.specs to new specifications for capacity scheduling and create a new ContainerGroup by submitting a query. In order to keep the new ContainerGroup alive, set the configuration key hive.mr3.container.stop.cross.dag.reuse to false.

0: jdbc:hive2://blue0:9852/> set hive.mr3.container.stop.cross.dag.reuse=false;
0: jdbc:hive2://blue0:9852/> set hive.mr3.dag.queue.capacity.specs=high=30,medium=30,default=30,background=0;
0: jdbc:hive2://blue0:9852/> select count(distinct foo) from fido;

The user can check the specifications of the new ContainerGroup in the log of DAGAppMaster.

2022-08-14T14:11:49,776  INFO [IPC Server handler 22 on 8080] TaskAttemptQueue$: DAGSchedulerCapacity: high=30/Simple(high),medium=30/Simple(medium),default=30/Simple(default),background=0/Simple(background)

To allow users to specify Task queues, the configuration key hive.security.authorization.sqlstd.confwhitelist.append should be set to include hive.mr3.container.stop.cross.dag.reuse and hive.mr3.dag.queue.capacity.specs before starting HiveServer2, e.g.:

<property>
  <name>hive.security.authorization.sqlstd.confwhitelist.append</name>
  <value>hive\.querylog\.location.*|hive\.mr3\.map\.task.*|hive\.mr3\.reduce\.task.*|hive\.mr3\.dag\.queue\.name|hive\.mr3\.container\.stop\.cross\.dag\.reuse|hive\.mr3\.dag\.queue\.capacity\.specs</value>
</property>