[ 
https://issues.apache.org/jira/browse/HBASE-6055?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13436382#comment-13436382
 ] 

Jesse Yates commented on HBASE-6055:
------------------------------------

Looking at implementing concurrent compactions, there is an issue around 
allowing compactions and how to get a consistent view of the directory for each 
store. If a compaction is taking place and we 'ls' the directory for a store, 
the following may occur (or some semantically correct subset of the following):

* get the first set of HFiles in the directory
* compaction removes all the files
* compaction moves in its own files
* we get the next batch of files from the namenode for the original 'ls'

This leads to a munged (not necessarily incorrect) view of the hfiles that will 
require another compaction on restore to get a reasonable performance. There 
are a couple considerations here. 

(1) the above situation occurs only when we have _more files in a store that 
the ls limit on the namenode_, which is 1000 by default - the unit of 
atomicity. As long as a single store doesn't have more than 1000 files, then we 
can just ignore compactions entirely and snap away. However, once we breach 
1000 files, this becomes a different, potentially far more complex to reason 
about, problem. 

(2) We can block for the currently running compactions to finish and then get a 
quick 'ls' between compactions starting. This is a bit more intrustive and will 
potentialy hold up the compaction queue for a little bit. Also as we have more 
files and a more active system it becomes increasingly likely to get a 
compaction and cause your snapshot to fail as it waits on the compaction to 
finish (since we time-bound snapshots to minimize impact on the system).

Personally, it seems unlikely that we are going to get more than 1000 files in 
a single store. However, if its unlikely, that means its probably going to 
happen :) Option (2) is far more intrusive and code intensive, potentially 
causing some lag in the system, but is sure to be safe once we get it right. 

Thoughts?
                
> Snapshots in HBase 0.96
> -----------------------
>
>                 Key: HBASE-6055
>                 URL: https://issues.apache.org/jira/browse/HBASE-6055
>             Project: HBase
>          Issue Type: New Feature
>          Components: client, master, regionserver, zookeeper
>            Reporter: Jesse Yates
>            Assignee: Jesse Yates
>             Fix For: 0.96.0
>
>         Attachments: Snapshots in HBase.docx
>
>
> Continuation of HBASE-50 for the current trunk. Since the implementation has 
> drastically changed, opening as a new ticket.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to