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

Implement local aggregation in Flink

    XMLWordPrintableJSON

Details

    Description

      Currently, keyed streams are widely used to perform aggregating operations (e.g., reduce, sum and window) on the elements that have the same key. When executed at runtime, the elements with the same key will be sent to and aggregated by the same task.
       
      The performance of these aggregating operations is very sensitive to the distribution of keys. In the cases where the distribution of keys follows a powerful law, the performance will be significantly downgraded. More unluckily, increasing the degree of parallelism does not help when a task is overloaded by a single key.
       
      Local aggregation is a widely-adopted method to reduce the performance degraded by data skew. We can decompose the aggregating operations into two phases. In the first phase, we aggregate the elements of the same key at the sender side to obtain partial results. Then at the second phase, these partial results are sent to receivers according to their keys and are combined to obtain the final result. Since the number of partial results received by each receiver is limited by the number of senders, the imbalance among receivers can be reduced. Besides, by reducing the amount of transferred data the performance can be further improved.

      The design documentation is here: https://docs.google.com/document/d/1gizbbFPVtkPZPRS8AIuH8596BmgkfEa7NRwR6n3pQes/edit?usp=sharing

      The discussion thread is here: http://mail-archives.apache.org/mod_mbox/flink-dev/201906.mbox/%3CCAA_=o7DVTv8zjcXKnXyOyY7y_ktvgeXRVb4zHXJWzUHSULzeDg@mail.gmail.com%3E

       

       

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              yanghua vinoyang
              Votes:
              2 Vote for this issue
              Watchers:
              22 Start watching this issue

              Dates

                Created:
                Updated:

                Time Tracking

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