1、内存
年轻代年轻代最大值
java -Xmx256M -Xms256m -XX:NewSize=xxm -XX:MaxNewSize=xxm
java -XX:+UseParNewGC // 使用并行年轻代垃圾回收策略
2、修改内存储的清理阀值
hbase.hregion.memstore.flush.size
3、内存储的容量
hbase.regionserver.global.memstore.size
4、启动压缩,需要确保所有的rs都安装了所需要的压缩类库,尤其注意lzo和snappy
$hbase>create 'ns1:t9',{NAME=>'cf1',COMPRESSION=>'snappy'}
5、关闭自动拆分
hbase.hregion.max.filesize=10G
6、热点区域,通过move将region移动到指定rs
7、预拆分
创建表时直接指定拆分范围
$hbase> create 'ns1:t10','cf1',SPLITS=>['10','20','30']
同一张表count,分区前是90s,分区后十几秒,性能提升明显
8、merge
merge_region 'ENCODED_REGIONNAME', 'ENCODED_REGIONNAME'
客户端API优化手段
1、关闭自动清理
HTable.setAutoFlush(false);
HTable.flushCommit();
HTable.close();
2、设置scan的cache
scan.setCaching(1000);
3、限定column family(最好一个列族)
4、预分区,设置startkey 和endkey
5、设置filter
6、关闭WAL
put.setWriteToWAL(false);
配置优化
1、zk的超时设定
zookeeper.session.timeout=3分钟
2、设置处理线程
hbase.regionserver.handler.count=
3、设置hbase堆大小
[hbase-env.sh]
export HBASE_HEAPSIZE=1G
网友评论