[HBase] major_compact不工作
Hadoop-0.20.1-cdh3u0和HBase-0.90.2-cdh3u0
场景如下:
建一张表TableTTL,ttl设定例如为86400*2,这样里面的数据只是最近2天内有效而已。
并且该表是一开始只有一个Region(这也是默认的create table)
然后不停对此表put数据,大量地put。
最后,该表不停的split出很多region,但会发现该表不会做每天(默认值)的Major Compaction。
这是由于每个新split出来的region下面都只有一个StoreFile时,会导致这个问题:
Store.isMajorCompaction()里面,当一个Store下面只有一个StoreFile时,
判断完ttl后忘了返回一个true来证明就算只有一个文件也要做major compaction。
[Split]时,会把多个StoreFiles合并为一个?
当split到最后,已经分好A,B并open region后,准备向ZooKeeper上注册时,
会坚持是否Reference或者需要Compaction的,此时会把Daughter A, B都做一次
compact操作,所以就只剩下一个StoreFile了。