当前位置:首页 > 开发 > 系统架构 > 架构 > 正文

hbase compact和split策略

发表于: 2015-02-12   作者:blackproof   来源:转载   浏览次数:
摘要: ---compact split笔记   compact策略: 在启动region之后,memflush之后,用户compact调用compact 使用策略类needsCompaction方法,hfile数量大于hbase.hstore.compaction.min 和 hbase.hstore.compactionThreshold的最大值数(默认值为3)   m

---compact split笔记

 

compact策略:

在启动region之后,memflush之后,用户compact调用compact

使用策略类needsCompaction方法,hfile数量大于hbase.hstore.compaction.min 和 hbase.hstore.compactionThreshold的最大值数(默认值为3)

 

major compact触发:(hfile由mem flush生成)

HStore检查是否进行compact时候,现在now - 上次major时间大于hbase.hregion.majorcompaction下次时间间隔  =》 hfile个数大于1 || 只有一个hfile(最早的ts>ttl)整个文件过期 => 进行marjor compact

hbase shell和admin进行major_compact

compact file <= sum(hfile) * hbase.hstore.compaction.ratio 将small compact转为major compact

最小的tts到时间了,进行major compact

 

 

compact策略:(一次compact不会compact提供所有的hfile,会选择最好的一组)

ExploringCompactionPolicy

一、选择符合要求的一组hfile进行compact

1.hfile数>=minFiles

2.hfile数<=maxFiles

3.sum(hfile)大小<=hbase.hstore.compaction.max

4.一个hfile大小<sum(hfile)-hfile(不让一个hfile过大)

二、选择最优解(最优的一组hfile)

选择sum(hfile)大小最小的作为第一个组合,选择能合并更多的hfile,并且sum(hfile)大小更小的

 

 split触发:

1.flush之前会检测区域中HStoreFile数目是否超过hbase.hstore.blockingStoreFiles,如果超过且没有等待超时会调用CompactSplitThread.requestSplit(HRegion) 

2.flush之后会调用HRegion.checkSplit()检测是否需要split,如果需要则调用CompactSplitThread.requestSplit(HRegion)

3.compact之后会调用CompactSplitThread.requestSplit(HRegion)

4.hbaseadmin split table or region

 

split策略:

IncreasingToUpperBoundRegionSplitPolicy

(init)initialSize = hbase.increasing.policy.initial.size(预先设置初始值大小) 或hbase.hregion.memstore.flush.size (memflush大小)

获取this.region所在表的所有region数 getCountOfCommonTableRegions 为regioncount

当regioncount在0到100之间,取配置hbase.hregion.max.filesize(默认10G)或initialSize*(regioncount^3)的最小值  否则取配置hbase.hregion.max.filesize(默认10G)

如,只有一个region,128*1^3=128M

        之后:                 128*2^3=1024M

                                    128*3^3=3456M

                                    128*4^3=8192M

                                    128*5^3=16000M(15G) => 10G 当有5个region就可以用配了

 

结论:

compact

无法避免,

增大hbase.hstore.compaction.min 和 hbase.hstore.compactionThreshold可以减少compact频率,但是延迟compact时间,反之亦然

通过减少生成hfile数量减少compact,

通过设置较大的hbase.hregion.majorcompaction可以减少marjor compact频率

可以定时人为进行mar compact

split

可以避免,split可以只设置hbase.hregion.max.filesize很大就停止了region split操作

hbase compact和split策略

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
* table disabled is NOT different from region,when all regions have been closed,then the tabl
先上一张图讲一下Compaction和Split的关系,这样会比较直观一些。 Compaction把多个MemStore flush
1.principle 2.note -as is hbase-0.94.2,the table .meta. is not splittable,therefore,there is
在Hbase中split是一个很重要的功能,Hbase是通过把数据分配到一定数量的region来达到负载均衡的。一
在Hbase中split是一个很重要的功能,Hbase是通过把数据分配到一定数量的region来达到负载均衡的。一
part I:split policy if u have used some index tools like lucene,there are some factors to con
再次吐槽公司的sb环境,不让上网不能插优盘,今天有事回家写一下笔记HBase region split 在管理集群
再次吐槽公司的sb环境,不让上网不能插优盘,今天有事回家写一下笔记HBase region split 在管理集群
hbase的稳定性是近期社区的重要关注点,毕竟稳定的系统才能被推广开来,这里有几次稳定性故障和大家
1、检查是否需要进行Region Split的时机: 每次flush或者compact之后,regionserver都会去检查是否
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号