
# 提升HBase非业务高峰期的Compaction执行速度
#### 操作场景
HBase支持设置非业务高峰期和非高峰期的Compaction吞吐量，通过在非高峰期设置较大的吞吐量，加快Compaction的执行速度，减小高峰期Compaction对业务的影响。
#### 约束与限制
该操作仅MRS 3.3.0及之后版本支持。
#### 配置HBase分时Compaction吞吐量参数
登录FusionInsight Manager，选择"集群 \> 服务 \> HBase \> 配置"，在搜索框中搜索[表1]中的参数，并根据业务实际情况修改参数值以启用HBase分时Compaction吞吐量功能，且参数支持动态生效，修改配置保存后，登录**hbase shell**命令行执行以下命令即可更新配置，无需重启实例：
```
update_all_config
```
需注意，开启HBase分时Compaction吞吐量功能需"hbase.offpeak.start.hour"和"hbase.offpeak.end.hour"参数值都不为"-1"。
 表1配置HBase分时Compaction吞吐量参数 
| 参数名称                                       | 参数描述                                                                        | 默认值       |
|:---|:---|:---|
| hbase.offpeak.start.hour                   | HBase集群运行的非高峰开始时间，取值范围为：-1\~23，且值只能为整数，当参数值为"-1"则不支持HBase分时Compaction吞吐量功能。 | -1        |
| hbase.offpeak.end.hour                     | HBase集群运行的非高峰结束时间，取值范围为：-1\~23，且值只能为整数，当参数值为"-1"则不支持HBase分时Compaction吞吐量功能。 | -1        |
| hbase.hstore.compaction.throughput.offpeak | 非高峰期Compaction吞吐量，单位为bytes/秒。                                               | 104857600 |
   
#### HBase分时Compaction配置示例
1. 登录FusionInsight Manager，选择"集群 \> 服务 \> HBase \> 配置"，根据业务实际情况设置非高峰期时段。例如： 
   - 设置"hbase.offpeak.start.hour"参数值为"18"，设置"hbase.offpeak.end.hour"参数值为"23"时，表示每天18:00到23:00之间为非高峰期。
   
   - 设置"hbase.offpeak.start.hour"参数值为"23"，设置"hbase.offpeak.end.hour"参数值为"8"时，表示每天23:00到第二天8:00之间为非高峰期。
   
   
   
   登录集群Manager具体操作，请参考[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)。
   
   
2. 非高峰期时，在Manager界面选择"集群 \> 服务 \> HBase \> 图表"，观察图表"Compaction操作队列大小-所有实例"的值是否一直在增大，且图表"RegionServer Compaction流量-所有实例"有部分RegionServer的值已达到或超过"hbase.hstore.compaction.throughput.offpeak"配置项的值。 
   - 是，根据集群磁盘使用情况调大"hbase.hstore.compaction.throughput.offpeak"配置项的值，执行[3]。
   
   - 否，操作结束。
   
   
   
   
3. 观察HBase图表"P99 RegionServer的RPC请求响应时间-所有实例"的值是否持续上升：
   
   - 是，执行[4]。
   
   - 否，操作结束。
   
   
   
   
4. 观察RegionServer所在主机的图表"磁盘IO利用率"的值是否超过90%：
   
   - 是，磁盘IO已达到瓶颈，可考虑减小写入速度或者扩容磁盘。
   
   - 否，操作结束。
   
   
   
   
 
