Debian上HBase读取优化技巧
net.core.rmem_max/net.core.wmem_max至16MB以上),提升网络传输效率,减少RPC调用延迟。hbase.hregion.max.filesize(建议设置为10GB-20GB)预先定义Region数量,避免数据增长导致Region分裂,减少数据倾斜和热点问题。hfile.block.cache.size(默认0.25),根据读写比例适当增大(读多写少场景可设为0.4-0.5),提升热数据命中率;若使用堆外内存(offheap),可进一步提高缓存效率。TieredCompactionPolicy,适合读多写少场景),减少小文件数量;避免在业务高峰期执行Major Compaction(合并所有HFile,IO压力大),建议在低峰期(如夜间)执行。scan.setCaching(int caching)(默认1,建议设置为100-1000),增大单次RPC返回的数据量,减少RPC调用次数(如扫描10万条数据,caching=1000只需100次RPC,而非10万次)。hbase.hregion.bloom.block.enabled=true),减少无效磁盘读取(如查询不存在的RowKey时,直接通过Bloom Filter判断,无需访问HFile)。table.get(List<Get> gets))替代单条Get,减少RPC次数(如100条Get请求合并为1次批量请求,降低网络开销);批量Put同理(table.put(List<Put> puts))。scan.addFamily(Bytes.toBytes("cf1"))或scan.addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("col1"))),减少不必要的IO(避免读取整行数据)。scan.setBlockCache(false),避免占用BlockCache资源(影响在线查询性能)。scan.setTimeRange()(限制时间范围)、scan.setStartRow()/scan.setStopRow()(限制RowKey范围),缩小扫描范围,减少数据读取量。hbase.master.loadbalancer.enabled=true),将Region均匀分布在各个RegionServer上,避免单点压力过大(如某台RegionServer负载过高导致读取延迟)。-Xms6G -Xmx6G,避免频繁GC);选择低延迟GC策略(如G1GC,-XX:+UseG1GC),减少Full GC对读取性能的影响(Full GC会导致RegionServer暂停服务,影响请求响应)。echo never > /sys/kernel/mm/transparent_hugepage/enabled关闭THP(需重启生效)。