Class TieredResultPartition
java.lang.Object
org.apache.flink.runtime.io.network.partition.ResultPartition
org.apache.flink.runtime.io.network.partition.hybrid.tiered.shuffle.TieredResultPartition
- All Implemented Interfaces:
AutoCloseable,AvailabilityProvider,ResultPartitionWriter
TieredResultPartition appends records and events to the tiered storage, which supports
the upstream dynamically switches storage tier for writing shuffle data, and the downstream will
read data from the relevant tier.-
Nested Class Summary
Nested classes/interfaces inherited from interface org.apache.flink.runtime.io.AvailabilityProvider
AvailabilityProvider.AvailabilityHelper -
Field Summary
Fields inherited from class org.apache.flink.runtime.io.network.partition.ResultPartition
bufferCompressor, bufferPool, LOG, numBuffersOut, numBytesOut, numSubpartitions, partitionManager, partitionType, resultPartitionBytesFields inherited from interface org.apache.flink.runtime.io.AvailabilityProvider
AVAILABLE -
Constructor Summary
ConstructorsConstructorDescriptionTieredResultPartition(String owningTaskName, int partitionIndex, ResultPartitionID partitionId, ResultPartitionType partitionType, int numSubpartitions, int numTargetKeyGroups, ResultPartitionManager partitionManager, BufferCompressor bufferCompressor, org.apache.flink.util.function.SupplierWithException<BufferPool, IOException> bufferPoolFactory, TieredStorageProducerClient tieredStorageProducerClient, TieredStorageResourceRegistry tieredStorageResourceRegistry, TieredStorageNettyServiceImpl nettyService, List<TieredStorageMemorySpec> tieredStorageMemorySpecs, TieredStorageMemoryManager storageMemoryManager) -
Method Summary
Modifier and TypeMethodDescriptionvoidabortCheckpoint(long checkpointId, CheckpointException cause) Abort the checkpoint.voidalignedBarrierTimeout(long checkpointId) Timeout the aligned barrier to unaligned barrier.voidbroadcastEvent(AbstractEvent event, boolean isPriorityEvent) Writes the givenAbstractEventto all subpartitions.voidbroadcastRecord(ByteBuffer record) Writes the given serialized record to all subpartitions.voidclose()Closes the partition writer which releases the allocated resource, for example the buffer pool.protected ResultSubpartitionViewcreateSubpartitionView(int subpartitionId, BufferAvailabilityListener availabilityListener) Returns a reader for the subpartition with the given index.voidemitRecord(ByteBuffer record, int consumerId) Writes the given serialized record to the target subpartition.voidfinish()Finishes the result partition.voidflush(int subpartitionIndex) Manually trigger the consumption of data from the given subpartitions.voidflushAll()Manually trigger the consumption of data from all subpartitions.Gets the future indicating whether all the records has been processed by the downstream tasks.intReturns the total number of queued buffers of all subpartitions.intgetNumberOfQueuedBuffers(int targetSubpartition) Returns the number of queued buffers of the given target subpartition.longReturns the total size in bytes of queued buffers of all subpartitions.voidnotifyEndOfData(StopMode mode) Notifies the downstream tasks that thisResultPartitionWriterhave emitted all the user records.voidonSubpartitionAllDataProcessed(int subpartition) The subpartition notifies that the corresponding downstream task have processed all the user records.protected voidReleases all produced data including both those stored in memory and persisted on disk.voidsetMetricGroup(TaskIOMetricGroup metrics) Sets the metric group for theResultPartitionWriter.protected voidDo the subclass's own setup operation.Methods inherited from class org.apache.flink.runtime.io.network.partition.ResultPartition
canBeCompressed, checkInProduceState, createSubpartitionView, fail, getBufferPool, getFailureCause, getNumberOfSubpartitions, getNumTargetKeyGroups, getOwningTaskName, getPartitionId, getPartitionIndex, getPartitionManager, getPartitionType, getResultPartitionBytes, isFinished, isNumberOfPartitionConsumerUndefined, isNumberOfPartitionConsumerUndefined, isReleased, release, release, setMaxOverdraftBuffersPerGate, setup, toStringMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.flink.runtime.io.AvailabilityProvider
isApproximatelyAvailable, isAvailable
-
Constructor Details
-
TieredResultPartition
public TieredResultPartition(String owningTaskName, int partitionIndex, ResultPartitionID partitionId, ResultPartitionType partitionType, int numSubpartitions, int numTargetKeyGroups, ResultPartitionManager partitionManager, @Nullable BufferCompressor bufferCompressor, org.apache.flink.util.function.SupplierWithException<BufferPool, IOException> bufferPoolFactory, TieredStorageProducerClient tieredStorageProducerClient, TieredStorageResourceRegistry tieredStorageResourceRegistry, TieredStorageNettyServiceImpl nettyService, List<TieredStorageMemorySpec> tieredStorageMemorySpecs, TieredStorageMemoryManager storageMemoryManager)
-
-
Method Details
-
setupInternal
Description copied from class:ResultPartitionDo the subclass's own setup operation.- Specified by:
setupInternalin classResultPartition- Throws:
IOException
-
setMetricGroup
Description copied from interface:ResultPartitionWriterSets the metric group for theResultPartitionWriter.- Specified by:
setMetricGroupin interfaceResultPartitionWriter- Overrides:
setMetricGroupin classResultPartition
-
emitRecord
Description copied from interface:ResultPartitionWriterWrites the given serialized record to the target subpartition.- Throws:
IOException
-
broadcastRecord
Description copied from interface:ResultPartitionWriterWrites the given serialized record to all subpartitions. One can also achieve the same effect by emitting the same record to all subpartitions one by one, however, this method can have better performance for the underlying implementation can do some optimizations, for example coping the given serialized record only once to a shared channel which can be consumed by all subpartitions.- Throws:
IOException
-
broadcastEvent
Description copied from interface:ResultPartitionWriterWrites the givenAbstractEventto all subpartitions.- Throws:
IOException
-
createSubpartitionView
protected ResultSubpartitionView createSubpartitionView(int subpartitionId, BufferAvailabilityListener availabilityListener) throws IOException Description copied from class:ResultPartitionReturns a reader for the subpartition with the given index.Given that the function to merge outputs from multiple subpartition views is supported uniformly in
UnionResultSubpartitionView, subclasses ofResultPartitiononly needs to take care of creating subpartition view for a single subpartition.- Specified by:
createSubpartitionViewin classResultPartition- Throws:
IOException
-
finish
Description copied from class:ResultPartitionFinishes the result partition.After this operation, it is not possible to add further data to the result partition.
For BLOCKING results, this will trigger the deployment of consuming tasks.
- Specified by:
finishin interfaceResultPartitionWriter- Overrides:
finishin classResultPartition- Throws:
IOException
-
close
public void close()Description copied from interface:ResultPartitionWriterCloses the partition writer which releases the allocated resource, for example the buffer pool.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceResultPartitionWriter- Overrides:
closein classResultPartition
-
releaseInternal
protected void releaseInternal()Description copied from class:ResultPartitionReleases all produced data including both those stored in memory and persisted on disk.- Specified by:
releaseInternalin classResultPartition
-
notifyEndOfData
Description copied from interface:ResultPartitionWriterNotifies the downstream tasks that thisResultPartitionWriterhave emitted all the user records.- Specified by:
notifyEndOfDatain interfaceResultPartitionWriter- Overrides:
notifyEndOfDatain classResultPartition- Parameters:
mode- tells if we should flush all records or not (it is false in case of stop-with-savepoint (--no-drain))- Throws:
IOException
-
getAvailableFuture
- Specified by:
getAvailableFuturein interfaceAvailabilityProvider- Overrides:
getAvailableFuturein classResultPartition- Returns:
- a future that is completed if the respective provider is available.
-
alignedBarrierTimeout
Description copied from interface:ResultPartitionWriterTimeout the aligned barrier to unaligned barrier.- Throws:
IOException
-
abortCheckpoint
Description copied from interface:ResultPartitionWriterAbort the checkpoint. -
flushAll
public void flushAll()Description copied from interface:ResultPartitionWriterManually trigger the consumption of data from all subpartitions. -
flush
public void flush(int subpartitionIndex) Description copied from interface:ResultPartitionWriterManually trigger the consumption of data from the given subpartitions. -
getAllDataProcessedFuture
Description copied from interface:ResultPartitionWriterGets the future indicating whether all the records has been processed by the downstream tasks.- Specified by:
getAllDataProcessedFuturein interfaceResultPartitionWriter- Overrides:
getAllDataProcessedFuturein classResultPartition
-
onSubpartitionAllDataProcessed
public void onSubpartitionAllDataProcessed(int subpartition) Description copied from class:ResultPartitionThe subpartition notifies that the corresponding downstream task have processed all the user records.- Overrides:
onSubpartitionAllDataProcessedin classResultPartition- Parameters:
subpartition- The index of the subpartition sending the notification.- See Also:
-
getNumberOfQueuedBuffers
public int getNumberOfQueuedBuffers()Description copied from class:ResultPartitionReturns the total number of queued buffers of all subpartitions.- Specified by:
getNumberOfQueuedBuffersin classResultPartition
-
getSizeOfQueuedBuffersUnsafe
public long getSizeOfQueuedBuffersUnsafe()Description copied from class:ResultPartitionReturns the total size in bytes of queued buffers of all subpartitions.- Specified by:
getSizeOfQueuedBuffersUnsafein classResultPartition
-
getNumberOfQueuedBuffers
public int getNumberOfQueuedBuffers(int targetSubpartition) Description copied from class:ResultPartitionReturns the number of queued buffers of the given target subpartition.- Specified by:
getNumberOfQueuedBuffersin classResultPartition
-