HBase性能调优

这里有一些关于性能调优参数的总结和说明,其中有一些自己的经验以及参数书籍《HBase The definitive Guide》: 
第一章:GC的相关参数配置 
1.swap的设置: 
我们需要关闭操作系统的swap或是设置swappiness为0,推荐设置为0,这样只有在物理内存不够的情况下才会使用交换分区。这个参数设置是由于JVM虚拟机如果使用了swap在 
GC回收时会花费更多的时间,会导致Region server 与ZK 连接超期,Hmaster会认为Region server已经故障,然后开始分裂HLog和重新分配Region,即使Region server完成GC后,再次上报 
信息给Hmaster时,Hmaster也会抛YouAreDead的异常给Region server和让它退出服务, 所以这个参数的配置是一个必须条件。 

2.GC回收采用并行增量式的方式,目前在0.90的默认配置,以我的经验在这个配置下我们目前还没有发现由于full GC的情况。 按照社区给的意见大概1G的内存的如果Full GC可能需要10s中的时间,所以我们要设置ZK的session时长和内存大小到一个比较合适的值,减少因为full GC产生当机的情况。 另外,我们一定要注意一下参数: 

  -XX:CMSInitiatingOccupancyFraction=70 

70为JVM的使用百分比,当达到这个阈值后将启动回收任务。这个值比较合适的值是要略大于memstoresize 40%+ blockcache 20%。 

  
3、开启特性MLAB 
  MLAB特性是在分析了HBase产生内存碎片的根因后给出了解决方案,这个方案虽然不能够完全解决Full GC带来的问题,但是一定程度上延缓了full GC的产生间隔。MLAB在0.90版本默认是关闭的
在0.92版本是默认打开(92版本最近准备发布了,已经拉出分支来了)。 使用这个特性时,一定要注意如果keyvalue,如果这个值很大的情况要增加chunk值(目前默认2M)


第二章:集群参数的配置 
1. zookeeper.session.timeout(默认3分钟) 
ZK的超期参数,默认配置为3分钟,在生产环境上建议减小这个值在1分钟或更小。 
设置原则:这个值越小,当RS故障时Hmaster获知越快,Hlog分裂和region 部署越快,集群恢复时间越短。 但是,设置这个值得原则是留足够的时间进行GC回收,否则会导致频繁的RS当机。 


2、hbase.regionserver.handler.count(默认10) 
设置原则: 
对于大负载的put(达到了M范围)或是大范围的Scan操作,handler数目不易过大,易造成OOM。 
对于小负载的put或是get,delete等操作,handler数要适当调大。 
根据上面的原则,要看我们的业务的情况来设置。 

3、HBASE_HEAPSIZE 大小设置 
设置原则: 
a. HBASE_HEAPSIZE 包括三部分内容:Memstoresize 40%(默认) blockcache 20% 以及StoreIndex(这需要根据硬盘容量算出)。 
b. GC回收的时间不要超过zk session的时间。 

4.选择使用压缩算法,目前HBase默认支持的压缩算法包括GZ,LZO以及snappy(0.92版本已经支持,BSD license) 
Algorithm     % remaining Encoding  Decoding 
GZIP           13.4%      21 MB/s   118 MB/s 
LZO            20.5%      135 MB/s  410 MB/s 
Zippy/Snappy   22.2%      172 MB/s  409 MB/s 
根据你产品的情况选取这里压缩算法或是使用其他压缩算法。 

5.hbase.hregion.max.filesize 默认256M 
关于Region Size的设置,参考另外一篇博客。 
设置原则: 
a、Region server 上活跃的region不能太多100个左右,且也不要太少会导致并发度不大。 
b、在region设置比较大时,例如每个region达到100G时,需要手动进行对热点region进行split或是对于不经常活跃的进行merge 

6.hbase.hregion.memstore.block.multiplier 默认2 
设置原则: 
如果内存足够的,可以适当设置大这个值,当memstoresize 大于 flush size limit*multiplier时会阻塞客户的put操作。如果出现这种情况多数原因是由于compaction队列不能够及时处理 
导致的。 

7.hbase.hstore.blockingStoreFiles 默认7 
设置原则: 
这个值设置比较大,会增加客户端的负载处理能力,但是如果你的服务器一直处于一个高的水平,那说明你的机器已经达到性能瓶颈,需要其他方式解决

阅读更多
个人分类: HBase
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