You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flink.apache.org by "Arvid Heise (Jira)" <ji...@apache.org> on 2021/08/04 08:41:00 UTC

[jira] [Created] (FLINK-23617) Co-locate sink operators with same parallelism

Arvid Heise created FLINK-23617:
-----------------------------------

             Summary: Co-locate sink operators with same parallelism
                 Key: FLINK-23617
                 URL: https://issues.apache.org/jira/browse/FLINK-23617
             Project: Flink
          Issue Type: Improvement
          Components: API / DataStream
    Affects Versions: 1.14.0
            Reporter: Arvid Heise


FLINK-19531 introduced the implementation of the Sink interface. It strictly cut the different parts of the sink pipeline into 3 operators:

writer -> committer -> global committer

In streaming mode with a parallelism p, the pipeline is executed as follows
writer(parallelism=p) -> committer(parallelism=p) -> global committer(parallelism=1).
Here we could bundle writer+committer into one operator.

In batch mode with a parallelism p, the pipeline is executed as follows
writer(parallelism=p) -> committer(parallelism=1) -> global committer(parallelism=1).
Here we could bundle committer+global committer into one operator. (Committer needs to run with parallelism=1 to create a pipeline region and reduce the risk of dataloss during commit; we can hopefully fix it after FLIP-147)

Having fewer operators will decrease the need to copy the committables in the operator chain (where we currently mostly use Kryo). Thus, we can implement connection/transaction pooling in streaming, where committables are reused after successful commit.

The proposal of this ticket is to extract the functionality of the 7 different operator implementations with their factories into reusable building blocks and use them in 2 operators (writer+committer and committer+global committer).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)