Uploaded image for project: 'Flink'
  1. Flink
  2. FLINK-10653

Introduce Pluggable Shuffle Service Architecture

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 1.9.0
    • Runtime / Network
    • None

    Description

      This is the umbrella issue for improving shuffle architecture.

      Shuffle is the process of data transfer between stages, which involves in writing outputs on sender side and reading data on receiver side. In flink implementation, it covers three parts of writer, transport layer and reader separately which are uniformed for both streaming and batch jobs.

      In detail, the current ResultPartitionWriter interface on upstream side only supports in-memory outputs for streaming job and local persistent file outputs for batch job. If we extend to implement another writer such as DfsWriter, RdmaWriter, SortMergeWriter, etc based on ResultPartitionWriter interface, it has not theĀ unified mechanism to extend the reader side accordingly.

      In order to make the shuffle architecture more flexible and support more scenarios especially for batch jobs, a high level shuffle architecture is necessary to manage and extend both writer and reader sides together.

      Refer to the design doc for more details.

      Attachments

        Issue Links

          1.
          Introduce ResultPartitionWithConsumableNotifier in task for notifying consumable result partition Sub-task Resolved Zhijiang
          2.
          Remove the schedule mode property from RPDD to TDD Sub-task Closed Zhijiang
          3.
          Introduce ShuffleMaster in Job Master Sub-task Resolved Andrey Zagrebin
          4.
          Introduce ShuffleEnvironment in Task Executor Sub-task Resolved Andrey Zagrebin
          5.
          Activate default shuffle implementation and remove legacy code Sub-task Closed Zhijiang  
          6.
          Extend the necessary methods in ResultPartitionWriter interface Sub-task Closed Zhijiang
          7.
          Make ResultPartitionWriter extend AutoCloseable Sub-task Closed Zhijiang
          8.
          Make InputGate interface extend AutoCloseable Sub-task Closed Zhijiang
          9.
          Remove IOMode from NetworkEnvironment Sub-task Closed Zhijiang
          10.
          Remove KvState related components from NetworkEnvironment Sub-task Closed Zhijiang
          11.
          Refactor the creation of ResultPartition and InputGate into NetworkEnvironment Sub-task Closed Zhijiang
          12.
          Replace IntermediateResultPartitionID with ResultPartitionID in ResultPartitionDeploymentDescriptor Sub-task Closed Zhijiang
          13.
          Refactor to simplify the process of scheduleOrUpdateConsumers Sub-task Resolved Zhijiang
          14.
          Refactor the constructor of NetworkEnvironment Sub-task Closed Zhijiang
          15.
          Abstract TaskEventPublisher interface for simplifying NetworkEnvironment Sub-task Closed Zhijiang
          16.
          Move network related options to NetworkEnvironmentOptions Sub-task Closed Zhijiang
          17.
          Remove legacy fields for SingleInputGate Sub-task Closed Zhijiang
          18.
          Remove unregister task from NetworkEnvironment to simplify the interface of ShuffleService Sub-task Closed Zhijiang
          19.
          Introduce partition/gate setup to decouple task registration with NetworkEnvironment Sub-task Closed Andrey Zagrebin
          20.
          Refactor IOMetrics to not distinguish between local/remote in/out bytes Sub-task Closed Zhijiang
          21.
          Introduce InputGateWithMetrics in Task to increment numBytesIn metric Sub-task Closed Zhijiang
          22.
          Consider introducing batch metric register in NetworkEnviroment Sub-task Closed Zhijiang  
          23.
          Refactor ResultPartitionManager to break tie with Task Sub-task Resolved Andrey Zagrebin
          24.
          Move network metrics setup into NetworkEnvironment Sub-task Closed Zhijiang
          25.
          Refactor the start method of ConnectionManager Sub-task Closed Zhijiang
          26.
          Move Task.inputGatesById to NetworkEnvironment Sub-task Closed Andrey Zagrebin
          27.
          Introduce an encapsulated metric group layout for shuffle API and deprecate old one Sub-task Closed Andrey Zagrebin
          28.
          Remove getBufferProvider method from ResultPartitionWriter interface Sub-task Closed Zhijiang
          29.
          Switch Task from ResultPartition to ResultPartitionWriter interface Sub-task Closed Andrey Zagrebin
          30.
          Make NetworkEnvironment#start() return the binded data port Sub-task Closed Zhijiang
          31.
          Remove getOwningTaskName method from InputGate Sub-task Resolved Zhijiang
          32.
          Refactor abstract InputGate to general interface Sub-task Closed Zhijiang
          33.
          Introduce NetworkEnvironment.getUnreleasedPartitions instead of using getResultPartitionManager Sub-task Closed Andrey Zagrebin
          34.
          Introduce ShuffleService interface and its configuration Sub-task Resolved Andrey Zagrebin
          35.
          Make shuffle environment implementation independent with IOManager Sub-task Closed Zhijiang
          36.
          Remove abstract getPageSize method from InputGate Sub-task Resolved Zhijiang
          37.
          Remove ExecutionAttemptID argument from ResultPartitionFactory#create Sub-task Closed Zhijiang
          38.
          Add partition lifecycle related Shuffle API Sub-task Closed Andrey Zagrebin
          39.
          Introduce ShuffleDescriptor#ReleaseType and ShuffleDescriptor#getSupportedReleaseTypes Sub-task Closed Andrey Zagrebin
          40.
          Refactor the process of SchedulerNG#requestPartitionState Sub-task Closed Zhijiang  
          41.
          Remove getBufferSize method from BufferPoolFactory Sub-task Closed Zhijiang
          42.
          Remove ShuffleDescriptor.ReleaseType and make release semantics fixed per partition type Sub-task Closed Andrey Zagrebin

          Activity

            People

              zjwang Zhijiang
              zjwang Zhijiang
              Votes:
              5 Vote for this issue
              Watchers:
              30 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 13h 50m
                  13h 50m