
<!DOCTYPE html>
<html lang="en" dir=ZgotmplZ>

<head>
  


<link rel="stylesheet" href="/bootstrap/css/bootstrap.min.css">
<script src="/bootstrap/js/bootstrap.bundle.min.js"></script>
<link rel="stylesheet" type="text/css" href="/font-awesome/css/font-awesome.min.css">
<script src="/js/anchor.min.js"></script>
<script src="/js/flink.js"></script>
<link rel="canonical" href="https://flink.apache.org/2018/02/28/an-overview-of-end-to-end-exactly-once-processing-in-apache-flink-with-apache-kafka-too/">

  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="This post is an adaptation of Piotr Nowojski&rsquo;s presentation from Flink Forward Berlin 2017. You can find the slides and a recording of the presentation on the Flink Forward Berlin website.
Apache Flink 1.4.0, released in December 2017, introduced a significant milestone for stream processing with Flink: a new feature called TwoPhaseCommitSinkFunction (relevant Jira here) that extracts the common logic of the two-phase commit protocol and makes it possible to build end-to-end exactly-once applications with Flink and a selection of data sources and sinks, including Apache Kafka versions 0.">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="An Overview of End-to-End Exactly-Once Processing in Apache Flink (with Apache Kafka, too!)" />
<meta property="og:description" content="This post is an adaptation of Piotr Nowojski&rsquo;s presentation from Flink Forward Berlin 2017. You can find the slides and a recording of the presentation on the Flink Forward Berlin website.
Apache Flink 1.4.0, released in December 2017, introduced a significant milestone for stream processing with Flink: a new feature called TwoPhaseCommitSinkFunction (relevant Jira here) that extracts the common logic of the two-phase commit protocol and makes it possible to build end-to-end exactly-once applications with Flink and a selection of data sources and sinks, including Apache Kafka versions 0." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://flink.apache.org/2018/02/28/an-overview-of-end-to-end-exactly-once-processing-in-apache-flink-with-apache-kafka-too/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2018-02-28T12:00:00+00:00" />
<meta property="article:modified_time" content="2018-02-28T12:00:00+00:00" />
<title>An Overview of End-to-End Exactly-Once Processing in Apache Flink (with Apache Kafka, too!) | Apache Flink</title>
<link rel="manifest" href="/manifest.json">
<link rel="icon" href="/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
<script defer src="/en.search.min.2dcb18b1dc51a58cf008db2e374638721a2e778c982365ff222f54319caecd83.js" integrity="sha256-LcsYsdxRpYzwCNsuN0Y4choud4yYI2X/Ii9UMZyuzYM="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->

  <meta name="generator" content="Hugo 0.124.1">

    
    <script>
      var _paq = window._paq = window._paq || [];
       
       
      _paq.push(['disableCookies']);
       
      _paq.push(["setDomains", ["*.flink.apache.org","*.nightlies.apache.org/flink"]]);
      _paq.push(['trackPageView']);
      _paq.push(['enableLinkTracking']);
      (function() {
        var u="//analytics.apache.org/";
        _paq.push(['setTrackerUrl', u+'matomo.php']);
        _paq.push(['setSiteId', '1']);
        var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
        g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
      })();
    </script>
    
</head>

<body dir=ZgotmplZ>
  


