
# Impala启用并配置动态资源池
#### 操作场景
准入控制是Impala的一项功能，它对并发SQL查询施加限制，以避免繁忙集群上的资源使用高峰和内存不足情况。准入控制功能允许设置并发Impala查询数量以及这些查询使用的内存的上限。任何其他查询都会排队直到较早的查询完成，而不是被取消或运行缓慢并导致争用。当其他查询完成时，排队的查询就可以继续进行，当然，也可能是等待超时而返回异常给到客户端。
Impala使用Hadoop的fair-scheduler.xml与llama-site.xml来配置实现资源队列与准入控制，可以做到业务资源池与用户的隔离，并控制SQL的并发度。
客户需要使用动态资源池控制impala并发。
![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002332258734.png "点击放大")
#### 添加资源池配置文件
**MRS 3.6.0-LTS之前版本**：
1. 登录到集群的master1节点上，然后切换到omm用户下，在/home/omm目录下创建fair-scheduler.xml、llama-site.xml文件。 
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002333168978.png "点击放大")
   
   
2. 打开fair-scheduler.xml文件，添加如下配置。
   
   ```
   <allocations>
       <queue name="root">
           <aclSubmitApps> </aclSubmitApps>
           <queue name="default">
               <maxResources>4096 mb, 0 vcores</maxResources><!--参数仅供参考-->
               <aclSubmitApps>*</aclSubmitApps>
           </queue>
           <queue name="development">
               <maxResources>2048 mb, 0 vcores</maxResources><!--参数仅供参考-->
               <aclSubmitApps>admin</aclSubmitApps>
           </queue>
           <queue name="production">
               <maxResources>7168 mb, 0 vcores</maxResources><!--参数仅供参考-->
               <aclSubmitApps>omm</aclSubmitApps>
           </queue>
       </queue>
       <queuePlacementPolicy>
           <rule name="specified" create="false"/>
           <rule name="default" />
       </queuePlacementPolicy>
   </allocations>
   ```
   
   
3. 打开llama-site.xml文件，添加如下配置：
   
   ```
   <?xml version="1.0" encoding="UTF-8"?>
   <configuration>
     <property>
       <name>llama.am.throttling.maximum.placed.reservations.root.default</name>
       <value>1</value>
     </property>
     <property>
       <name>llama.am.throttling.maximum.queued.reservations.root.default</name>
       <value>2</value><!--参数仅供参考-->
     </property>
     <property>
       <name>impala.admission-control.pool-default-query-options.root.default</name>
       <value>mem_limit=128m,query_timeout_s=20,max_io_buffers=10</value>
     </property>
     <property>
       <name>impala.admission-control.pool-queue-timeout-ms.root.default</name>
       <value>30000</value><!--参数仅供参考-->
     </property>
     <property>
       <name>impala.admission-control.max-query-mem-limit.root.default</name>
       <value>3072000000</value><!--3GB--><!--参数仅供参考-->
     </property>
     <property>
       <name>impala.admission-control.min-query-mem-limit.root.default</name>
       <value>2048000000</value><!--2GB-->
     </property>
     <property>
       <name>impala.admission-control.clamp-mem-limit-query-option.root.default.regularPool</name>
       <value>true</value>
     </property>
   </configuration>
   ```
   
   
4. 执行如下命令分别将fair-scheduler.xml、llama-site.xml同步到所有的impalad节点的安装目录的etc文件夹下 。 
   scp fair-scheduler.xml {impalad实例ip}:/opt/Bigdata/FusionInsight_Impala_***/***_Impalad/etc/
   scp llama-site.xml {impalad实例ip}:/opt/Bigdata/FusionInsight_Impala_***/***_Impalad/etc/
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002367127289.png "点击放大")
   
   
5. 登录Manager页面，选择"集群 \> 服务 \> Impala \> 配置 \> 全部配置 \> Impalad（角色） \> 自定义"，在参数"impalad.customized.configs"中添加如下自定义配置项及值： 
   表1自定义配置 
   | 参数                               | 值                                                                              |
   |:---|:---|
   | --fair_scheduler_allocation_path | /opt/Bigdata/FusionInsight_Impala_\*\*\*/\*\*\*_Impalad/etc/fair-scheduler.xml |
   | --llama_site_path                | /opt/Bigdata/FusionInsight_Impala_\*\*\*/\*\*\*_Impalad/etc/llama-site.xml     |
      
   图1自定义配置   
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002367007421.png "点击放大")
   
   
6. 单击"保存"，保存修改的配置。
7. 单击"实例"，选择"更多 \> 重启实例"，重启Impalad实例。 
   图2重启实例   
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002333009210.png "点击放大")
   
   
**MRS 3.6.0-LTS及之后版本**：
1. 登录Manager页面，选择"集群 \> 服务 \> Impala \> 配置 \> 全部配置 \> Impalad（角色） \> 自定义"，在impalad实例中添加如下自定义配置项及值： 
   fair_scheduler_file_content值为fair-scheduler.xml的文件内容，具体请参考[2]。
   llama_site_file_content值为llama-site.xml的文件内容，具体请参考[3]。
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002334859332.png "点击放大")
   
   
2. 单击"保存"，保存修改的配置。
3. 单击"实例"，选择"更多 \> 重启实例"，重启Impalad实例。
 
#### 验证资源池配置
1. 登录到impala客户端所在的节点上，source环境变量，然后执行如下命令。 
   impala-shell -i {impalad实例ip:port} -Q request_pool=root.default (fair-scheduler.xml与llama-site.xml文件中配置的资源池)
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002333169002.png "点击放大")
   执行SQL查询。
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002367127305.png "点击放大")
   
   
2. 登录到Impalad WebUI上查看资源池使用情况，确认配置已生效。 
   https://{集群控制台地址}:9022/component/Impala/Impalad/95/
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002367007433.png "点击放大")
   
   
 
