Debian系统下HBase性能调优要点
一 操作系统与JVM基础
* soft nofile 1024000
* hard nofile 1024000
* soft nproc 1024000
* hard nproc 1024000
vm.swappiness=0,并对数据盘设置较大预读(如blockdev --setra 32768 /dev/sdX)。CMSInitiatingOccupancyFraction以控制Full GC风险。二 HBase内存与缓存
hbase.regionserver.global.memstore.size≈0.5),降低BlockCache(如hfile.block.cache.size≈0.25)。0.4~0.5),降低MemStore(如0.3)。HBASE_HEAPSIZE > 20G时优先考虑**BucketCache(堆外)**以缓解GC压力与提升读缓存容量。
hbase.bucketcache.ioengine=offheap,并配置hbase.bucketcache.size(如2G)。三 存储I/O与压缩
Exploring策略;大表分区合并可用Stripe;时序数据(如监控/日志)推荐FIFO并配合hbase.hstore.compaction.min.size等参数控制合并门槛。VERSIONS(如仅需最新值可设为1),降低StoreFile版本数与合并压力。Put(List)批量提交或BulkLoad直接生成HFile,显著降低WAL与写放大(BulkLoad通常不走WAL,需业务允许)。四 表设计与RowKey
Long.MAX_VALUE - timestamp)或将散列前缀混入RowKey,实现均匀分布与局部性。五 并发、超时与负载均衡
hbase.regionserver.handler.count,避免过高导致线程切换与内存压力;压测时结合RPC级日志观察单次请求内存与GC,逐步收敛到合理区间。zookeeper.session.timeout降低可加速故障转移,但过低会在网络抖动时引发不必要failover;在线服务需结合网络质量与运维能力权衡。