@InterfaceAudience.Private public class StripeStoreFileManager extends Object implements StoreFileManager, StripeCompactionPolicy.StripeInformationProvider
| Modifier and Type | Class and Description |
|---|---|
private class |
StripeStoreFileManager.CompactionOrFlushMergeCopy
Non-static helper class for merging compaction or flush results.
|
private static class |
StripeStoreFileManager.KeyBeforeConcatenatedLists
An extension of ConcatenatedLists that has several peculiar properties.
|
private static class |
StripeStoreFileManager.State
The state class.
|
| Modifier and Type | Field and Description |
|---|---|
private int |
blockingFileCount |
private CellComparator |
cellComparator |
private StripeStoreConfig |
config |
private HashMap<HStoreFile,byte[]> |
fileEnds |
private HashMap<HStoreFile,byte[]> |
fileStarts
Cached file metadata (or overrides as the case may be)
|
(package private) static byte[] |
INVALID_KEY |
private static byte[] |
INVALID_KEY_IN_MAP
Normally invalid key is null, but in the map null is the result for "no key"; so use the
following constant value in these maps instead.
|
private static org.slf4j.Logger |
LOG |
private static Bytes.RowEndKeyComparator |
MAP_COMPARATOR |
static byte[] |
OPEN_KEY
The key value used for range boundary, indicating that the boundary is open (i.e.
|
private StripeStoreFileManager.State |
state |
static byte[] |
STRIPE_END_KEY |
static byte[] |
STRIPE_START_KEY
The file metadata fields that contain the stripe information.
|
| Constructor and Description |
|---|
StripeStoreFileManager(CellComparator kvComparator,
org.apache.hadoop.conf.Configuration conf,
StripeStoreConfig config) |
| Modifier and Type | Method and Description |
|---|---|
void |
addCompactionResults(Collection<HStoreFile> compactedFiles,
Collection<HStoreFile> results)
Adds only the new compaction results into the structure.
|
org.apache.hbase.thirdparty.com.google.common.collect.ImmutableCollection<HStoreFile> |
clearCompactedFiles()
Clears all the compacted files and returns them.
|
org.apache.hbase.thirdparty.com.google.common.collect.ImmutableCollection<HStoreFile> |
clearFiles()
Clears all the files currently in use and returns them.
|
private void |
debugDumpState(String string) |
private byte[] |
endOf(HStoreFile sf) |
private void |
ensureEdgeStripeMetadata(ArrayList<HStoreFile> stripe,
boolean isFirst) |
private void |
ensureLevel0Metadata(HStoreFile sf) |
private Collection<HStoreFile> |
findExpiredFiles(org.apache.hbase.thirdparty.com.google.common.collect.ImmutableList<HStoreFile> stripe,
long maxTs,
List<HStoreFile> filesCompacting,
Collection<HStoreFile> expiredStoreFiles) |
private int |
findStripeForRow(byte[] row,
boolean isStart)
Finds the stripe index for the stripe containing a row provided externally for get/scan.
|
private int |
findStripeIndexByEndRow(byte[] endRow)
Finds the stripe index by end row.
|
Iterator<HStoreFile> |
getCandidateFilesForRowKeyBefore(KeyValue targetKey)
See
StoreFileManager.getCandidateFilesForRowKeyBefore(KeyValue) for details on this
methods. |
Collection<HStoreFile> |
getCompactedfiles()
List of compacted files inside this store that needs to be excluded in reads because further
new reads will be using only the newly created files out of compaction.
|
int |
getCompactedFilesCount()
Returns the number of compacted files.
|
double |
getCompactionPressure() |
byte[] |
getEndRow(int stripeIndex)
Gets the end row for a given stripe.
|
Collection<HStoreFile> |
getFilesForScan(byte[] startRow,
boolean includeStartRow,
byte[] stopRow,
boolean includeStopRow)
Gets the store files to scan for a Scan or Get request.
|
List<HStoreFile> |
getLevel0Files()
Returns Level 0 files.
|
private double |
getMidStripeSplitRatio(long smallerSize,
long largerSize,
long lastLargerSize) |
Optional<byte[]> |
getSplitPoint()
Override of getSplitPoint that determines the split point as the boundary between two stripes,
unless it causes significant imbalance between split sides' sizes.
|
private Optional<byte[]> |
getSplitPointFromAllFiles() |
byte[] |
getStartRow(int stripeIndex)
Gets the start row for a given stripe.
|
int |
getStoreCompactionPriority()
Returns The store compaction priority.
|
Comparator<HStoreFile> |
getStoreFileComparator() |
int |
getStorefileCount()
Returns the number of files currently in use.
|
Collection<HStoreFile> |
getStorefiles()
Gets the snapshot of the store files currently in use.
|
List<byte[]> |
getStripeBoundaries()
Returns All stripe boundaries; including the open ones on both ends.
|
int |
getStripeCount()
Returns Stripe count.
|
private long |
getStripeFilesSize(int stripeIndex)
Gets the total size of all files in the stripe.
|
ArrayList<org.apache.hbase.thirdparty.com.google.common.collect.ImmutableList<HStoreFile>> |
getStripes()
Returns The stripes.
|
Collection<HStoreFile> |
getUnneededFiles(long maxTs,
List<HStoreFile> filesCompacting) |
private static void |
insertFileIntoStripe(ArrayList<HStoreFile> stripe,
HStoreFile sf)
Inserts a file in the correct place (by seqnum) in a stripe copy.
|
void |
insertNewFiles(Collection<HStoreFile> sfs)
Adds new files, either for from MemStore flush or bulk insert, into the structure.
|
private static boolean |
isInvalid(byte[] key)
Checks whether the key is invalid (e.g.
|
private static boolean |
isOpen(byte[] key)
Checks whether the key indicates an open interval boundary (i.e.
|
private static boolean |
isOpen(Cell key) |
void |
loadFiles(List<HStoreFile> storeFiles)
Loads the initial store files into empty StoreFileManager.
|
private void |
loadUnclassifiedStoreFiles(List<HStoreFile> storeFiles)
Loads initial store files that were picked up from some physical location pertaining to this
store (presumably).
|
private void |
markCompactedAway(Collection<HStoreFile> compactedFiles) |
private int |
nonOpenRowCompare(byte[] k1,
byte[] k2)
Compare two keys.
|
private int |
nonOpenRowCompare(Cell k1,
byte[] k2) |
void |
removeCompactedFiles(Collection<HStoreFile> compactedFiles)
Remove the compacted files
|
private boolean |
rowEquals(byte[] k1,
byte[] k2)
Compare two keys for equality.
|
private byte[] |
startOf(HStoreFile sf) |
Iterator<HStoreFile> |
updateCandidateFilesForRowKeyBefore(Iterator<HStoreFile> candidateFiles,
KeyValue targetKey,
Cell candidate)
See
StoreFileManager.getCandidateFilesForRowKeyBefore(KeyValue) and
StoreFileManager.updateCandidateFilesForRowKeyBefore(Iterator, KeyValue, Cell) for
details on this methods. |
private static final org.slf4j.Logger LOG
public static final byte[] STRIPE_START_KEY
public static final byte[] STRIPE_END_KEY
private static final Bytes.RowEndKeyComparator MAP_COMPARATOR
public static final byte[] OPEN_KEY
static final byte[] INVALID_KEY
private StripeStoreFileManager.State state
private HashMap<HStoreFile,byte[]> fileStarts
private HashMap<HStoreFile,byte[]> fileEnds
private static final byte[] INVALID_KEY_IN_MAP
private final CellComparator cellComparator
private StripeStoreConfig config
private final int blockingFileCount
public StripeStoreFileManager(CellComparator kvComparator, org.apache.hadoop.conf.Configuration conf, StripeStoreConfig config)
public void loadFiles(List<HStoreFile> storeFiles)
StoreFileManagerloadFiles in interface StoreFileManagerstoreFiles - The files to load.public Collection<HStoreFile> getStorefiles()
StoreFileManagergetStorefiles in interface StripeCompactionPolicy.StripeInformationProvidergetStorefiles in interface StoreFileManagerpublic Collection<HStoreFile> getCompactedfiles()
StoreFileManagergetCompactedfiles in interface StoreFileManagerpublic int getCompactedFilesCount()
StoreFileManagergetCompactedFilesCount in interface StoreFileManagerpublic void insertNewFiles(Collection<HStoreFile> sfs)
StoreFileManagerinsertNewFiles in interface StoreFileManagersfs - New store files.public org.apache.hbase.thirdparty.com.google.common.collect.ImmutableCollection<HStoreFile> clearFiles()
StoreFileManagerclearFiles in interface StoreFileManagerpublic org.apache.hbase.thirdparty.com.google.common.collect.ImmutableCollection<HStoreFile> clearCompactedFiles()
StoreFileManagerclearCompactedFiles in interface StoreFileManagerpublic int getStorefileCount()
StoreFileManagergetStorefileCount in interface StoreFileManagerpublic Iterator<HStoreFile> getCandidateFilesForRowKeyBefore(KeyValue targetKey)
StoreFileManager.getCandidateFilesForRowKeyBefore(KeyValue) for details on this
methods.getCandidateFilesForRowKeyBefore in interface StoreFileManagertargetKey - The key that is the basis of the search.public Iterator<HStoreFile> updateCandidateFilesForRowKeyBefore(Iterator<HStoreFile> candidateFiles, KeyValue targetKey, Cell candidate)
StoreFileManager.getCandidateFilesForRowKeyBefore(KeyValue) and
StoreFileManager.updateCandidateFilesForRowKeyBefore(Iterator, KeyValue, Cell) for
details on this methods.updateCandidateFilesForRowKeyBefore in interface StoreFileManagercandidateFiles - The candidate files not yet checked for better candidates - return value
from StoreFileManager.getCandidateFilesForRowKeyBefore(KeyValue), with some files
already removed.targetKey - The key to search for.candidate - The current best candidate found.public Optional<byte[]> getSplitPoint() throws IOException
getSplitPoint in interface StoreFileManagerIOExceptionprivate Optional<byte[]> getSplitPointFromAllFiles() throws IOException
IOExceptionprivate double getMidStripeSplitRatio(long smallerSize, long largerSize, long lastLargerSize)
public Collection<HStoreFile> getFilesForScan(byte[] startRow, boolean includeStartRow, byte[] stopRow, boolean includeStopRow)
StoreFileManagergetFilesForScan in interface StoreFileManagerstartRow - Start row of the request.stopRow - Stop row of the request.public void addCompactionResults(Collection<HStoreFile> compactedFiles, Collection<HStoreFile> results)
StoreFileManageraddCompactionResults in interface StoreFileManagercompactedFiles - The input files for the compaction.results - The resulting files for the compaction.private void markCompactedAway(Collection<HStoreFile> compactedFiles)
public void removeCompactedFiles(Collection<HStoreFile> compactedFiles)
StoreFileManagerremoveCompactedFiles in interface StoreFileManagercompactedFiles - the list of compacted filespublic int getStoreCompactionPriority()
StoreFileManagergetStoreCompactionPriority in interface StoreFileManagerprivate long getStripeFilesSize(int stripeIndex)
stripeIndex - Stripe index.private void loadUnclassifiedStoreFiles(List<HStoreFile> storeFiles)
storeFiles - Store files to add.private void ensureEdgeStripeMetadata(ArrayList<HStoreFile> stripe, boolean isFirst)
private void ensureLevel0Metadata(HStoreFile sf)
private void debugDumpState(String string)
private static final boolean isOpen(byte[] key)
private static final boolean isInvalid(byte[] key)
private final boolean rowEquals(byte[] k1, byte[] k2)
private final int nonOpenRowCompare(byte[] k1, byte[] k2)
private final int nonOpenRowCompare(Cell k1, byte[] k2)
private final int findStripeIndexByEndRow(byte[] endRow)
private final int findStripeForRow(byte[] row, boolean isStart)
public final byte[] getStartRow(int stripeIndex)
StripeCompactionPolicy.StripeInformationProvidergetStartRow in interface StripeCompactionPolicy.StripeInformationProviderstripeIndex - Stripe index.public final byte[] getEndRow(int stripeIndex)
StripeCompactionPolicy.StripeInformationProvidergetEndRow in interface StripeCompactionPolicy.StripeInformationProviderstripeIndex - Stripe index.private byte[] startOf(HStoreFile sf)
private byte[] endOf(HStoreFile sf)
private static void insertFileIntoStripe(ArrayList<HStoreFile> stripe, HStoreFile sf)
stripe - Stripe copy to insert into.sf - File to insert.public List<HStoreFile> getLevel0Files()
StripeCompactionPolicy.StripeInformationProvidergetLevel0Files in interface StripeCompactionPolicy.StripeInformationProviderpublic List<byte[]> getStripeBoundaries()
StripeCompactionPolicy.StripeInformationProvidergetStripeBoundaries in interface StripeCompactionPolicy.StripeInformationProviderpublic ArrayList<org.apache.hbase.thirdparty.com.google.common.collect.ImmutableList<HStoreFile>> getStripes()
StripeCompactionPolicy.StripeInformationProvidergetStripes in interface StripeCompactionPolicy.StripeInformationProviderpublic int getStripeCount()
StripeCompactionPolicy.StripeInformationProvidergetStripeCount in interface StripeCompactionPolicy.StripeInformationProviderpublic Collection<HStoreFile> getUnneededFiles(long maxTs, List<HStoreFile> filesCompacting)
getUnneededFiles in interface StoreFileManagermaxTs - Maximum expired timestamp.filesCompacting - Files that are currently compacting.private Collection<HStoreFile> findExpiredFiles(org.apache.hbase.thirdparty.com.google.common.collect.ImmutableList<HStoreFile> stripe, long maxTs, List<HStoreFile> filesCompacting, Collection<HStoreFile> expiredStoreFiles)
public double getCompactionPressure()
getCompactionPressure in interface StoreFileManagerHStore.getCompactionPressure()public Comparator<HStoreFile> getStoreFileComparator()
getStoreFileComparator in interface StoreFileManagerHStoreFile.getMaxSequenceId() is the first priority.Copyright © 2007–2020 The Apache Software Foundation. All rights reserved.