zoukankan      html  css  js  c++  java
  • HBase的文件合并(minor/major compact)

    Minor Compact
      Minor Compact是指少量HFile文件按照Minor Compact规则进行合并;它的正常流程是这样的,探测到有新的文件刷进来(比如因为memstore的flush,当然可以直接写入HFile而跳过memstore,比如Bulk写入),此时Region Server只要发现同一个列簇有3个及以上的文件,将会扫描文件列表,然后将符合合并规则文件纳入到list中,并且list中文件数>1,则将会进行compact;其中规则如下:

    1. 文件大小小于min.size的放入到list中;
    2. 文件大小大于max.size的将一定不会放入到list中;
    3. 如果文件大小排序,该文件大小小于后面10个文件总大小*1.2(说明文件不是足够),那么就放入到list中;这里10是由hbase.hstore.compaction.max决定,1.2是由hbase.hstore.compaction.ratio决定的。

      所以看到minor的规则稍微有点复杂,原则是减少合并(文件合并要门当户对),避免形成大文件(达到一定程度之后就不在合并)。
      另外minor compact在合并文件过程中,只是数据进行排序,但是并不会执行物理删除,比如墓碑文件标记的删除数据,TTL超期清理数据,以及超出多版本阈值的数据清理。这些工作什么时候去做呢?
    Major Compact
      数据清理的工作,都是在Major Compact里面去做,Major操作是无差别的将所有的同一个column family的所有文件进行合并;在合并的过程中将会对数据进行清理,那些需要删除掉的,过期的数据都会在Major Compact里面去做,当然也包括整合数据排序(HBase的数据排序是字段顺序)。所以Major Compact在数据层面做的事情还是挺多的,但是因为他产生的IO消耗同样非常巨大,所以一般都会禁用自动major compact,而是会手工进行数据合并。

    参考:
    https://blog.csdn.net/u014297175/article/details/50456147

  • 相关阅读:
    Ui——创建视图的方法及过程
    iOS设计模式----原型模式
    浅谈OC中排序的方法
    Solid Dominoes Tilings (轮廓线dp打表 + 容器)
    Shell Necklace (dp递推改cdq分治 + fft)
    Rigid Frameworks (画图二分图规律 + DP + 数学组合容斥)
    PowMod (欧拉推式子 + 指数循环节)
    Necklace (全排列 + 匈牙利)
    GCD (RMQ + 二分)
    Game (思维)
  • 原文地址:https://www.cnblogs.com/xiashiwendao/p/12151573.html
Copyright © 2011-2022 走看看