在 Linux 上调整 HBase 参数,通常是通过修改 HBase 的配置文件,并结合集群管理命令来完成。下面按常见场景 + 实操步骤给你一个清晰说明。
HBase 的配置一般在:
$HBASE_HOME/conf/
核心文件:
| 文件 | 作用 |
|---|---|
hbase-site.xml |
最重要,HBase 运行时参数 |
hbase-env.sh |
JVM 参数、环境变量 |
hbase-default.xml |
默认参数(不建议直接改) |
log4j.properties |
日志级别 |
编辑:
vi $HBASE_HOME/conf/hbase-env.sh
示例:
export HBASE_REGIONSERVER_OPTS="-Xms8g -Xmx8g -XX:+UseG1GC"
✅ 常用:
vi $HBASE_HOME/conf/hbase-site.xml
(1)Region 大小
<property>
<name>hbase.hregion.max.filesize</name>
<value>10737418240</value> <!-- 10GB -->
</property>
(2)MemStore 刷新阈值
<property>
<name>hbase.hregion.memstore.flush.size</name>
<value>134217728</value> <!-- 128MB -->
</property>
(3)WAL 相关
<property>
<name>hbase.wal.provider</name>
<value>asyncfs</value>
</property>
(4)Handler 数量(并发)
<property>
<name>hbase.regionserver.handler.count</name>
<value>60</value>
</property>
stop-hbase.sh
start-hbase.sh
$HBASE_HOME/bin/stop-hbase.sh
$HBASE_HOME/bin/start-hbase.sh
⚠️ 部分参数(如 Region 分裂策略)重启才生效
hbase shell
示例:
hbase> alter 'mytable', {NAME => 'cf', TTL => '86400'}
hbase> set_sysprop 'hbase.regionserver.handler.count', '80'
⚠️ 不是所有参数都支持
http://regionserver-ip:16030/conf
hbase> get 'hbase:meta', 'tableName'
ps -ef | grep regionserver
jinfo <pid> | grep hbase
| 场景 | 建议 |
|---|---|
| 写入慢 | 增大 MemStore、WAL 异步 |
| 读取慢 | 增加 BlockCache、Handler |
| Region 过多 | 增大 max.filesize |
| GC 频繁 | 换 G1GC、减少堆内存 |
你可以告诉我:
我可以直接给你针对性参数模板。