通过HBase参数与JDK调优优化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%。
结论与验证
本次测试验证了项目的大数据平台在鲲鹏环境下的可适配性,并证明在优化方案支持下,平台能够稳定运行并达成预期性能目标。


