一、硬件配置优化
hbase.regionserver.global.memstore.size参数控制MemStore大小(通常设为堆内存的10%-20%),避免频繁刷写磁盘。二、系统与JVM调优
ulimit -n 65535;sysctl -w net.core.rmem_max=16777216、sysctl -w net.core.wmem_max=16777216;echo 3 > /proc/sys/net/ipv4/tcp_fastopen。-XX:+UseG1GC),并通过-XX:MaxGCPauseMillis=200设置最大GC停顿时间(目标200ms以内),减少GC对查询的影响。三、HBase核心配置优化
hbase.hregion.max.filesize参数设置Region最大大小(默认10GB),建议根据数据访问模式调整(如读多写少可设为20GB),避免单个Region过大导致查询变慢。hbase.hregion.memstore.flush.size,默认128MB),增大该值可减少刷写次数,但需平衡内存使用;hbase.regionserver.wal.codec=org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec),减少WAL文件大小,提升写入性能。hfile.block.cache.size,默认堆内存的25%),建议设为40%(读多写少场景),提升热点数据的缓存命中率。TieredCompactionPolicy适合读多写少场景),并通过hbase.hstore.compaction.min(最小Compaction文件数)、hbase.hstore.compaction.max(最大Compaction文件数)参数控制Compaction频率,减少HFile数量,提升查询效率。四、数据模型设计优化
SPLIT参数进行预分区(如create 'table_name', 'cf', SPLITS => ['1000', '2000', '3000']),避免后期数据倾斜导致的热点问题。五、查询优化技巧
SingleColumnValueFilter、PrefixFilter),减少返回的结果集大小(如scan.setFilter(new SingleColumnValueFilter(Bytes.toBytes('cf'), Bytes.toBytes('col'), CompareOperator.EQUAL, Bytes.toBytes('value'))))。getList)和批量Put(BufferedMutator)接口,减少客户端与RegionServer之间的RPC调用次数(如BufferedMutatorParams params = new BufferedMutatorParams(TableName.valueOf("table_name")).writeBufferSize(5 * 1024 * 1024);)。scan.addFamily(Bytes.toBytes('cf')))或列(scan.addColumn(Bytes.toBytes('cf'), Bytes.toBytes('col'))),避免读取不必要的数据,减少网络IO。scan.setCacheBlocks(false),避免缓存占用实时业务热点数据的内存。Endpoint Coprocessor实现聚合计算、Observer Coprocessor拦截请求),减少客户端与RegionServer之间的网络传输(如public class MyEndpoint extends BaseEndpointCoprocessor implements MyProtocol { ... })。六、监控与迭代优化
hbase-regionserver.log),查找慢查询、GC停顿等问题;通过压力测试工具(如Apache JMeter、HBase Performance Evaluation Tool)模拟真实业务场景,评估优化效果并调整配置(如逐步增加Region大小、调整BlockCache占比)。