关于HBase性能的一些思考 - 配置篇

1.调整Write Buffer Size

Hbase在Put的时候,如果设置了autoflush=false,当等待写入的数据超过writebuffersize配置值的size时才提交写数据请求(通过hbase.client.write.buffer配置,默认为2M)。如果最后的写入数据没有超过2M,则在调用close方法时会进行最后的提交。所以对于实时性和不可丢失性不高的系统,可以设置autoflush=false,writebufferzie=5*1024*1024,Client用单条数据Put的API,这样可以控制提交次数,减少RPC的交互次数。但如果系统对实时性要求很高,还是需要将autoflush设为true并单条提交

2.压缩

当数据量很大时,可以将数据边写边压缩,从压缩率和压缩速度来看,推荐使用Snappy,需要在hbase-site.xml中配置

3.Compaction

当Hbase进行Major Compaction时,该Region将会合并所有的StoreFile,因此整个Region将处于不可读状态,会影响系统的使用。所以建议将Major Compaction关闭(hbase.hregion.majorcompaction=0),然后每天在系统空闲时间统一对所有表用cron执行major compaction

4.RPC数量

该配置定义了每个Region Server上RPC handler的数量,增加这个可以提高HBase接收请求的能力。默认hbase.regionserver.handler.count=10,是为了防止Region Server并发时吃光内存,实际可以视硬件情况改大一些

5.内存设置

在硬件允许的情况下,分配足够多的内存给HBase,修改hbase-env.sh,export HBASE_HEAPSIZE=3000 #这里默认为1000m

 

肯定还有其他的方法,这篇文章将在不断的深入中持续更新

posted @ 2014-07-22 10:57  IRIS我的天使  阅读(360)  评论(0编辑  收藏  举报