Ubuntu 上 HBase 性能调优要点
一 系统层优化
sudo swapoff -a 并在 /etc/fstab 注释 swap 行),避免抖动;适度降低 vm.swappiness(如设为 0)。hbase soft/hard nofile 32768,hbase soft/hard nproc 32000),并在 /etc/pam.d/common-session 加入 session required pam_limits.so 使配置生效;必要时提高 fs.file-max。二 JVM 与堆内存调优
-XX:+UseG1GC -XX:MaxGCPauseMillis=100~150 -XX:G1HeapRegionSize=16~32M,并添加 -XX:+DisableExplicitGC。hbase.regionserver.global.memstore.size=0.5),读密集可调高 BlockCache(如 hfile.block.cache.size=0.6);建议两者合计不超过堆的 ~70%,留出空间给其它对象与 GC。hbase.bucketcache.ioengine=offheap、hbase.bucketcache.size=8–24G),降低堆 GC 压力。hbase.hregion.memstore.mslab.chunksize=4MB)减少 MemStore 碎片与晋升压力。三 HBase 配置与表结构优化
setCacheBlocks(false);查询明确 family:qualifier,减少传输与反序列化。SPLITS => ['10','20','30']);列族数量 ≤3,降低管理开销与 Store 数量。alter 't', NAME => 'cf', COMPRESSION => 'SNAPPY'
create 't', 'cf', SPLITS => ['10','20','30']
hbase.regionserver.handler.count=16
hbase.client.scanner.caching=500
hbase.regionserver.global.memstore.size=0.4
hfile.block.cache.size=0.4
hbase.hstore.compactionThreshold=3
hbase.hstore.compaction.max=10
hbase.hregion.majorcompaction=0
hbase.offpeak.start.hour=2
hbase.offpeak.end.hour=6
说明:写密集可把 memstore.size 调至 0.5、读密集把 block.cache.size 调至 0.6;将 Major Compaction 关闭并放到业务低峰定时执行。四 存储与 Compaction 策略
min=3, max=10),减少频繁小合并;禁用自动 Major,在凌晨低峰手动执行或按 offpeak 窗口执行,降低峰值 I/O 与抖动。五 监控 压测与上线流程