修改HBase参数配置对集群进行性能调优
操作场景
创建完CloudTable HBase集群后,由于HBase有很多与读写性能相关的配置参数,读写请求负载不同的情况下,用户可以在表格存储服务控制台中多次修改集群HBase配置参数,对集群的性能进行调优。当修改完集群HBase参数后,用户需要重启集群才能生效。
使用限制
- 修改CloudTable HBase集群参数需要重启集群,可能会导致业务的中断。
- CloudTable HBase集群重启过程中,不允许修改集群参数。
前提条件
只有当集群无运行中的任务时,才能修改参数。
操作步骤
- 登录表格存储服务控制台。
- 左上角选择区域。
- 在左侧导航树,单击集群管理。
- 选中需要修改参数的集群,单击对应的集群名称,跳转到该集群详情页面。
- 在“参数配置”中单击“参数配置”页签,对HBase参数进行修改。
CloudTable集群当前可以修改的HBase参数请参见HBase参数说明。
- 选中需要修改的参数,在“参数值”列单击
。 - 在修改框中输入新值,单击
,系统提示“参数修改为xx成功,请保存本次修改值”,并且修改的参数值后显示红色*。 如果单击
,则取消修改。 - 单击参数列表左上方的“保存修改”,弹出“保存修改”对话框。
- 在“保存修改”对话框中,确认参数修改信息正确后,勾选“是否立即重启”,然后单击“确定”。
- 当勾选“是否立即重启”并单击“确定”后,集群将立即重启,重启完成后,修改后的参数才能生效。单击参数列表右上方的
,参数列表左上方将显示“新值已应用”。 - 在“保存修改”对话框中可以先不勾选“是否立即重启”,单击“确定”后,参数列表上方将显示“新值未应用”。此时用户需要自行重启集群,才能使修改的参数值生效。重启集群操作请参见重启HBase集群。
- 如果修改的参数值不正确,可以在“保存修改”对话框中单击“一键还原”,取消修改参数值。
- 当勾选“是否立即重启”并单击“确定”后,集群将立即重启,重启完成后,修改后的参数才能生效。单击参数列表右上方的
- 选中需要修改的参数,在“参数值”列单击
- 参数修改完成后,可以单击“修改历史”页签查看参数修改的历史。
在“修改历史”页签中可以查看如下信息:
- 参数名:被修改过的参数名。
- 旧值:修改前的参数值。
- 新值:修改后的参数值。
- 修改时间:记录用户修改参数值的时间。
HBase参数说明
CloudTable集群当前可以修改的参数如表1所示。

