Linux 下 HBase 性能优化与运维
- 系统层面优化
文件描述符限制:HBase 需要大量文件描述符,修改/etc/security/limits.conf:
- soft nofile 65535
- hard nofile 65535
- soft nproc 65535
- hard nproc 65535
生效:ulimit -n 65535(临时),重启会话永久生效。
禁用 swap:避免内存交换导致性能下降:
swapoff -a # 临时禁用
永久禁用:注释/etc/fstab中swap分区行
磁盘 IO 优化:使用 SSD 或 RAID 阵列,挂载时添加noatime(禁用文件访问时间记录):
/dev/sdb1 /data/hbase ext4 defaults,noatime 0 0
2. HBase 配置优化
Region 大小:默认 10GB,根据业务调整hbase-site.xml:
xml
缓存配置:调整 RegionServer 堆内存(hbase-env.sh),建议堆内存不超过 32GB(避免 JVM GC 问题):
export HBASE_HEAPSIZE=16G # RegionServer堆内存
export HBASE_MASTER_HEAPSIZE=4G # Master堆内存
预分区:创建表时预分区,避免热点和后期频繁分裂:
create 't1', 'f1', {SPLITS => ['1', '2', '3', '4', '5']}
3. 常见问题排查(Linux 环境)
RegionServer 宕机:
查看日志:grep "ERROR" $HBASE_HOME/logs/hbase-xxx-regionserver-xxx.log;
检查内存:free -h(是否 OOM),查看 OOM 日志:grep "OutOfMemoryError" logs/*;
检查 ZK 连接:zkCli.sh -server zk-node:2181,查看/hbase节点是否正常。
写入性能低:
检查磁盘 IO:iostat -x 1(% util 接近 100% 说明 IO 瓶颈);
调整写入缓冲区:hbase-site.xml中增大hbase.hregion.memstore.flush.size(默认 128MB);
开启批量写入:客户端使用putList批量提交。
浙公网安备 33010602011771号