org.apache.hadoop.hbase.regionserver.compactions
Class Compactor

java.lang.Object
  extended by org.apache.hadoop.hbase.regionserver.compactions.Compactor
Direct Known Subclasses:
DefaultCompactor, StripeCompactor

@InterfaceAudience.Private
public abstract class Compactor
extends Object

A compactor is a compaction algorithm associated a given policy. Base class also contains reusable parts for implementing compactors (what is common and what isn't is evolving).


Nested Class Summary
static interface Compactor.CellSink
          TODO: Replace this with CellOutputStream when StoreFile.Writer uses cells.
protected static class Compactor.FileDetails
          The sole reason this class exists is that java has no ref/out/pointer parameters.
 
Field Summary
protected  Compression.Algorithm compactionCompression
           
protected  org.apache.hadoop.conf.Configuration conf
           
protected  CompactionProgress progress
           
protected  Store store
           
 
Method Summary
protected  List<StoreFileScanner> createFileScanners(Collection<StoreFile> filesToCompact, long smallestReadPoint)
          Creates file scanners for compaction.
protected  InternalScanner createScanner(Store store, List<StoreFileScanner> scanners, long smallestReadPoint, long earliestPutTs, byte[] dropDeletesFromRow, byte[] dropDeletesToRow)
           
protected  InternalScanner createScanner(Store store, List<StoreFileScanner> scanners, ScanType scanType, long smallestReadPoint, long earliestPutTs)
           
protected  Compactor.FileDetails getFileDetails(Collection<StoreFile> filesToCompact, boolean calculatePutTs)
          Extracts some details about the files to compact that are commonly needed by compactors.
 CompactionProgress getProgress()
           
protected  long getSmallestReadPoint()
           
protected  boolean performCompaction(InternalScanner scanner, Compactor.CellSink writer, long smallestReadPoint, CompactionThroughputController throughputController)
          Performs the compaction.
protected  InternalScanner postCreateCoprocScanner(CompactionRequest request, ScanType scanType, InternalScanner scanner)
          Calls coprocessor, if any, to create scanners - after normal scanner creation.
protected  InternalScanner preCreateCoprocScanner(CompactionRequest request, ScanType scanType, long earliestPutTs, List<StoreFileScanner> scanners)
          Calls coprocessor, if any, to create compaction scanner - before normal scanner creation.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

progress

protected CompactionProgress progress

conf

protected org.apache.hadoop.conf.Configuration conf

store

protected Store store

compactionCompression

protected Compression.Algorithm compactionCompression
Method Detail

getProgress

public CompactionProgress getProgress()

getFileDetails

protected Compactor.FileDetails getFileDetails(Collection<StoreFile> filesToCompact,
                                               boolean calculatePutTs)
                                        throws IOException
Extracts some details about the files to compact that are commonly needed by compactors.

Parameters:
filesToCompact - Files.
calculatePutTs - Whether earliest put TS is needed.
Returns:
The result.
Throws:
IOException

createFileScanners

protected List<StoreFileScanner> createFileScanners(Collection<StoreFile> filesToCompact,
                                                    long smallestReadPoint)
                                             throws IOException
Creates file scanners for compaction.

Parameters:
filesToCompact - Files.
Returns:
Scanners.
Throws:
IOException

getSmallestReadPoint

protected long getSmallestReadPoint()

preCreateCoprocScanner

protected InternalScanner preCreateCoprocScanner(CompactionRequest request,
                                                 ScanType scanType,
                                                 long earliestPutTs,
                                                 List<StoreFileScanner> scanners)
                                          throws IOException
Calls coprocessor, if any, to create compaction scanner - before normal scanner creation.

Parameters:
request - Compaction request.
scanType - Scan type.
earliestPutTs - Earliest put ts.
scanners - File scanners for compaction files.
Returns:
Scanner override by coprocessor; null if not overriding.
Throws:
IOException

postCreateCoprocScanner

protected InternalScanner postCreateCoprocScanner(CompactionRequest request,
                                                  ScanType scanType,
                                                  InternalScanner scanner)
                                           throws IOException
Calls coprocessor, if any, to create scanners - after normal scanner creation.

Parameters:
request - Compaction request.
scanType - Scan type.
scanner - The default scanner created for compaction.
Returns:
Scanner scanner to use (usually the default); null if compaction should not proceed.
Throws:
IOException

performCompaction

protected boolean performCompaction(InternalScanner scanner,
                                    Compactor.CellSink writer,
                                    long smallestReadPoint,
                                    CompactionThroughputController throughputController)
                             throws IOException
Performs the compaction.

Parameters:
scanner - Where to read from.
writer - Where to write to.
smallestReadPoint - Smallest read point.
Returns:
Whether compaction ended; false if it was interrupted for some reason.
Throws:
IOException

createScanner

protected InternalScanner createScanner(Store store,
                                        List<StoreFileScanner> scanners,
                                        ScanType scanType,
                                        long smallestReadPoint,
                                        long earliestPutTs)
                                 throws IOException
Parameters:
store - store
scanners - Store file scanners.
scanType - Scan type.
smallestReadPoint - Smallest MVCC read point.
earliestPutTs - Earliest put across all files.
Returns:
A compaction scanner.
Throws:
IOException

createScanner

protected InternalScanner createScanner(Store store,
                                        List<StoreFileScanner> scanners,
                                        long smallestReadPoint,
                                        long earliestPutTs,
                                        byte[] dropDeletesFromRow,
                                        byte[] dropDeletesToRow)
                                 throws IOException
Parameters:
store - The store.
scanners - Store file scanners.
smallestReadPoint - Smallest MVCC read point.
earliestPutTs - Earliest put across all files.
dropDeletesFromRow - Drop deletes starting with this row, inclusive. Can be null.
dropDeletesToRow - Drop deletes ending with this row, exclusive. Can be null.
Returns:
A compaction scanner.
Throws:
IOException


Copyright © 2007–2015 The Apache Software Foundation. All rights reserved.