[ https://issues.apache.org/jira/browse/HBASE-11397?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Victor Xu updated HBASE-11397: ------------------------------ Attachment: HBASE-11397-RS-Log.png Attach RS logs about the expired stripes compaction. We can see that all the stripes were selected, but after compacting no file(writer) was created. > When merging expired stripes, we need to create an empty file to preserve > metadata. > ----------------------------------------------------------------------------------- > > Key: HBASE-11397 > URL: https://issues.apache.org/jira/browse/HBASE-11397 > Project: HBase > Issue Type: Bug > Components: Compaction > Affects Versions: 0.98.2 > Environment: jdk1.7.0_45, hadoop-cdh5, hbase-0.98.2 > Reporter: Victor Xu > Attachments: HBASE-11397-HDFS.png, HBASE-11397-RS-Log.png, > HBASE-11397-Stripe-Info.png > > > Stripe Compaction is a good feature in 0.96 and 0.98. But when I used it in a > heavy-write non-uniform row keys scenario(e.g. time dimension in a key), I > came across some problems. > I made my stripes split at the size of 2G(hbase.store.stripe.sizeToSplit=2G), > and soon there were tens of them. It was true that only the last stripe > receiving the new keys kept compacting - old data didn't compact as much, or > at all. However, the old stripes were still there when they all expired. I > checked the source code and found that when compacting expired stripes, the > StoreScanner may return no KVs so that SizeMultiWriter.append() is never > called. That's to say, NO NEW FILE WILL BE CREATED. > My solution is to create an empty file to preserve metadata at the end of the > SizeMultiWriter.commitWritersInternal(). -- This message was sent by Atlassian JIRA (v6.2#6252)