Class ErasureDecoder
java.lang.Object
org.apache.hadoop.conf.Configured
org.apache.hadoop.io.erasurecode.coder.ErasureDecoder
- All Implemented Interfaces:
Configurable,ErasureCoder
- Direct Known Subclasses:
DummyErasureDecoder,HHXORErasureDecoder,RSErasureDecoder,XORErasureDecoder
An abstract erasure decoder that's to be inherited by new decoders.
It implements the
ErasureCoder interface.-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncalculateCoding(ECBlockGroup blockGroup) Calculate the encoding or decoding steps given a block blockGroup.protected int[]getErasedIndexes(ECBlock[] inputBlocks) Get indexes of erased blocks from inputBlocksprotected ECBlock[]getInputBlocks(ECBlockGroup blockGroup) We have all the data blocks and parity blocks as input blocks for recovering by default.intThe number of data input units for the coding.protected static intgetNumErasedBlocks(ECBlock[] inputBlocks) Find out how many blocks are erased.protected intgetNumErasedBlocks(ECBlockGroup blockGroup) Get the number of erased blocks in the block group.intThe number of parity output units for the coding.The options of erasure coder.protected ECBlock[]getOutputBlocks(ECBlockGroup blockGroup) Which blocks were erased ?booleanTell if direct or off-heap buffer is preferred or not.protected abstract ErasureCodingStepprepareDecodingStep(ECBlockGroup blockGroup) Perform decoding against a block blockGroup.voidrelease()Release the resources if any.Methods inherited from class org.apache.hadoop.conf.Configured
getConf, setConfMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.hadoop.conf.Configurable
getConf, setConf
-
Constructor Details
-
ErasureDecoder
-
-
Method Details
-
calculateCoding
Description copied from interface:ErasureCoderCalculate the encoding or decoding steps given a block blockGroup. Note, currently only one coding step is supported. Will support complex cases of multiple coding steps.- Specified by:
calculateCodingin interfaceErasureCoder- Parameters:
blockGroup- the erasure coding block group containing all necessary information for codec calculation- Returns:
- ErasureCodingStep.
-
getNumDataUnits
public int getNumDataUnits()Description copied from interface:ErasureCoderThe number of data input units for the coding. A unit can be a byte, chunk or buffer or even a block.- Specified by:
getNumDataUnitsin interfaceErasureCoder- Returns:
- count of data input units
-
getNumParityUnits
public int getNumParityUnits()Description copied from interface:ErasureCoderThe number of parity output units for the coding. A unit can be a byte, chunk, buffer or even a block.- Specified by:
getNumParityUnitsin interfaceErasureCoder- Returns:
- count of parity output units
-
getOptions
Description copied from interface:ErasureCoderThe options of erasure coder. This option is passed to raw erasure coder as it is.- Specified by:
getOptionsin interfaceErasureCoder- Returns:
- erasure coder options
-
getInputBlocks
We have all the data blocks and parity blocks as input blocks for recovering by default. It's codec specific- Parameters:
blockGroup- blockGroup.- Returns:
- input blocks
-
getOutputBlocks
Which blocks were erased ?- Parameters:
blockGroup- blockGroup.- Returns:
- output blocks to recover
-
preferDirectBuffer
public boolean preferDirectBuffer()Description copied from interface:ErasureCoderTell if direct or off-heap buffer is preferred or not. It's for callers to decide how to allocate coding chunk buffers, either on heap or off heap. It will return false by default.- Specified by:
preferDirectBufferin interfaceErasureCoder- Returns:
- true if direct buffer is preferred for performance consideration, otherwise false.
-
release
public void release()Description copied from interface:ErasureCoderRelease the resources if any. Good chance to invoke RawErasureCoder#release.- Specified by:
releasein interfaceErasureCoder
-
prepareDecodingStep
Perform decoding against a block blockGroup.- Parameters:
blockGroup- blockGroup.- Returns:
- decoding step for caller to do the real work
-
getNumErasedBlocks
Get the number of erased blocks in the block group.- Parameters:
blockGroup- blockGroup.- Returns:
- number of erased blocks
-
getNumErasedBlocks
Find out how many blocks are erased.- Parameters:
inputBlocks- all the input blocks- Returns:
- number of erased blocks
-
getErasedIndexes
Get indexes of erased blocks from inputBlocks- Parameters:
inputBlocks- inputBlocks.- Returns:
- indexes of erased blocks from inputBlocks
-