Flush 操作是 Region 级别的,如果触发,是region一起刷,不是store刷自己的
条件:
1.(hbase.regionserver.global.memstore.size)默认;堆大小的40%
regionServer的全局memstore的大小,超过该大小会触发flush到磁盘的操作,默认是堆大小的40%,而且regionserver级别的flush会阻塞客户端读写
2.(hbase.hregion.memstore.flush.size)默认:128M
单个region里memstore的缓存大小,超过那么整个HRegion就会flush,
3.(hbase.regionserver.optionalcacheflushinterval)默认:1h
内存中的文件在自动刷新之前能够存活的最长时间
1)当满足一定条件的时候,RegionServer会将数据刷到硬盘,将内存中的数据删除,同时删除HLog中的历史数据;触发参数如下:
hbase.regionserver.global.memstore.size=0.4
hbase.regionserver.global.memstore.size.lower.limit=0.95
hbase.regionserver.optionalcacheflushinterval=3600000
hbase.hregion.memstore.flush.size=134217728(128M)
2)并将数据存储到HDFS中;
3)在HLog中做标记点。