HBase读写性能 Debian 优化策略
一 操作系统与JVM基线
二 HBase表与RowKey设计
三 写入路径优化
四 读取路径优化
五 关键参数与示例配置
| 维度 | 参数 | 建议与说明 |
|---|---|---|
| 内存与缓存 | hfile.block.cache.size | 读多写少可上调(如0.3–0.4),与MemStore上限之和建议小于0.8 |
| hbase.regionserver.global.memstore.size | 写多可调大(如0.4–0.5),配合lowerLimit使用 | |
| hbase.hregion.memstore.flush.size | 视负载从128MB调至256MB以减少flush次数 | |
| hbase.client.write.buffer | 关闭autoFlush后建议5MB左右,减少RPC | |
| RPC与队列 | hbase.regionserver.handler.count | 依据QPS/CPU调优,避免过大导致OOM/GC |
| 队列隔离 | 启用写/Get/Scan队列隔离,降低互相影响 | |
| Region与分裂 | hbase.hregion.max.filesize | 默认10GB;MR/大Region场景可适当增大以缩短Map时间 |
| hbase.hregion.majorcompaction | 生产建议禁用自动Major(设为0),低峰手动执行 | |
| hbase.hstore.compaction.* | 结合小文件数量与I/O能力调节min/max/size/ratio | |
| hbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily | 默认32,BulkLoad大量HFile时可适度上调 | |
| HDFS与短路读 | dfs.datanode.max.transfer.threads | 高并发建议≥4096 |
| dfs.image.transfer.timeout | 长时延网络可适当增大(默认60s) | |
| Short-Circuit Local Read / Hedged Read | 开启以降低读延迟与长尾 |