CentOS优化HBase存储的多维度策略
vm.swappiness=0):强制系统优先使用物理内存,避免内存溢出时频繁读写磁盘;blockdev --setra 32768 /dev/sda命令将磁盘预读缓存设置为32KB(默认通常为128KB),提升顺序读取性能。202509020001反转为100020952025),使RowKey均匀分布在不同Region;cf1、cf2);preSpliKeys参数预先分割Region(如使用HexStringSplit工具生成16个初始Region),避免后续数据增长导致的Region自动分裂,提升写入负载均衡能力;hbase.hcolumn.max.versions=3,仅保留最近3个版本),减少历史数据占用;对临时数据设置TTL(如hbase.hcolumn.ttl=86400,1天后自动删除),释放存储空间。hbase.regionserver.heapsize),建议设置为服务器总内存的70%左右(如32GB内存设为24GB),避免过大堆内存导致GC停顿;增加RPC处理线程数(hbase.regionserver.handler.count),默认30,可根据客户端请求数调整至50-100(读写密集型场景);hbase.regionserver.blockcache.size=0.4),提升读性能;hbase.hregion.memstore.size=0.4),避免频繁刷写磁盘;hbase.hregion.compress.codec=SNAPPY),减少磁盘存储空间占用(通常可压缩3-5倍)和网络传输带宽,对读写性能影响较小(Snappy侧重速度,LZ4兼顾速度与压缩比);hbase.client.autoFlush=false),增大写入缓冲区大小(hbase.client.write.buffer=1048576,1MB),启用批量写入(hbase.client.batch.size=1000),减少RPC调用次数,提升写入吞吐量。hbase.client.scanner.caching=500,默认100),减少客户端与RegionServer之间的RPC次数(如扫描1万行数据,缓存500行时需20次RPC,缓存500行时需20次,显著降低延迟);get(List<Get> gets)接口替代单条Get,减少网络往返次数(如批量获取100条数据,仅需1次RPC,而非100次);scan.addFamily(Bytes.toBytes("cf1")))或列(如scan.addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("col1"))),避免检索不必要的数据,降低IO开销;scan.setCacheBlocks(false),避免缓存热点数据影响实时业务的读性能。dfs.support.append=true,默认true),支持HBase的数据持久化;增加DataNode最大文件打开数(dfs.datanode.max.transfer.threads=4096,默认4096),应对HBase大量并发文件操作;优化数据传输超时时间(dfs.image.transfer.timeout=600000,默认60000ms),避免因网络延迟导致操作失败;hbase.hstore.compactionThreshold=3,默认3个HFile触发),减少不必要的合并;设置Major Compaction时间窗口(如hbase.hregion.majorcompaction=86400000,每天凌晨执行),避免在业务高峰期进行(Major Compaction会消耗大量IO和CPU资源);http://regionserver:16010)或第三方工具(如Ganglia、Prometheus)监控集群指标(如RegionServer的读延迟、写吞吐量、内存使用率);定期执行Compaction和Split操作,清理过期数据(通过hbase shell的major_compact命令手动触发,或设置自动策略)。