Victor Xu created HBASE-11397:
---------------------------------

             Summary: 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


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)

Reply via email to