
# 配置HBase表级别过载控制
#### 操作场景
在HBase集群运维中，当短时间内请求数量突增时，RegionServer的请求队列会迅速积压，导致过载问题。过载时所有表的请求时延都会增大，P99时延显著上升，对于时延敏感的核心业务影响严重。如何在过载场景下优先保障核心业务表的请求时延？HBase表级别过载保护功能通过为表设置优先级，在过载时自动丢弃低优先级表的请求，确保高优先级（核心业务）表的请求能够及时处理，有效保障核心业务的时延要求。本文介绍如何配置HBase表级别过载控制。
- **表优先级（PRIORITY）**：HBase表的优先级属性，用于标识表的重要程度。PRIORITY值大于等于1时，被认为是高优先级表。在过载场景下，高优先级表的请求会被优先处理，低优先级表的请求可能被丢弃。
- **RegionServer队列过载**：RegionServer接收到的请求在队列中等待处理，当队列中请求总大小占比超过阈值时，认为队列过载。此时RegionServer会根据表优先级策略处理请求。
- **RegionServer handler过载**：RegionServer使用handler线程处理请求，当活跃handler数占比超过阈值时，认为handler过载。此时RegionServer会根据表优先级策略处理请求。
- **过载控制**：HBase提供的过载保护机制，当检测到队列或handler过载时，自动丢弃低优先级表的请求，保障高优先级表的请求时延。
 
#### 约束与限制
本章节内容仅适用于MRS 3.3.1及之后版本。
#### 操作步骤
1. 修改核心表属性，设置表级别优先级。 
   1. 以客户端安装用户登录安装了HBase客户端的节点，并配置环境变量。 切换至客户端安装目录：
      ```
      cd HBase客户端安装目录
      ```
      配置环境变量：
      ```
      source bigdata_env
      ```
      
   
   2. 如果集群已启用Kerberos认证（安全模式），需执行以下命令认证用户。
      ```
      kinit 组件业务用户
      ```
      
   
   3. 执行以下命令登录HBase客户端并修改表优先级： 登录HBase客户端：
      ```
      hbase shell
      ```
      修改表的优先级：
      ```
      alter 'test_table', PRIORITY=>'1'
      ```
      其中：
      - 表优先级可以通过**PRIORITY** 属性进行设置，当**PRIORITY**值大于等于1时，被认为是高优先级表，建议设置为"1"即可。
      
      - 创建核心表时可以直接指定**PRIORITY** 属性，例如：
        ```
        create 'test_table','cf',PRIORITY=>'1'
        ```
        
       
   
   
   
   
2. 登录FusionInsight Manager界面，选择"集群 \> 服务 \> HBase \> 配置 \> 全部配置"，在搜索框中搜索[表1]中的参数，并修改对应参数值。
   
   登录集群Manager具体操作，请参考[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)。
    表1HBase表级别过载控制参数 
   | 参数名称                                                       | 参数说明                                                                                                                                                                                                                         | 参数修改建议                                                                                                                                                                                                                                                                                                                                     |
   |:---|:---|:---|
   | hbase.ipc.server.default.callqueue.size.overload.threshold | RegionServer队列过载阈值，当队列中请求总大小占比超过此阈值时，会直接丢弃低优先级表的请求。该配置用于保障核心业务表请求时延。 当开启队列普通请求限制（保护内部高优先级请求）功能时，即"hbase.ipc.server.max.default.callqueue.size.ratio"参数值不为0，队列过载阈值会受到普通请求队列最大占比限制，最终生效值为两者的乘积。 | - 需要综合考虑核心表业务请求量以及时延要求，核心表时延要求越高/请求越多，建议设置越小的值，通常可设置为：0.5\~1.0。  - 可根据实际业务需求单独或同时开启两种过载控制，RegionServer队列过载控制适用于存在大请求过载的场景，RegionServer handler过载控制适用于高并发过载的场景。   |
   | hbase.ipc.server.handler.overload.threshold                | RegionServer handler过载阈值，当活跃handler数占比超过此阈值时，会直接丢弃低优先级表的请求。该配置用于保障核心业务表请求时延。                                                                                                                                                 | - 需要综合考虑核心表业务请求量以及时延要求，核心表时延要求越高/请求越多，建议设置越小的值，通常可设置为：0.5\~1.0。  - 可根据实际业务需求单独或同时开启两种过载控制，RegionServer队列过载控制适用于存在大请求过载的场景，RegionServer handler过载控制适用于高并发过载的场景。   |
      
   
   
3. 单击"保存"，在保存配置界面单击"确定"保存配置。
4. 单击"实例"，勾选所有RegionServer实例，选择"更多 \> 重启实例"重启RegionServer实例。
配置完成后，可通过以下方式验证过载控制是否生效：
1. 在HBase Shell中执行describe 'test_table'命令，确认表的PRIORITY属性已设置。
2. 在Manager的HBase配置页面，确认过载控制参数已正确配置。
3. 模拟过载场景（如使用压测工具发送大量请求），观察低优先级表的请求是否被丢弃，高优先级表的请求时延是否得到保障。
 
#### 常见问题
- **如何确定核心表的优先级设置**
  表优先级PRIORITY值决定了在过载场景下的处理顺序，需要合理设置以确保核心业务得到保障。
  建议将核心业务表的PRIORITY设置为1，非核心表不设置PRIORITY或设置为大于1的值。如果存在多个优先级层次，可以设置不同的PRIORITY值（如1、2、3），值越小优先级越高。
  
- **过载控制参数如何设置**
  过载阈值参数需要根据业务特点设置，设置过小可能导致正常请求被丢弃，设置过大则无法有效保护核心业务。
  建议根据以下步骤设置参数：
  - 评估核心表的业务请求量和时延要求。
  
  - 对于存在大请求过载的场景，优先配置队列过载阈值（hbase.ipc.server.default.callqueue.size.overload.threshold），建议设置为0.5\~1.0。
  
  - 对于高并发过载的场景，优先配置handler过载阈值（hbase.ipc.server.handler.overload.threshold），建议设置为0.5\~1.0。
  
  - 可根据业务需求同时开启两种过载控制。
    
- **过载控制是否会影响所有表**
  过载控制仅对低优先级表生效，高优先级表（PRIORITY\>=1）的请求不会被丢弃。
  请确保核心业务表已设置PRIORITY属性。未设置PRIORITY或PRIORITY值小于1的表被视为低优先级表，在过载时可能被丢弃请求。
  
 
#### 相关文档
- 了解HBase日志介绍，请参考[HBase日志介绍](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1056.html)
- 了解HBase性能调优，请参考[HBase性能调优](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1013.html)。
- 了解HBase常见问题，请参考[HBase常见问题](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1638.html)。
 
