更新时间:2024-04-29 GMT+08:00

HBase参数配置

操作场景

创建完CloudTable HBase集群后,由于HBase有很多与读写性能相关的配置参数,读写请求负载不同的情况下,用户可以在表格存储服务控制台中多次修改集群HBase配置参数,对集群的性能进行调优。当修改完集群HBase参数后,用户需要重启集群才能生效。

前提条件

只有当集群无运行中的任务时,才能修改参数。

操作步骤

  • 修改CloudTable HBase集群参数需要重启集群,可能会导致业务的中断。
  • 当CloudTable HBase集群重启过程中,不允许修改集群参数。
  1. 登录表格存储服务管理控制台。
  2. 单击管理控制台左上角的,选择区域。
  3. 在左侧导航树,单击集群管理。
  4. 选中需要修改参数的集群,单击对应的集群名称,跳转到该集群基本信息页面。
  5. 在“参数配置”中单击“相关参数”页签,对HBase参数进行修改。

    CloudTable集群当前可以修改的HBase参数请参见HBase参数说明

    1. 选中需要修改的参数,在“参数值”列单击
    2. 在修改框中输入新值,单击,系统提示“参数修改为' xx '成功,请保存本次修改值”,并且修改的参数值后显示红色*。

      如果单击,则取消修改。

      图1 修改HBase参数
    3. 单击参数列表左上方的“保存修改”,弹出“保存修改”对话框。
    4. 在“保存修改”对话框中,确认参数修改信息正确后,勾选“是否立即重启”,然后单击“确定”。
      图2 保存修改
      • 当勾选“是否立即重启”并单击“确定”后,集群将立即重启,重启完成后,修改后的参数才能生效。单击参数列表右上方的,参数列表左上方将显示“新值已应用”。
      • 在“保存修改”对话框中可以先不勾选“是否立即重启”,单击“确定”后,参数列表上方将显示“新值未应用”。此时用户需要自行重启集群,才能使修改的参数值生效。重启集群操作请参见重启集群
      • 如果修改的参数值不正确,可以在“保存修改”对话框中单击“一键还原”,取消修改参数值。

  6. 参数修改完成后,可以单击“修改历史”页签查看参数修改的历史。

    在“修改历史”页签中可以查看如下信息:

    • 参数名:被修改过的参数名。
    • 旧值:修改前的参数值。
    • 新值:修改后的参数值。
    • 修改时间:记录用户修改参数值的时间。

HBase参数说明

CloudTable集群当前可以修改的参数如表1所示。

hbase.regionserver.global.memstore.size和hfile.block.cache.size两个参数值相加不能超过0.8。

表1 HBase参数说明

参数名

参数默认值

单位

参数范围

参考缺省值

参数描述

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的利用率。