1)当数据文件达到一定个数,Hmaster触发合并操作,Region将数据块加载到本地,进行合并;
hbase.hregion.majorcompaction=604800000(7天)
hbase.hstore.compactionThreshold=3
2)当合并的数据超过一定的大小,进行拆分,将拆分后的Region分配给不同的HregionServer管理;
3)同时将HregionServer上的hlog拆分,然后分配给不同的HregionServer加载,修改META表内容;
合并分为两种操作:
Minor Compaction:这种合并触发频率高,会把TTL数据(过期数据)删除,手动删除的数据并不 会删除。
MajorCompaction 合并Store中所有File,这时候,手动删除的,就是带墓碑标记的会被删除,还有超过MaxVersions的版本数据,性能消耗很大,可以手动控制。
合并多少File,有合并策略
0.96版本之后提出了ExploringCompactionPolicy算法, 并且把该
算法作为了默认算法。 该算法有以下的更新:
该文件 < (所有文件大小总和 - 该文件大小)*比例因子
如果该文件大小小于最小合并大小(minCompactSize) , 则连上面
那个公式都不需要套用, 直接进入待合并列表。 最小合并大小的配置
项: hbase.hstore.compaction.min.size。 如果没设定该配置项, 则使
用hbase.hregion.memstore.flush.size。