<header>
  <nav class="navbar navbar-expand-xl">
    <div class="container-fluid">
      <a class="navbar-brand" href="/">
        <img src="/img/logo/png/100/flink_squirrel_100_color.png" alt="Apache Flink" height="47" width="47" class="d-inline-block align-text-middle">
        <span>Apache Flink</span>
      </a>
      <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
          <i class="fa fa-bars navbar-toggler-icon"></i>
      </button>
      <div class="collapse navbar-collapse" id="navbarSupportedContent">
        <ul class="navbar-nav">
          





    
      
  
    <li class="nav-item dropdown">
      <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">About</a>
      <ul class="dropdown-menu">
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/flink-architecture/">Architecture</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/flink-applications/">Applications</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/flink-operations/">Operations</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/use-cases/">Use Cases</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/powered-by/">Powered By</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/roadmap/">Roadmap</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/community/">Community & Project Info</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/security/">Security</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/special-thanks/">Special Thanks</a>
  

          </li>
        
      </ul>
    </li>
  

    
      
  
    <li class="nav-item dropdown">
      <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Getting Started</a>
      <ul class="dropdown-menu">
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/try-flink/local_installation/">With Flink<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/docs/try-flink-kubernetes-operator/quick-start/">With Flink Kubernetes Operator<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable/docs/get-started/introduction/">With Flink CDC<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/docs/try-flink-ml/quick-start/">With Flink ML<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/getting-started/project-setup.html">With Flink Stateful Functions<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/learn-flink/overview/">Training Course<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
      </ul>
    </li>
  

    
      
  
    <li class="nav-item dropdown">
      <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Documentation</a>
      <ul class="dropdown-menu">
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-lts/">Flink 1.20 (LTS)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-master/">Flink Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/">Kubernetes Operator 1.13 (latest)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main">Kubernetes Operator Main (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable">CDC 3.5 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-master">CDC Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/">ML 2.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-master">ML Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/">Stateful Functions 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-master">Stateful Functions Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
      </ul>
    </li>
  

    
      
  
    <li class="nav-item dropdown">
      <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">How to Contribute</a>
      <ul class="dropdown-menu">
        
          <li>
            
  
    <a class="dropdown-item" href="/how-to-contribute/overview/">Overview</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/how-to-contribute/contribute-code/">Contribute Code</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/how-to-contribute/reviewing-prs/">Review Pull Requests</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/how-to-contribute/code-style-and-quality-preamble/">Code Style and Quality Guide</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/how-to-contribute/contribute-documentation/">Contribute Documentation</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/how-to-contribute/documentation-style-guide/">Documentation Style Guide</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/how-to-contribute/improve-website/">Contribute to the Website</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/how-to-contribute/getting-help/">Getting Help</a>
  

          </li>
        
      </ul>
    </li>
  

    


    
      
  
    <li class="nav-item">
      
  
    <a class="nav-link" href="/posts/">Flink Blog</a>
  

    </li>
  

    
      
  
    <li class="nav-item">
      
  
    <a class="nav-link" href="/downloads/">Downloads</a>
  

    </li>
  

    


    









        </ul>
        <div class="book-search">
          <div class="book-search-spinner hidden">
            <i class="fa fa-refresh fa-spin"></i>
          </div>
          <form class="search-bar d-flex" onsubmit="return false;"su>
            <input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/">
            <i class="fa fa-search search"></i>
            <i class="fa fa-circle-o-notch fa-spin spinner"></i>
          </form>
          <div class="book-search-spinner hidden"></div>
          <ul id="book-search-results"></ul>
        </div>
      </div>
    </div>
  </nav>
  <div class="navbar-clearfix"></div>
</header>
 
  
      <main class="flex">
        <section class="container book-page">
          
<article class="markdown">
    <h1>
        <a href="/2018/02/28/an-overview-of-end-to-end-exactly-once-processing-in-apache-flink-with-apache-kafka-too/">An Overview of End-to-End Exactly-Once Processing in Apache Flink (with Apache Kafka, too!)</a>
    </h1>
    


  February 28, 2018 -



  Piotr Nowojski

  <a href="https://twitter.com/PiotrNowojski">(@PiotrNowojski)</a>
  

  Mike Winters

  <a href="https://twitter.com/wints">(@wints)</a>
  



    <p><p><em>This post is an adaptation of <a href="https://berlin.flink-forward.org/kb_sessions/hit-me-baby-just-one-time-building-end-to-end-exactly-once-applications-with-flink/">Piotr Nowojski&rsquo;s presentation from Flink Forward Berlin 2017</a>. You can find the slides and a recording of the presentation on the Flink Forward Berlin website.</em></p>
<p>Apache Flink 1.4.0, released in December 2017, introduced a significant milestone for stream processing with Flink: a new feature called <code>TwoPhaseCommitSinkFunction</code> (<a href="https://issues.apache.org/jira/browse/FLINK-7210">relevant Jira here</a>) that extracts the common logic of the two-phase commit protocol and makes it possible to build end-to-end exactly-once applications with Flink and a selection of data sources and sinks, including Apache Kafka versions 0.11 and beyond. It provides a layer of abstraction and requires a user to implement only a handful of methods to achieve end-to-end exactly-once semantics.</p>
<p>If that&rsquo;s all you need to hear, let us point you <a href="//nightlies.apache.org/flink/flink-docs-release-1.4/api/java/org/apache/flink/streaming/api/functions/sink/TwoPhaseCommitSinkFunction.html">to the relevant place in the Flink documentation</a>, where you can read about how to put <code>TwoPhaseCommitSinkFunction</code> to use.</p>
<p>But if you&rsquo;d like to learn more, in this post, we&rsquo;ll share an in-depth overview of the new feature and what is happening behind the scenes in Flink.</p>
<p>Throughout the rest of this post, we&rsquo;ll:</p>
<ul>
<li>Describe the role of Flink&rsquo;s checkpoints for guaranteeing exactly-once results within a Flink application.</li>
<li>Show how Flink interacts with data sources and data sinks via the two-phase commit protocol to deliver <em>end-to-end</em> exactly-once guarantees.</li>
<li>Walk through a simple example on how to use <code>TwoPhaseCommitSinkFunction</code> to implement an exactly-once file sink.</li>
</ul>
<h2 id="exactly-once-semantics-within-an-apache-flink-application">
  Exactly-once Semantics Within an Apache Flink Application
  <a class="anchor" href="#exactly-once-semantics-within-an-apache-flink-application">#</a>
</h2>
<p>When we say &ldquo;exactly-once semantics&rdquo;, what we mean is that each incoming event affects the final results exactly once. Even in case of a machine or software failure, there&rsquo;s no duplicate data and no data that goes unprocessed.</p>
<p>Flink has long provided exactly-once semantics <em>within</em> a Flink application. Over the past few years, we&rsquo;ve <a href="https://data-artisans.com/blog/high-throughput-low-latency-and-exactly-once-stream-processing-with-apache-flink">written in depth about Flink&rsquo;s checkpointing</a>, which is at the core of Flink&rsquo;s ability to provide exactly-once semantics. The Flink documentation also <a href="//nightlies.apache.org/flink/flink-docs-release-1.4/ops/state/checkpoints.html">provides a thorough overview of the feature</a>.</p>
<p>Before we continue, here&rsquo;s a quick summary of the checkpointing algorithm because understanding checkpoints is necessary for understanding this broader topic.</p>
<p>A checkpoint in Flink is a consistent snapshot of:</p>
<ol>
<li>The current state of an application</li>
<li>The position in an input stream</li>
</ol>
<p>Flink generates checkpoints on a regular, configurable interval and then writes the checkpoint to a persistent storage system, such as S3 or HDFS. Writing the checkpoint data to the persistent storage happens asynchronously, which means that a Flink application continues to process data during the checkpointing process.</p>
<p>In the event of a machine or software failure and upon restart, a Flink application resumes processing from the most recent successfully-completed checkpoint; Flink restores application state and rolls back to the correct position in the input stream from a checkpoint before processing starts again. This means that Flink computes results as though the failure never occurred.</p>
<p>Before Flink 1.4.0, exactly-once semantics were limited to the scope of <em>a Flink application only</em> and did not extend to most of the external systems to which Flink sends data after processing.</p>
<p>But Flink applications operate in conjunction with a wide range of data sinks, and developers should be able to maintain exactly-once semantics beyond the context of one component.</p>
<p>To provide <em>end-to-end exactly-once</em> semantics&ndash;that is, semantics that also apply to the external systems that Flink writes to in addition to the state of the Flink application&ndash;these external systems must provide a means to commit or roll back writes that coordinate with Flink&rsquo;s checkpoints.</p>
<p>One common approach for coordinating commits and rollbacks in a distributed system is the <a href="https://en.wikipedia.org/wiki/Two-phase_commit_protocol">two-phase commit protocol</a>. In the next section, we&rsquo;ll go behind the scenes and discuss how Flink&rsquo;s <code>TwoPhaseCommitSinkFunction </code>utilizes the two-phase commit protocol to provide end-to-end exactly-once semantics.</p>
<h2 id="end-to-end-exactly-once-applications-with-apache-flink">
  End-to-end Exactly Once Applications with Apache Flink
  <a class="anchor" href="#end-to-end-exactly-once-applications-with-apache-flink">#</a>
</h2>
<p>We&rsquo;ll walk through the two-phase commit protocol and how it enables end-to-end exactly-once semantics in a sample Flink application that reads from and writes to Kafka. Kafka is a popular messaging system to use along with Flink, and Kafka recently added support for transactions with its 0.11 release. <a href="//nightlies.apache.org/flink/flink-docs-release-1.4/dev/connectors/kafka.html#kafka-011">This means that Flink now has the necessary mechanism to provide end-to-end exactly-once semantics</a> in applications when receiving data from and writing data to Kafka.</p>
<p>Flink&rsquo;s support for end-to-end exactly-once semantics is not limited to Kafka and you can use it with any source / sink that provides the necessary coordination mechanism. For example, <a href="http://pravega.io/">Pravega</a>, an open-source streaming storage system from Dell/EMC, also supports end-to-end exactly-once semantics with Flink via the <code>TwoPhaseCommitSinkFunction</code>.</p>
<center>
<img src="/img/blog/eo-post-graphic-1.png" width="600px" alt="A sample Flink application"/>
</center>
<p>In the sample Flink application that we&rsquo;ll discuss today, we have:</p>
<ul>
<li>A data source that reads from Kafka (in Flink, a <a href="//nightlies.apache.org/flink/flink-docs-release-1.4/dev/connectors/kafka.html#kafka-consumer">KafkaConsumer</a>)</li>
<li>A windowed aggregation</li>
<li>A data sink that writes data back to Kafka (in Flink, a <a href="//nightlies.apache.org/flink/flink-docs-release-1.4/dev/connectors/kafka.html#kafka-producer">KafkaProducer</a>)</li>
</ul>
<p>For the data sink to provide exactly-once guarantees, it must write all data to Kafka within the scope of a transaction. A commit bundles all writes between two checkpoints.</p>
<p>This ensures that writes are rolled back in case of a failure.</p>
<p>However, in a distributed system with multiple, concurrently-running sink tasks, a simple commit or rollback is not sufficient, because all of the components must &ldquo;agree&rdquo; together on committing or rolling back to ensure a consistent result. Flink uses the two-phase commit protocol and its pre-commit phase to address this challenge.</p>
<p>The starting of a checkpoint represents the &ldquo;pre-commit&rdquo; phase of our two-phase commit protocol. When a checkpoint starts, the Flink JobManager injects a checkpoint barrier (which separates the records in the data stream into the set that goes into the current checkpoint vs. the set that goes into the next checkpoint) into the data stream.</p>
<p>The barrier is passed from operator to operator. For every operator, it triggers the operator&rsquo;s state backend to take a snapshot of its state.</p>
<center>
<img src="/img/blog/eo-post-graphic-2.png" width="600px" alt="A sample Flink application - precommit"/>
</center>
<p>The data source stores its Kafka offsets, and after completing this, it passes the checkpoint barrier to the next operator.</p>
<p>This approach works if an operator has internal state <em>only</em>. <em>Internal state</em> is everything that is stored and managed by Flink&rsquo;s state backends - for example, the windowed sums in the second operator. When a process has only internal state, there is no need to perform any additional action during pre-commit aside from updating the data in the state backends before it is checkpointed. Flink takes care of correctly committing those writes in case of checkpoint success or aborting them in case of failure.</p>
<center>
<img src="/img/blog/eo-post-graphic-3.png" width="600px" alt="A sample Flink application - precommit without external state"/>
</center>
<p>However, when a process has <em>external</em> state, this state must be handled a bit differently. External state usually comes in the form of writes to an external system such as Kafka. In that case, to provide exactly-once guarantees, the external system must provide support for transactions that integrates with a two-phase commit protocol.</p>
<p>We know that the data sink in our example has such external state because it&rsquo;s writing data to Kafka. In this case, in the pre-commit phase, the data sink must pre-commit its external transaction in addition to writing its state to the state backend.</p>
<center>
<img src="/img/blog/eo-post-graphic-4.png" width="600px" alt="A sample Flink application - precommit with external state"/>
</center>
<p>The pre-commit phase finishes when the checkpoint barrier passes through all of the operators and the triggered snapshot callbacks complete. At this point the checkpoint completed successfully and consists of the state of the entire application, including pre-committed external state. In case of a failure, we would re-initialize the application from this checkpoint.</p>
<p>The next step is to notify all operators that the checkpoint has succeeded. This is the commit phase of the two-phase commit protocol and the JobManager issues checkpoint-completed callbacks for every operator in the application. The data source and window operator have no external state, and so in the commit phase, these operators don&rsquo;t have to take any action. The data sink does have external state, though, and commits the transaction with the external writes.</p>
<center>
<img src="/img/blog/eo-post-graphic-5.png" width="600px" alt="A sample Flink application - commit external state"/>
</center>
<p>So let&rsquo;s put all of these different pieces together:</p>
<ul>
<li>Once all of the operators complete their pre-commit, they issue a commit.</li>
<li>If at least one pre-commit fails, all others are aborted, and we roll back to the previous successfully-completed checkpoint.</li>
<li>After a successful pre-commit, the commit <em>must</em> be guaranteed to eventually succeed &ndash; both our operators and our external system need to make this guarantee. If a commit fails (for example, due to an intermittent network issue), the entire Flink application fails, restarts according to the user&rsquo;s restart strategy, and there is another commit attempt. This process is critical because if the commit does not eventually succeed, data loss occurs.</li>
</ul>
<p>Therefore, we can be sure that all operators agree on the final outcome of the checkpoint: all operators agree that the data is either committed or that the commit is aborted and rolled back.</p>
<h2 id="implementing-the-two-phase-commit-operator-in-flink">
  Implementing the Two-Phase Commit Operator in Flink
  <a class="anchor" href="#implementing-the-two-phase-commit-operator-in-flink">#</a>
</h2>
<p>All the logic required to put a two-phase commit protocol together can be a little bit complicated and that&rsquo;s why Flink extracts the common logic of the two-phase commit protocol into the abstract <code>TwoPhaseCommitSinkFunction</code> class<code>. </code></p>
<p>Let&rsquo;s discuss how to extend a <code>TwoPhaseCommitSinkFunction</code> on a simple file-based example. We need to implement only four methods and present their implementations for an exactly-once file sink:</p>
<ol>
<li><code>beginTransaction - </code>to begin the transaction, we create a temporary file in a temporary directory on our destination file system. Subsequently, we can write data to this file as we process it.</li>
<li><code>preCommit - </code>on pre-commit, we flush the file, close it, and never write to it again. We&rsquo;ll also start a new transaction for any subsequent writes that belong to the next checkpoint.</li>
<li><code>commit - </code>on commit, we atomically move the pre-committed file to the actual destination directory. Please note that this increases the latency in the visibility of the output data.</li>
<li><code>abort - </code>on abort, we delete the temporary file.</li>
</ol>
<p>As we know, if there&rsquo;s any failure, Flink restores the state of the application to the latest successful checkpoint. One potential catch is in a rare case when the failure occurs after a successful pre-commit but before notification of that fact (a commit) reaches our operator. In that case, Flink restores our operator to the state that has already been pre-committed but not yet committed.</p>
<p>We must save enough information about pre-committed transactions in checkpointed state to be able to either <code>abort</code> or <code>commit</code> transactions after a restart. In our example, this would be the path to the temporary file and target directory.</p>
<p>The <code>TwoPhaseCommitSinkFunction</code> takes this scenario into account, and it always issues a preemptive commit when restoring state from a checkpoint. It is our responsibility to implement a commit in an idempotent way. Generally, this shouldn&rsquo;t be an issue. In our example, we can recognize such a situation: the temporary file is not in the temporary directory, but has already been moved to the target directory.</p>
<p>There are a handful of other edge cases that <code>TwoPhaseCommitSinkFunction</code> takes into account, too. <a href="//nightlies.apache.org/flink/flink-docs-release-1.4/api/java/org/apache/flink/streaming/api/functions/sink/TwoPhaseCommitSinkFunction.html">Learn more in the Flink documentation</a>.</p>
<h2 id="wrapping-up">
  Wrapping Up
  <a class="anchor" href="#wrapping-up">#</a>
</h2>
<p>If you&rsquo;ve made it this far, thanks for staying with us through a detailed post. Here are some key points that we covered:</p>
<ul>
<li>Flink&rsquo;s checkpointing system serves as Flink&rsquo;s basis for supporting a two-phase commit protocol and providing end-to-end exactly-once semantics.</li>
<li>An advantage of this approach is that Flink does not materialize data in transit the way that some other systems do&ndash;there&rsquo;s no need to write every stage of the computation to disk as is the case is most batch processing.</li>
<li>Flink&rsquo;s new <code>TwoPhaseCommitSinkFunction</code> extracts the common logic of the two-phase commit protocol and makes it possible to build end-to-end exactly-once applications with Flink and external systems that support transactions</li>
<li>Starting with <a href="https://data-artisans.com/blog/announcing-the-apache-flink-1-4-0-release">Flink 1.4.0</a>, both the Pravega and Kafka 0.11 producers provide exactly-once semantics; Kafka introduced transactions for the first time in Kafka 0.11, which is what made the Kafka exactly-once producer possible in Flink.</li>
<li>The <a href="//nightlies.apache.org/flink/flink-docs-release-1.4/dev/connectors/kafka.html#kafka-011">Kafka 0.11 producer</a> is implemented on top of the <code>TwoPhaseCommitSinkFunction</code>, and it offers very low overhead compared to the at-least-once Kafka producer.</li>
</ul>
<p>We&rsquo;re very excited about what this new feature enables, and we look forward to being able to support additional producers with the <code>TwoPhaseCommitSinkFunction</code> in the future.</p>
<p><em>This post <a href="https://data-artisans.com/blog/end-to-end-exactly-once-processing-apache-flink-apache-kafka" target="_blank"> first appeared on the data Artisans blog </a>and was contributed to Apache Flink and the Flink blog by the original authors Piotr Nowojski and Mike Winters.</em></p>
<link rel="canonical" href="https://data-artisans.com/blog/end-to-end-exactly-once-processing-apache-flink-apache-kafka">
</p>
</article>

          



  
    
    <div class="edit-this-page">
      <p>
        <a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Translation+Specifications">Want to contribute translation?</a>
      </p>
      <p>
        <a href="//github.com/apache/flink-web/edit/asf-site/docs/content/posts/2018-02-28-end-to-end-exactly-once-apache-flink.md">
          Edit This Page<i class="fa fa-edit fa-fw"></i> 
        </a>
      </p>
    </div>

        </section>
        
          <aside class="book-toc">
            


<nav id="TableOfContents"><h3>On This Page <a href="javascript:void(0)" class="toc" onclick="collapseToc()"><i class="fa fa-times" aria-hidden="true"></i></a></h3>
  <ul>
    <li>
      <ul>
        <li><a href="#exactly-once-semantics-within-an-apache-flink-application">Exactly-once Semantics Within an Apache Flink Application</a></li>
        <li><a href="#end-to-end-exactly-once-applications-with-apache-flink">End-to-end Exactly Once Applications with Apache Flink</a></li>
        <li><a href="#implementing-the-two-phase-commit-operator-in-flink">Implementing the Two-Phase Commit Operator in Flink</a></li>
        <li><a href="#wrapping-up">Wrapping Up</a></li>
      </ul>
    </li>
  </ul>
</nav>


          </aside>
          <aside class="expand-toc hidden">
            <a class="toc" onclick="expandToc()" href="javascript:void(0)">
              <i class="fa fa-bars" aria-hidden="true"></i>
            </a>
          </aside>
        
      </main>

      <footer>
        


<div class="separator"></div>
<div class="panels">
  <div class="wrapper">
      <div class="panel">
        <ul>
          <li>
            <a href="https://flink-packages.org/">flink-packages.org</a>
          </li>
          <li>
            <a href="https://www.apache.org/">Apache Software Foundation</a>
          </li>
          <li>
            <a href="https://www.apache.org/licenses/">License</a>
          </li>
          
          
          
            
          
            
          
          

          
            
              
            
          
            
              
                <li>
                  <a  href="/zh/">
                    <i class="fa fa-globe" aria-hidden="true"></i>&nbsp;中文版
                  </a>
                </li>
              
            
          
       </ul>
      </div>
      <div class="panel">
        <ul>
          <li>
            <a href="/what-is-flink/security">Security</a-->
          </li>
          <li>
            <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a>
          </li>
          <li>
            <a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
          </li>
       </ul>
      </div>
      <div class="panel icons">
        <div>
          <a href="/posts">
            <div class="icon flink-blog-icon"></div>
            <span>Flink blog</span>
          </a>
        </div>
        <div>
          <a href="https://github.com/apache/flink">
            <div class="icon flink-github-icon"></div>
            <span>Github</span>
          </a>
        </div>
        <div>
          <a href="https://twitter.com/apacheflink">
            <div class="icon flink-twitter-icon"></div>
            <span>Twitter</span>
          </a>
        </div>
      </div>
  </div>
</div>

<hr/>

<div class="container disclaimer">
  <p>The contents of this website are © 2024 Apache Software Foundation under the terms of the Apache License v2. Apache Flink, Flink, and the Flink logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
</div>



      </footer>
    
  </body>
</html>






