HBase在Ubuntu上的读写性能提升策略
vm.swappiness设为10以下,减少交换分区使用),提升磁盘IO效率。JAVA_HOME、HBASE_HOME、PATH)。MD5(原始RowKey).substring(0,8) + 原始RowKey)或哈希取模(如原始RowKey.hashCode() % 10 + "_" + 原始RowKey)策略,使数据均匀分布在不同Region,解决热点问题。hbase shell的create命令或Java API创建分区(如hbase shell> create 'user_table', 'cf', SPLITS => ['1000', '2000', '3000']),避免后续自动分裂导致的性能波动。-Xmx3200m -Xms3200m(避免频繁GC);在hbase-env.sh中设置HBASE_HEAPSIZE环境变量。hbase.regionserver.global.blockcache.size=0.5);hbase.regionserver.global.memstore.size=0.4);Table.batch()方法(Java API)或put 'table', [{'row'=>'row1', 'cf:col'=>'value'}], {'batch'=>1000}(Shell)进行批量写入,减少RPC调用次数;读取时设置scan.setCaching(500)(每次从服务器获取500行),减少网络往返次数。hbase-site.xml中设置hbase.regionserver.optionallogflushinterval=1000(每1秒刷新一次WAL),提升写入吞吐量(注意:可能丢失少量未刷盘数据,适用于允许一定数据丢失的场景)。get 'table', 'row1', {COLUMN => ['cf:col1', 'cf:col2']}),避免扫描整行数据,减少IO开销。hbase-site.xml中设置hbase.hfile.compression=SNAPPY,或在建表时指定列族压缩(如HColumnDescriptor columnDescriptor = new HColumnDescriptor("cf"); columnDescriptor.setCompressionType(Compression.Algorithm.SNAPPY);)。columnDescriptor.setBlockSize(128*1024)设置。hbase.hstore.compactionThreshold=5(当Store中文件数≥5时触发Minor Compaction)、hbase.hstore.blockingStoreFiles=20(当文件数≥20时触发Major Compaction);定期执行echo "major_compact 'table_name'" | hbase shell手动触发Major Compaction(清理过期数据)。hbase.hregion.max.filesize=20G),过大导致单RegionServer负载过高,过小增加管理开销。hbase.regionserver.handler.count(默认10),根据请求量增大(如1000 QPS以上设为150-200),提升并发处理能力(注意:过多线程会增加内存消耗)。balancer命令(hbase balancer)手动触发均衡,或在hbase-site.xml中设置hbase.master.loadbalancer.class=org.apache.hadoop.hbase.master.StochasticLoadBalancer(使用随机均衡策略)。http://regionserver:16010)监控RegionServer的堆内存、GC情况、请求延迟等指标;结合第三方工具(如Grafana+Prometheus)监控集群的整体性能(如磁盘IO、网络带宽)。/var/log/hbase/regionserver.log),分析慢查询(如SlowQueryFilter)、Full GC等问题,针对性调整配置(如增大BlockCache、优化RowKey)。