HBase参数配置
操作场景
创建完CloudTable HBase集群后,由于HBase有很多与读写性能相关的配置参数,读写请求负载不同的情况下,用户可以在表格存储服务控制台中多次修改集群HBase配置参数,对集群的性能进行调优。当修改完集群HBase参数后,用户需要重启集群才能生效。
前提条件
只有当集群无运行中的任务时,才能修改参数。
操作步骤
- 修改CloudTable HBase集群参数需要重启集群,可能会导致业务的中断。
- 当CloudTable HBase集群重启过程中,不允许修改集群参数。
- 登录表格存储服务管理控制台。
- 单击管理控制台左上角的,选择区域。
- 在左侧导航树,单击集群管理。
- 选中需要修改参数的集群,单击对应的集群名称,跳转到该集群基本信息页面。
- 在“参数配置”中单击“参数配置”页签,对HBase参数进行修改。
CloudTable集群当前可以修改的HBase参数请参见HBase参数说明。
- 选中需要修改的参数,在“参数值”列单击。
- 在修改框中输入新值,单击,系统提示“参数修改为xx成功,请保存本次修改值”,并且修改的参数值后显示红色*。
如果单击,则取消修改。
图1 修改HBase参数
- 单击参数列表左上方的“保存修改”,弹出“保存修改”对话框。
- 在“保存修改”对话框中,确认参数修改信息正确后,勾选“是否立即重启”,然后单击“确定”。
图2 保存修改
- 当勾选“是否立即重启”并单击“确定”后,集群将立即重启,重启完成后,修改后的参数才能生效。单击参数列表右上方的,参数列表左上方将显示“新值已应用”。
- 在“保存修改”对话框中可以先不勾选“是否立即重启”,单击“确定”后,参数列表上方将显示“新值未应用”。此时用户需要自行重启集群,才能使修改的参数值生效。重启集群操作请参见重启集群。
- 如果修改的参数值不正确,可以在“保存修改”对话框中单击“一键还原”,取消修改参数值。
- 参数修改完成后,可以单击“修改历史”页签查看参数修改的历史。
在“修改历史”页签中可以查看如下信息:
- 参数名:被修改过的参数名。
- 旧值:修改前的参数值。
- 新值:修改后的参数值。
- 修改时间:记录用户修改参数值的时间。
HBase参数说明
CloudTable集群当前可以修改的参数如表1所示。
hbase.regionserver.global.memstore.size和hfile.block.cache.size两个参数值相加不能超过0.8。
参数名 |
参数默认值 |
单位 |
参数范围 |
参考缺省值 |
参数描述 |
---|---|---|---|---|---|
hbase.regionserver.thread.compaction.small |
1 |
-- |
[1,20] |
1 |
HFile compaction线程数,在put高负载情况下可以适当调大。 |
hbase.regionserver.global.memstore.size |
0.4 |
-- |
(0,0.8) |
0.4 |
建议设置为“hbase.hregion.memstore.flush.size * 写活跃region数 / RegionServer GC -Xmx”。默认值为“0.4”,表示使用RegionServer GC -Xmx的40%。 |
hbase.hstore.blockingStoreFiles |
60 |
-- |
[1,2147483647] |
60 |
当列簇的HFile数达到该阈值,阻塞该region的所有操作,直到compaction完成,在put高负载场景下可以适当调大。 |
hbase.client.scanner.timeout.period |
60000 |
毫秒 |
[1,2147483647] |
60000 |
客户端和RegionServer端参数,表示scan租约的时间,建议设置为60000ms的整数倍,在读高负载情况下可以适当调大。单位:毫秒。 |
hfile.block.cache.size |
0.2 |
-- |
(0,0.8) |
0.2 |
数据缓存所占的RegionServer GC -Xmx百分比,在读高负载情况下可以适当调大以增大缓存命中率以提高性能。默认值为“0.2”,表示使用RegionServer GC -Xmx的20%。 |
hbase.regionserver.handler.count |
100 |
-- |
[1,300] |
100 |
RegionServer上的RPC服务器实例数,建议设置为100 ~ 300之间。 |
hbase.regionserver.metahandler.count |
50 |
-- |
[1,100] |
50 |
RegionServer中处理优先请求的程序实例的数量,建议设置为20 ~ 100之间。 |
hbase.hstore.flusher.count |
2 |
-- |
[1,10] |
2 |
memstore的flush线程数,在put高负载场景下可以适当调大。 |
hbase.ipc.server.callqueue.read.ratio |
0.5 |
-- |
[0,1] |
0.5 |
该配置项用于不同负载模型时,控制读和写操作的RPC队列数量的比例。取值范围为0到1.0,默认值为0.5。 0表示所有RPC队列不区分读和写操作; 小于0.5表示读操作负载少于写操作负载; 0.5表示读操作负载与写操作负载相同; 大于0.5表示读操作负载大于写操作负载; 1.0表示除了一个RPC队列外,其余所有RPC队列都用于读操作。 |
hbase.regionserver.hotregion.handler.count |
66 |
-- |
[1,65535] |
66 |
在RegionServer上启动的用于热点Region的RPC侦听器实例数。 |
hbase.ipc.server.hotregion.max.callqueue.length |
330 |
-- |
[1,65535] |
330 |
RegionServer处理热点Region的请求队列长度最大值,当接收到新的请求时,会检查是否会导致队列长度超过此阈值,如果超过阈值,会直接丢弃此请求。 |
hbase.metric.controller.analysis.period |
60 |
秒 |
[1,2147483647] |
60 |
MetricController服务热点分析周期,单位为秒。 |
hbase.metric.controller.analysis.threads.max |
10 |
-- |
[1,100] |
10 |
热点分析任务线程池最大线程数。 |
hbase.metric.controller.collect.threads.max |
16 |
-- |
[1,100] |
16 |
热点分析流量收集线程池最大线程数。 |
hbase.metric.regionserver.hotspot.threshold |
20000 |
-- |
[1,2147483647] |
20000 |
单RegionServer热点阈值,单位为每秒请求数。 |
hbase.metric.region.hotspot.threshold |
10000 |
-- |
[1,2147483647] |
10000 |
单Region热点阈值,单位为每秒请求数。 |
hbase.hotspot.enable |
false |
-- |
[true,false] |
false |
是否开启热点自愈功能,true为开启,false为关闭。开启后如有出现访问热点,会自动处理热点。 |
hbase.tries.cache.enabled |
false |
-- |
[true,false] |
false |
设置为true时,使用LoudsTriesLruBlockCache缓存索引块和数据块。 |
hbase.write.tries |
false |
-- |
[true,false] |
false |
设置为true时,开启succinct tries特性,它将使用一种新的数据结构来提升index block的利用率。 |