HBase在Debian上的性能优化策略
echo never > /sys/kernel/mm/transparent_hugepage/enabled和echo never > /sys/kernel/mm/transparent_hugepage/defrag,并在/etc/rc.local中添加上述命令(重启后生效),避免内存碎片化增加GC开销;/var/lib/hbase)在/etc/fstab中添加noatime选项,减少磁盘I/O。hbase-env.sh,设置export HBASE_REGIONSERVER_HEAPSIZE=8G(根据实际情况调整);hbase.regionserver.global.memstore.upperLimit(控制所有Region的MemStore总大小)建议设为0.45(避免频繁flush);hbase.regionserver.blockcache.size(读多写少场景建议0.6-0.8,写多读少建议0.3-0.5)。hbase.hregion.max.filesize调整(默认10GB,建议5-20GB,平衡负载均衡与管理开销);hbase-site.xml添加<property><name>hbase.hfile.block.size</name><value>65536</value></property>(64KB)。hbase.regionserver.wal.async.sync=true,减少写延迟;hbase.regionserver.wal.enablecompression=true,推荐使用Snappy算法(压缩/解压速度快),减少写入I/O大小。hbase.regionserver.handler.count调整(默认30,建议80-128,应对高并发请求)。cf),避免特殊字符增加解析开销。NUMREGIONS(如10)和SPLITALGO(如HexStringSplit)参数预先分割Region,避免数据集中写入单个Region,提升并行处理能力(示例:create 'my_table', 'cf', {NUMREGIONS => 10, SPLITALGO => 'HexStringSplit'})。hbase.client.write.buffer(默认2M,推荐设置为6M),减少RPC次数;但需注意不宜过大(避免占用过多客户端内存)。hbase.client.scanner.caching(默认1,建议500-1000),减少客户端与RegionServer交互;若Scan用于全表扫描或定期任务,可设置setCacheBlocks(false),避免无用缓存。scan.setCaching(500));scan.addFamily(Bytes.toBytes("cf"))),避免全表扫描;scan.close()),避免浪费内存;KeyOnlyFilter减少网络消耗。alter命令设置(示例:alter 'my_table', {NAME => 'cf', COMPRESSION => 'SNAPPY'}),减少数据存储空间与I/O开销。FAST_DIFF,减少存储空间、提高读取效率),设置示例:alter 'my_table', {NAME => 'cf', DATA_BLOCK_ENCODING => 'FAST_DIFF'}。hbase-env.sh添加export HBASE_OPTS="$HBASE_OPTS -XX:+UseG1GC"。zookeeper.session.timeout(默认3分钟,建议设置为1-2分钟),避免因ZooKeeper会话超时导致RegionServer频繁重启;需同步调整HBase的hbase.regionserver.zookeeper.session.timeout参数。