一、硬件配置优化
hbase.regionserver.global.memstore.size(控制MemStore总大小,默认0.4,即RegionServer堆内存的40%)和hfile.block.cache.size(控制BlockCache大小,建议设为堆内存的40%,读多写少场景可提高至50%)参数,平衡内存使用与性能。二、操作系统调优
ulimit -n 65535)。sysctl命令增大TCP缓冲区大小(如sysctl -w net.core.rmem_max=16777216、sysctl -w net.core.wmem_max=16777216),提升网络传输效率。echo 3 > /proc/sys/net/ipv4/tcp_fastopen,减少TCP连接建立时间。三、JVM调优
-XX:+UseG1GC参数启用G1GC,并调整-XX:MaxGCPauseMillis=200(目标最大GC停顿时间),减少GC对性能的影响。四、HBase服务器端配置优化
hbase.hregion.max.filesize参数设置Region的最大大小(建议10GB-20GB),避免单个Region过大导致查询变慢。hbase.hregion.memstore.flush.size(如设为256MB,HDFS块大小的整数倍),减少MemStore频繁刷新;根据业务需求调整WAL持久化等级(如hbase.regionserver.hlog.blocksize),平衡数据一致性与写入性能。TieredCompactionPolicy),并通过hbase.hstore.compaction.min(触发Compaction的最小HFile数,默认3)、hbase.hstore.compaction.max(最大并发Compaction数,默认10)等参数控制Compaction频率,减少小文件数量。hfile.block.cache.size(如设为堆内存的40%),提升读缓存命中率;对于读多写少场景,可启用offheap BlockCache(HBase 2.0+)进一步提升性能。hbase.scan.cacheblock(Scan缓存大小,默认100,建议设为500-1000),减少RPC交互次数;对离线批量读取禁用缓存(setCacheBlocks(false)),避免占用实时业务缓存。五、数据模型设计优化
cf1、cf2),减少I/O开销。hbase.hcolumn.max.versions限制列的最大版本数(如设为1,仅保留最新数据);使用hbase.hcolumn.ttl设置数据生命周期(如7天),自动清理过期数据,减少存储压力。六、客户端优化
put(List<Put>))和批量Get(get(List<Get>))接口,减少客户端与RegionServer之间的RPC调用次数,提高吞吐量。scan.addFamily(Bytes.toBytes("cf1")))或列(如scan.addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("col1"))),避免检索不必要的数据。setCacheBlocks(false),避免缓存占用实时业务热点数据。七、集群扩展与监控
preSplit参数预分区(如create 'table1', 'cf1', SPLITS => ['1000', '2000', '3000']),避免后期数据倾斜导致的热点问题。SlowLog),及时调整配置参数。