开发者
通过HBase参数与JDK调优优化HBase性能的案例分享

通过HBase参数与JDK调优优化HBase性能的案例分享

HBase

发表于 2026/03/03

0

作者|张久同


环境信息

硬件配置

硬件

说明

CPU

2 * 鲲鹏920 7260处理器 @ 2.6GHz 64 cores/64 threads

内存

12*32GB DDR4 2666 MT/s

硬盘

数据盘:2 *12TB SATA HDD

系统盘:2 * 450GB SSD

网络

2 * 10GE


软件配置

软件

版本

OS

openEuler 22.03 LTS SP3

JDK

毕昇JDK 1.8.0_452

HDFS

3.1.1.3.1

ZooKeeper

3.4.6

HBase

2.1.6

YCSB

ycsb-hbase20-binding-0.17.0


环境组网

测试环境由3台RegionServer节点与1台HMaster节点组成。


节点名称

数量(单位:台)

HMaster节点

1

RegionServer节点(RS)

3


测试过程分析

在进行写入业务的压测性能分析时,发现写入量高峰期时,出现了集群中RS节点CPU使用率不均及写入溢出等问题。

性能调优实践

应用层参数调优

应用层通过合理调整HBase相关参数,优化compaction机制,降低资源占用,避免大合并阻塞,增强刷盘能力,从而有效提升HBase的实时写入性能。

详细操作步骤如下:

1、打开“$HBASE_HOME/hbase-site.xml”文件。vi $HBASE_HOME/conf/hbase-site.xml

2、按“i”进入编辑模式,在文件中添加或修改以下参数项以及参数值。

<property>
  <name>hbase.regionserver.thread.compaction.large</name>
  <value>16</value>
</property>
<property>
  <name>hbase.regionserver.thread.compaction.small</name>
  <value>32</value>
</property>
<property>
  <name>hbase.hstore.flusher.count</name>
  <value>84</value>
</property>
<property>
  <name>hbase.ipc.server.max.callqueue.size</name>
  <value>2147483647</value>
</property>
<property>
  <name>hbase.hstore.compactionThreshold</name>
  <value>15</value>
</property>
<property>
  <name>hbase.hstore.compaction.min</name>
  <value>6</value>
</property>
<property>
  <name>hbase.hstore.compaction.max</name>
  <value>10</value>
</property>
<property>
  <name>hbase.hstore.blockingStoreFiles</name>
  <value>1000</value>
</property>
<property>
  <name>hbase.hregion.max.filesize</name>
  <value>64424509440</value>
</property>
<property>
  <name>hbase.bucketcache.ioengine</name>
  <value>offheap</value>
</property>
<property>
  <name>hbase.bucketcache.size</name>
  <value>10240</value>
</property>
<property>
  <name>hbase.regionserver.handler.count</name>
  <value>300</value>
</property>
<property>
  <name>hbase.hstore.compaction.max.size</name>
  <value>1073741824</value>
</property>
<property>
  <name>hbase.ipc.server.callqueue.read.ratio</name>
  <value>0.1</value>
</property>

3、按“Esc”,输入:wq!,按“Enter”保存并退出编辑。

4、重启RegionServer节点。打开浏览器,访问http://<ambari-server-ip>:8080,输入账号密码,登录Ambari UI。单击Restart。选择Restart All Affected。


JVM层调优

JVM层通过优化GC参数,控制GC停顿时间,提升垃圾回收效率,减少对应用写入的干扰,确保系统在高并发场景下的稳定性与响应速度。

详细操作步骤如下:

1、打开浏览器,访问http://<ambari-server-ip>:8080,输入账号密码,登录Ambari UI。

2、在左侧菜单中点击HBase,进入服务页后点击Configs。

3、编辑JVM参数。在配置页面中找到Advanced hbase-env选项卡,找到export HBASE_REGIONSERVER_OPTS参数设置项。修改为包含以下GC参数的完整配置。export HBASE_REGIONSERVER_OPTS="-XX:MaxGCPauseMillis=400 -XX:G1ConcMarkStepDurationMillis=5.0 -XX:InitiatingHeapOccupancyPercent=35 -XX:+G1ParallelFullGC"单击页面底部的Save保存配置。

4、重启RegionServer节点。返回HBase服务页面。单击Restart。选择Restart All Affected。


JDK层调优

JDK层面由原毕昇JDK 1.8-452升级至毕昇融合JDK 1.8-fusion,提升了GC性能和内部函数执行效率,改善CPU资源分配不均问题,增强了集群的整体写入能力和运行稳定性。

详细操作步骤如下:

1、下载bisheng-jdk8u462-b22-fusion-linux-aarch64.tar.gz(地址:  https://mirrors.huaweicloud.com/kunpeng/archive/compiler/bisheng_jdk/bisheng-jdk8u462-b22-fusion-linux-aarch64.tar.gz )到服务器,并解压到标准JDK安装路径,例如:tar -zxvf bisheng-jdk8u462-b22-fusion-linux-aarch64.tar.gz -C /usr/lib/jvm/jdk1.8.0-fusion

2、配置环境变量。打开系统环境变量文件。vi /etc/profile按“i”进入编辑模式,在文件中添加以下内容。export JAVA_HOME=/usr/lib/jvm/jdk1.8.0-fusion/bisheng-jdk8u462-b22-fusion  export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar按“Esc”,输入:wq!,按“Enter”保存并退出编辑。使环境变量生效。source /etc/profile

3、验证JDK版本是否为目标版本。java -version

4、重启RegionServer节点。打开浏览器,访问http://<ambari-server-ip>:8080,输入账号密码,登录Ambari UI。单击Restart。选择Restart All Affected。

调优实践效果

多个测试用例在调优前后的性能对比结果表示,所有用例均通过测试,即能够正常执行且调优后性能有所提升。测试用例包括YCSB和PE系列的读写测试,各项指标(如TPS)均有所提高,提升比例从10.00%~37.33%不等,整体看来调优效果有提升。

调优前后的性能对比结果

测试用例

提升比例

YCSB-hash写

11.52%

YCSB-scan读

34.78%

YCSB-顺序写

18.85%

YCSB-read读

37.33%

PE-随机写

17.27%

PE-随机读

16.45%

PE-顺序写

45.17%

PE-顺序读

10.00%


调优效果

经过调优后,测试集群CPU使用均衡,运行稳定,整体性能得到提升。具体表现如下:

  • 标准测试结果:YCSB测试中,调优后性能平均提升了25.62%。
  • PE测试中,调优后性能平均提升了22.22%。

结论与验证

本次测试验证了项目的大数据平台在鲲鹏环境下的可适配性,并证明在优化方案支持下,平台能够稳定运行并达成预期性能目标。

本页内容