hbase.regionserver.global.memstore.size和hfile.block.cache.size两个参数值相加不能超过0.8。
参数名 | 参数范围 | 参考缺省值 | 参数描述 |
|---|---|---|---|
hbase.regionserver.thread.compaction.small | [1,20] | 1 | HFile compaction线程数,在put高负载情况下可以适当调大。 |
hbase.regionserver.global.memstore.size | (0,0.8) | 0.4 | 建议设置为“hbase.hregion.memstore.flush.size * 写活跃region数 / RegionServer GC -Xmx”。默认值为“0.4”,表示使用RegionServer GC -Xmx的40%。 |
hbase.hstore.blockingStoreFiles | [1,2147483647] | 60 | 当列簇的HFile数达到该阈值,阻塞该region的所有操作,直到compaction完成,在put高负载场景下可以适当调大。 |
hbase.client.scanner.timeout.period | [1,2147483647] | 60000 | 客户端和RegionServer端参数,表示scan租约的时间,建议设置为60000ms的整数倍,在读高负载情况下可以适当调大。单位:毫秒。 |
hfile.block.cache.size | (0,0.8) | 0.2 | 数据缓存所占的RegionServer GC -Xmx百分比,在读高负载情况下可以适当调大以增大缓存命中率以提高性能。默认值为“0.2”,表示使用RegionServer GC -Xmx的20%。 |
hbase.regionserver.handler.count | [1,300] | 100 | RegionServer上的RPC服务器实例数,建议设置为100 ~ 300之间。 |
hbase.regionserver.metahandler.count | [1,100] | 50 | RegionServer中处理优先请求的程序实例的数量,建议设置为20 ~ 100之间。 |
hbase.hstore.flusher.count | [1,10] | 2 | memstore的flush线程数,在put高负载场景下可以适当调大。 |
hbase.ipc.server.callqueue.read.ratio | [0,1] | 0.5 | 该配置项用于不同负载模型时,控制读和写操作的RPC队列数量的比例。取值范围为0到1.0,默认值为0.5。
|
hbase.regionserver.hotregion.handler.count | [1,65535] | 66 | 在RegionServer上启动的用于热点Region的RPC侦听器实例数。 |
hbase.ipc.server.hotregion.max.callqueue.length | [1,65535] | 330 | RegionServer处理热点Region的请求队列长度最大值,当接收到新的请求时,会检查是否会导致队列长度超过此阈值,如果超过阈值,会直接丢弃此请求。 |
hbase.metric.controller.analysis.period | [1,2147483647] | 60 | MetricController服务热点分析周期,单位:秒。 |
hbase.metric.controller.analysis.threads.max | [1,100] | 10 | 热点分析任务线程池最大线程数。 |
hbase.metric.controller.collect.threads.max | [1,100] | 16 | 热点分析流量收集线程池最大线程数。 |
hbase.metric.regionserver.hotspot.threshold | [1,2147483647] | 20000 | 单RegionServer热点阈值,单位为每秒请求数。 |
hbase.metric.region.hotspot.threshold | [1,2147483647] | 10000 | 单Region热点阈值,单位为每秒请求数。 |
hbase.hotspot.enable | [true,false] | true | 是否开启热点自愈功能,true为开启,false为关闭。开启后如有出现访问热点,会自动处理热点。 |
hbase.tries.cache.enabled | [true,false] | false | 设置为true时,使用LoudsTriesLruBlockCache缓存索引块和数据块。 |
hbase.write.tries | [true,false] | false | 设置为true时,开启succinct tries特性,它将使用一种新的数据结构来提升index block的利用率。 |
hbase.hfile.hsync | [true,false] | false | 设置是否启用Hfile耐久性以将数据持久化到磁盘。若将该参数设置为true,则性能将受到影响,原因是每个Hfile写入时都会被同步到磁盘上。 |
hbase.wal.hsync | [true,false] | false | 设置是否启用WAL文件耐久性以将WAL数据持久化到磁盘。若将该参数设置为true,则性能将受到影响,原因是每个WAL的编辑都会被同步到磁盘上。 |
hbase.hot.cold.data.separator.chore.enabled | [true,false] | false | 是否开启CDS功能。设置为true时,将开启冷数据的异步转储。 |
hbase.hot.cold.data.separator.chore.interval | [60000, 2147483647] | 86400000 | CDS的检查周期,区别于常规的compaction任务,该检查触发的compaction会将冷热数据写入到不同的数据文件。 单位:毫秒 |
hbase.regionserver.cold.data.shipper.chore.interval | [60000, 2147483647] | 300000 | 配置检查待转储冷数据文件的周期,如果有满足条件的待转储冷数据文件,会触发任务将冷数据文件迁移到冷存储。 单位:毫秒 |
hbase.regionserver.shipper.cold.file.verification.enabled | [true, false] | true | 是否对迁移到冷存储的数据文件进行一致性校验。 |
hbase.cold.data.shipper.thread.count | [1, 20] | 3 | 用于将数据文件拷贝到冷存储的线程数。 |
hbase.cold.data.separator.offpeak.end.hour | [-1, 23] | -1 | 业务低峰的结束时间,为24小时制的整点。在低峰时间段,CDS会消耗更多的资源来加快数据的热转冷。如果设置为-1表示无业务低峰。 |
hbase.cold.data.separator.offpeak.start.hour | [-1, 23] | -1 | 业务低峰的开始时间点,为24小时制的整点。在低峰时间段,CDS会消耗更多的资源来加快数据的热转冷。如果设置为-1表示无业务低峰。 |
hbase.compaction.skip.unnecessary.cold.files.enabled | [true, false] | false | 设置major compaction是否跳过冷数据文件。 |
hbase.regionserver.thread.compaction.cold | [1, 20] | 1 | 用于合并冷数据文件的线程数。 |
hbase.regionserver.compaction.cold.check.period | [60000, 2147483647] | 30000 | 用于检查冷文件是否需要合并的周期。 单位:毫秒 |

