HBase Mem Store的flush时机

  1. 当Region中某个Mem Store的大小达到HBase配置中flush.size的大小时,hbase.hregion.memstore.flush.size(默认值128M)当前Region的所有Mem Store都会进行flush
    如果数据量比较大,在一直写入Mem Store,当Mem Store中的数据大小达到flush.size与memstore.block.multiplier的乘积时 (hbase.hregion.memstore.flush.size(默认128M) * hbase.hregion.memstore.block.multiplier(默认4)),阻塞当前数据写入,将所有Mem Store中的数据flush到Store File,直到flush完毕,再继续写入。

  2. 当Region Server中的Mem Store的总大小达到java_heapsize与memstore.size与memstore.size.upper.limit的乘积
    (java_heapsize
    *hbase.regionserver.global.memstore.size(默认值0.4)
    *hbase.regionserver.global.memstore.size.upper.limit(默认值0.95)),
    Region Server会按照Region中所有Mem Store的总大小进行从大到小依次进行flush,直到Region Server中Mem Store的大小小于memstore.size.lower.limit
    如果数据量比较大,在一直写入Mem Store,当Region Server中的Mem Store的总大小达到java_heapsize与memstore.size的乘积时,阻塞当前数据写入,将所有Mem Store中的数据flush到Store File,直到flush完毕,再继续写入。

  3. 当达到设置的自动刷新时间时,也会flush。自动刷新的时间间隔由该属性进行配置hbase.regionserver.optionalcacheflushinterval(默认1小时)。

猜你喜欢

转载自blog.csdn.net/FlatTiger/article/details/114260064