硬件和系统配置优化
noatime或relatime选项(避免频繁更新文件访问时间,减少磁盘I/O)。echo never > /sys/kernel/mm/transparent_hugepage/enabled命令关闭,并在/etc/rc.local中添加开机自启,减少内存碎片化。HBase配置参数优化
hbase-site.xml,增大RegionServer堆内存(如-Xmx8g -Xms8g),合理划分BlockCache(缓存热点数据,建议占堆内存的30%-50%,hfile.block.cache.size=0.4)和MemStore(写入缓冲区,建议占堆内存的20%-30%,hbase.regionserver.global.memstore.size=0.3)大小,平衡读写性能。hbase.hregion.max.filesize设置Region大小(建议10GB-20GB,过大导致分裂延迟,过小增加管理开销);增加hbase.regionserver.handler.count(默认30,建议调整为100-200,提升并发处理能力)。hbase.hregion.compress.algo=snappy),减少数据存储空间和网络传输开销(压缩会增加少量CPU开销,但整体提升吞吐量);通过BufferedMutator实现批量写入(减少RPC调用次数),设置Scan.setCaching(500)(增大Scan缓存,减少客户端与RegionServer的交互次数)。数据模型与表设计优化
Long.MAX_VALUE - timestamp)或哈希前缀(如MD5(userId).substring(0,4)+userId),使数据均匀分布在不同Region,防止热点问题。preSplit参数预先划分Region(如hbase shell> create 'table_name', 'cf', {NUMREGIONS => 10, SPLITALGO => 'HexStringSplit'}),避免数据集中写入单个Region导致的负载不均。JVM与GC调优
-XX:+UseParNewGC -XX:+UseConcMarkSweepGC(CMS,低延迟);堆内存>8GB时,使用-XX:+UseG1GC(G1,适合大内存,自动调整垃圾回收区域)。设置合理的GC停顿时间目标(如-XX:MaxGCPauseMillis=200),减少Full GC对性能的影响。读写操作优化
put(List<Put>)、get(List<Get>)等批量接口,将多个读写请求合并为一个RPC调用,降低网络开销;设置Scan.setCacheBlocks(true)(缓存Block,提升重复Scan性能)和Scan.setCaching(500)(每次RPC返回的行数,根据数据量调整)。Put.setWriteToWAL(false)),减少磁盘IO;若需保证数据安全,可调整WAL刷写频率(hbase.regionserver.optionallogflushinterval=1000,单位毫秒,默认1秒,增大间隔可减少刷写次数,但增加数据丢失风险)。监控与持续调优
http://regionserver:16010)监控RegionServer的读写延迟、QPS、堆内存使用等指标;集成Prometheus+Grafana构建可视化监控体系,跟踪集群性能趋势,及时发现瓶颈(如RegionServer内存不足、磁盘IO过高)。