Debian 上 HBase 内存管理实践
一 内存结构与关键约束
二 堆大小与 JVM 参数设置
export HBASE_HEAPSIZE=16384(单位 MB,示例为 16GB)。export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -Xms2g -Xmx2g"export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -Xms8g -Xmx8g"-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70-XX:+UseG1GC -XX:MaxGCPauseMillis=100-Xmx/-Xms,仅设置 HBASE_HEAPSIZE 也会生效,但分进程设置更可控。三 读多写少与写多读少配置模板
<property><name>hfile.block.cache.size</name><value>0.30</value></property><property><name>hbase.regionserver.global.memstore.size</name><value>0.40</value></property><property><name>hbase.regionserver.global.memstore.lowerLimit</name><value>0.38</value></property>0.30 + 0.40 = 0.70 < 0.80(满足硬约束)<property><name>hbase.bucketcache.ioengine</name><value>offheap</value></property><property><name>hbase.bucketcache.size</name><value>24576</value></property>(单位 MB,示例 24GB)<property><name>hbase.bucketcache.percentage.in.combinedcache</name><value>0.90</value></property><property><name>hbase.regionserver.global.memstore.size</name><value>0.66</value></property><property><name>hbase.regionserver.global.memstore.lowerLimit</name><value>0.60</value></property><property><name>hfile.block.cache.size</name><value>0.10</value></property>(必须小于 0.80 − 0.66 = 0.14)LRU(堆内元数据) + MemStore = 0.10×8GB + 0.66×8GB = 6.08GB;6.08/8GB = 76% < 80%四 监控与常见调优要点
jps 查看 HMaster/HRegionServer;jstat -gc <pid> 观察 GC 与晋升;jmap -heap <pid> 查看堆各代使用。hbase shell 执行 status 'detailed' 查看 MemStore/BlockCache 使用;Web UI(Master 16010、RS 16030)关注 StoreFile 数量、Flush/Compaction、BlockCache 命中率。hbase.hregion.compacting.memstore.type)。hbase.memstore.flush.size(默认 10MB),开启 Snappy 等压缩降低 IO(权衡 CPU)。