region分裂场景,如果父region的hfile文件大于hbase.hstore.compaction.max.size,会不会导致父region的hfile永久无法删除?

region分裂的时候,会创建两个子region,而子region的文件不会真正复制,只是一个对父region的hfile文件的引用。等到compaction的时候才会真正复制并清理父region的hfile文件。
这里就有一个疑问了:假设hbase.hregion.max.filesize的值为10GB,hbase.hstore.compaction.max.size的值也为10G,请问是不是当一个10G文件(或者10.1G)进行split之后,由于引用文件会在下次发生compact操作的时候才会清理掉,而这里又永远不会触发major compact了(因为大于参与major compact的最大文件大小了),会不会导致这个文件永远无法清理了(一直这么大,既不会再次执行split也不会执行major compact)?如果是,有没有办法能打破这个死循环?
已邀请:

libis - HBase爱好者

赞同来自:

这里说明一下  compaction执行的是子region 不是父region。子region执行compaction的时候会把父region的文件读出来写到子region文件中,此时父region文件就可以移除掉了。因此不会出现你说的这种情况吧

igloo1986

赞同来自:

有两种场景在选择参与compaction的文件的时候,是不考虑文件大小的:
1. 文件是reference文件
2. isMajor=true

要回复问题请先登录注册