hbase的优化点

Hbase的优化点

最近在总结hbase的相关内容,在此分享几个较为基础的优化点:

  • GC配置
  • flush阶段
  • compact阶段
  • split阶段

GC配置

  GC配置也就是JAVA堆内存的垃圾回收,主要用于regionserver的垃圾回收,堆内存中分为三块区域:新生带,老年带,永生带。

    新生带:一般存储刚刚生成的对象,一般存储空间较小
    老年带:一般用于存储存活时间比较长的对象,一般空间较大
    永生带:一般存储class信息和元数据(java1.8以后不用java堆内存来开辟永生带了,而是用了一块本地内存叫作元空间来代替永生带)

  如果内存回收不及时就会产生GC停顿,为了避免GC停顿,我们可以根据新生带和老年带的垃圾回收特性配置不同的GC算法。新生带空间较小,回收速度较快,适合Parrallel New Collector;老年带空间较大,回收速度较慢,适合Concurrent Mark-Sweep Collector。
  配置:将以下配置放入每台regionsever的hbase-env中
  export   HBASE_REGIONSERVER_OPTS="-Xmx8g -Xms8G        
    -Xmn128m -XX:UseParNewGC     
    -XX:UseConcMarkSweepGC 
    -XX:CMSInitiatingOccupancyFraction=70            
    -verbose:gc 
    -XX:+PrintGCDetails 
    -XX:+PrintGCTimeStamps    
    -Xloggc:$HBASE_HOME/logs/gc-${hostname}-hbase.log"

flush阶段

   当单个memstore满128M或者memstore的总大小超过限制时(每个regionserver都拥有一个memstore,即memstore的总大小,regionserver中的每个region分配该memstore,即单个memstore)自动触发溢写(flush)操作,将memstore中的文件溢写成storefile
   在工作中,我们可以关闭自动溢写,即将溢写的触发值调制最大(hbase.hregion.memstore.flush.size),并在定时在不影响业务的时间段,手动触发溢写:flush 'tablename'
   regionserver所使用的内存由三部分:regionserver自身所用的内存、读内存(blockcache)、写内存(memstore),默认分配比例为2:4:4。
   在hbase-site.xml中
   写业务比较多,调大写内存:
   <property >
   <name>hbase.regionserver.global.memstore.size</name>
   <value>0.4</value>
   </property>

   读业务比较多,调大读内存:
   <property >
   <name>hfile.block.cache.size</name>
   <value>0.4</value>
   </property>

compact阶段

    溢写的storefile会将小文件合并(compact)成大文件,其中有两种合并方式:
       1.minor compact:轻量级的合并
         .将最早生成的几个小文件进行合并,变成一个大文件;
         .不进行数据的更新和删除;
         .频繁执行,轻量级的合并,消耗资源较少;
       2.major compact:重量级的合并
         .将当前所有的storefile合并成一个大文件
         .会对标记为更新和删除的数据实施真正的删除
         .定期执行:默认7天执行一次
  在工作中我们可以关闭(compact):
      <property >
       <name>hbase.hregion.majorcompaction</name>
       <value>0</value>
     </property>
  定时在不影响业务时间段手动执行:
      major_compact 'tablename'
      major_compact 'regionname'

split阶段

   当整个region中的storefile达到阈值时,会触发自动split,
默认10G(hbase.hregion.max.filesize)
   工作中关闭自动触发
        关闭:
            hbase.hregion.max.filesize=100GB
        定时手动触发:
            split 'tableName'
            split 'regionName' # format: 'tableName,startKey,id'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值