Debian上HBase性能调优技巧
/etc/sysctl.conf优化内核参数,如增加文件描述符限制(fs.file-max = 655360)、调整TCP窗口大小(net.core.rmem_max = 16777216、net.core.wmem_max = 16777216),提升系统并发处理能力。hbase-site.xml中的内存参数,平衡读写性能:
hbase.regionserver.heapsize:RegionServer堆内存(建议≥32GB);hbase.regionserver.blockcache.size:BlockCache大小(读多写少场景设为堆内存的40%-70%,如8g);hbase.regionserver.memstore.size:MemStore大小(设为堆内存的10%-20%,如2g,避免频繁flush)。hbase.hregion.max.filesize:Region最大文件大小(推荐5GB-20GB,如10g,避免Region过大导致负载不均衡);hbase.regionserver.handler.count:RegionServer处理请求的线程数(推荐100-200,根据并发量调整)。<property name="hbase.regionserver.compression.codec">snappy</property>
ROW或ROWCOL类型),快速过滤不存在的HFile,减少磁盘扫描:HColumnDescriptor columnDescriptor = new HColumnDescriptor("cf");
columnDescriptor.setBloomFilterType(BloomType.ROW);
MD5(用户ID).substring(0,8) + "_" + 用户ID),确保数据均匀分布在不同Region。hbase shell中的create 'table_name', {NAME => 'cf', VERSIONS => 1}, SPLITS => ['10', '20', '30']),避免数据写入时Region分裂导致的性能下降。put(List<Put>)、get(List<Get>)批量接口,减少客户端与RegionServer之间的RPC调用次数(提升吞吐量)。Scan.setCaching()值(如500或1000),减少RPC次数(避免逐行读取)。hbase.regionserver.optionallogflushinterval设为1000ms),减少写操作的等待时间(提升写入性能,但可能增加数据丢失风险,需根据业务需求权衡)。-Xms32g -Xmx32g),避免堆内存频繁扩容。-XX:+UseConcMarkSweepGC),减少停顿时间;-XX:+UseG1GC),提升吞吐量(需调整-XX:MaxGCPauseMillis等参数)。hbase.hregion.memstore.mslab.enabled=true,默认开启),减少MemStore的内存碎片化,降低Full GC频率。16010)监控集群状态(RegionServer负载、读写延迟、队列长度);通过hbase shell命令(如status、hfileinfo)查看表与Region信息。major_compact(echo "major_compact 'table_name'" | hbase shell),合并小文件,减少StoreFile数量;