一、硬件与操作系统基础优化
vm.swappiness=0),避免内存不足时数据交换至磁盘导致的性能骤降;ulimit -n 65535),满足HBase高并发下的文件句柄需求;net.core.rmem_max=16777216、net.core.wmem_max=16777216),提升网络传输效率;echo 3 > /proc/sys/net/ipv4/tcp_fastopen),减少连接建立时间。二、HBase配置参数精准调整
hbase.regionserver.heapsize),建议设置为物理内存的50%-70%(如32GB内存可设为20GB);hbase.regionserver.global.memstore.size),控制在堆内存的30%-40%(如20GB堆内存设为6GB),避免频繁刷盘;hfile.block.cache.size),读密集型业务设为40%-50%(提升读取缓存命中率),写密集型业务设为20%-30%。hbase.client.autoFlush=false),增大写缓冲区大小(hbase.client.write.buffer,如从默认2MB调整至64MB-256MB),启用批量写入(BufferedMutator),减少RPC调用次数;hbase.regionserver.wal.codec=org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec),平衡数据可靠性与写入速度。hbase.client.scanner.caching,如从默认100调整至500-1000),减少大Scan操作的RPC交互;hfile.block.cache.size),读多写少业务可设为堆内存的40%,提升热点数据读取效率;TieredCompactionPolicy适合读多写少场景),减少HFile文件数量,降低读取时的文件查找开销。三、数据模型与表设计优化
SPLIT参数预先划分Region(如create 'user_table', 'cf1', SPLITS => ['1000', '2000', '3000']),避免后期数据倾斜导致的RegionServer过载,提升写入与读取的并发能力。四、客户端操作优化
BufferedMutator)替代单条Put,批量Get(get(List<Get>))替代单条Get,减少客户端与RegionServer间的RPC连接数,提升吞吐量。get('rowkey', 'cf1:col1'))或列,避免加载不必要的数据,减少网络传输与内存消耗。setCaching(500)),减少RPC调用次数,提升扫描效率。五、集群部署与管理优化
balancer命令(hbase balancer),确保数据与请求均匀分布在各个RegionServer上,避免热点Region导致的性能下降。hbase.log),及时发现并解决性能瓶颈(如Compaction导致的CPU占用过高)。