
<!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/2022/05/06/improvements-to-flink-operations-snapshots-ownership-and-savepoint-formats/">

  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Flink has become a well established data streaming engine and a mature project requires some shifting of priorities from thinking purely about new features towards improving stability and operational simplicity. In the last couple of releases, the Flink community has tried to address some known friction points, which includes improvements to the snapshotting process. Snapshotting takes a global, consistent image of the state of a Flink job and is integral to fault-tolerance and exacty-once processing.">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Improvements to Flink operations: Snapshots Ownership and Savepoint Formats" />
<meta property="og:description" content="Flink has become a well established data streaming engine and a mature project requires some shifting of priorities from thinking purely about new features towards improving stability and operational simplicity. In the last couple of releases, the Flink community has tried to address some known friction points, which includes improvements to the snapshotting process. Snapshotting takes a global, consistent image of the state of a Flink job and is integral to fault-tolerance and exacty-once processing." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://flink.apache.org/2022/05/06/improvements-to-flink-operations-snapshots-ownership-and-savepoint-formats/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-05-06T00:00:00+00:00" />
<meta property="article:modified_time" content="2022-05-06T00:00:00+00:00" />
<title>Improvements to Flink operations: Snapshots Ownership and Savepoint Formats | 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.2698f0d1b683dae4d6cb071668b310a55ebcf1c48d11410a015a51d90105b53e.js" integrity="sha256-Jpjw0baD2uTWywcWaLMQpV688cSNEUEKAVpR2QEFtT4="></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 1.19 (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-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.8 (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.0 (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="/2022/05/06/improvements-to-flink-operations-snapshots-ownership-and-savepoint-formats/">Improvements to Flink operations: Snapshots Ownership and Savepoint Formats</a>
    </h1>
    


  May 6, 2022 -



  Dawid Wysakowicz

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

  Daisy Tsang




    <p><p>Flink has become a well established data streaming engine and a
mature project requires some shifting of priorities from thinking purely about new features
towards improving stability and operational simplicity. In the last couple of releases, the Flink community has tried to address
some known friction points, which includes improvements to the
snapshotting process. Snapshotting takes a global, consistent image of the state of a Flink job and is integral to fault-tolerance and exacty-once processing. Snapshots include savepoints and checkpoints.</p>
<p>This post will outline the journey of improving snapshotting in past releases and the upcoming improvements in Flink 1.15, which includes making it possible to take savepoints in the native state backend specific format as well as clarifying snapshots ownership.</p>
<h1 id="past-improvements-to-the-snapshotting-process">
  Past improvements to the snapshotting process
  <a class="anchor" href="#past-improvements-to-the-snapshotting-process">#</a>
</h1>
<p>Flink 1.13 was the first release where we announced <a href="//nightlies.apache.org/flink/flink-docs-release-1.15/docs/concepts/stateful-stream-processing/#unaligned-checkpointing">unaligned checkpoints</a> to be production-ready. We
encouraged people to use them if their jobs are backpressured to a point where it causes issues for
checkpoints.  We also <a href="/news/2021/05/03/release-1.13.0.html#switching-state-backend-with-savepoints">unified the binary format of savepoints</a> across all
different state backends, which enables stateful switching of savepoints.</p>
<p>Flink 1.14 also brought additional improvements. As an alternative and as a complement
to unaligned checkpoints, we introduced a feature called <a href="/news/2021/09/29/release-1.14.0.html#buffer-debloating">&ldquo;buffer debloating&rdquo;</a>. This is built
around the concept of automatically adjusting the amount of in-flight data that needs to be aligned
while snapshotting. We also fixed another long-standing problem and made it
possible to <a href="/news/2021/09/29/release-1.14.0.html#checkpointing-and-bounded-streams">continue checkpointing even if there are finished tasks</a> in a JobGraph.</p>
<h1 id="new-improvements-to-the-snapshotting-process">
  New improvements to the snapshotting process
  <a class="anchor" href="#new-improvements-to-the-snapshotting-process">#</a>
</h1>
<p>You can expect more improvements in Flink 1.15! We continue to be invested in making it easy
to operate Flink clusters and have tackled the following problems. :)</p>
<p>Savepoints can be expensive
to take and restore from if taken for a very large state stored in the RocksDB state backend. In
order to circumvent this issue, we have seen users leveraging the externalized incremental checkpoints
instead of savepoints in order to benefit from the native RocksDB format. However, checkpoints and savepoints
serve different operational purposes. Thus, we now made it possible to take savepoints in the
native state backend specific format, while still maintaining some characteristics of savepoints (i.e. making them relocatable).</p>
<p>Another issue reported with externalized checkpoints is that it is not clear who owns the
checkpoint files (Flink or the user?). This is especially problematic when it comes to incremental RocksDB checkpoints
where you can easily end up in a situation where you do not know which checkpoints depend on which files
which makes it tough to clean those files up. To solve this issue, we added explicit restore
modes (CLAIM, NO_CLAIM, and LEGACY) which clearly define whether Flink should take
care of cleaning up the snapshots or whether it should remain the user&rsquo;s responsibility.
.</p>
<h2 id="the-new-restore-modes">
  The new restore modes
  <a class="anchor" href="#the-new-restore-modes">#</a>
</h2>
<p>The <code>Restore Mode</code> determines who takes ownership of the files that make up savepoints or
externalized checkpoints after they are restored. Snapshots, which are either checkpoints or savepoints
in this context, can be owned either by a user or Flink itself. If a snapshot is owned by a user,
Flink will not delete its files and will not depend on the existence
of such files since it might be deleted outside of Flink&rsquo;s control.</p>
<p>The restore modes are <code>CLAIM</code>, <code>NO_CLAIM</code>, and <code>LEGACY</code> (for backwards compatibility). You can pass the restore mode like this:</p>
<pre tabindex="0"><code>$ bin/flink run -s :savepointPath -restoreMode :mode -n [:runArgs]
</code></pre><p>While each restore mode serves a specific purpose, we believe the default <em>NO_CLAIM</em> mode is a good
tradeoff in most situations, as it provides clear ownership with a small price for the first
checkpoint after the restore.</p>
<p>Let&rsquo;s dig further into each of the modes.</p>
<h3 id="legacy-mode">
  LEGACY mode
  <a class="anchor" href="#legacy-mode">#</a>
</h3>
<p>The legacy mode is how Flink dealt with snapshots until version 1.15. In this mode, Flink will never delete the initial
checkpoint. Unfortunately, at the same time, it is not clear if a user can ever delete it as well.
The problem here is that Flink might immediately build an incremental checkpoint on top of the
restored one. Therefore, subsequent checkpoints depend on the restored checkpoint. Overall, the
ownership is not well defined in this mode.</p>
<div style="text-align: center">
  <img src="/img/blog/2022-05-06-restore-modes/restore-mode-legacy.svg" alt="LEGACY restore mode" width="70%">
</div>
<h3 id="no_claim-default-mode">
  NO_CLAIM (default) mode
  <a class="anchor" href="#no_claim-default-mode">#</a>
</h3>
<p>To fix the issue of files that no one can reliably claim ownership of, we introduced the <code>NO_CLAIM</code>
mode as the new default. In this mode, Flink will not assume ownership of the snapshot and will leave the files in
the user&rsquo;s control and never delete any of the files.  You can start multiple jobs from the
same snapshot in this mode.</p>
<p>In order to make sure Flink does not depend on any of the files from that snapshot, it will force
the first (successful) checkpoint to be a full checkpoint as opposed to an incremental one. This
only makes a difference for <code>state.backend: rocksdb</code>, because all other state backends always take
full checkpoints.</p>
<p>Once the first full checkpoint completes, all subsequent checkpoints will be taken as
usual/configured. Consequently, once a checkpoint succeeds, you can manually delete the original
snapshot. You can not do this earlier, because without any completed checkpoints, Flink will - upon
failure - try to recover from the initial snapshot.</p>
<div style="text-align: center">
  <img src="/img/blog/2022-05-06-restore-modes/restore-mode-no_claim.svg" alt="NO_CLAIM restore mode" width="70%" >
</div>
<h3 id="claim-mode">
  CLAIM mode
  <a class="anchor" href="#claim-mode">#</a>
</h3>
<p>If you do not want to sacrifice any performance while taking the first checkpoint, we suggest
looking into the <code>CLAIM</code> mode. In this mode, Flink claims ownership of the snapshot
and essentially treats it like a checkpoint: it controls the lifecycle and might delete it if it is
not needed for recovery anymore. Hence, it is not safe to manually delete the snapshot or to start
two jobs from the same snapshot. Flink keeps around a configured number of checkpoints.</p>
<div style="text-align: center">
  <img src="/img/blog/2022-05-06-restore-modes/restore-mode-claim.svg" alt="CLAIM restore mode" width="70%">
</div>
<h2 id="savepoint-format">
  Savepoint format
  <a class="anchor" href="#savepoint-format">#</a>
</h2>
<p>You can now trigger savepoints in the native format of state backends.
This has been introduced to match two characteristics, one of both savepoints and
checkpoints:</p>
<ul>
<li>self-contained, relocatable, and owned by users</li>
<li>lightweight (and thus fast to take and recover from)</li>
</ul>
<p>In order to provide the two features in a single concept, we provided a way for Flink to create a
savepoint in a (native) binary format of the used state backend. This brings a significant difference
especially in combination with the <code>state.backend: rocksdb</code> setting and incremental snapshots.</p>
<p>That state backend can leverage RocksDB native on-disk data structures which are usually referred to
as SST files. Incremental checkpoints leveraged those files and are
collections of those SST files with some additional metadata, which can be quickly reloaded
into the working directory of RocksDB upon restore.</p>
<p>Native savepoints can use the same mechanism of uploading the SST files instead of dumping the
entire state into a canonical Flink format. There is one additional benefit over simply using the
externalized incremental checkpoints: native savepoints are still relocatable and self-contained
in a single directory. In case of checkpoints that do not hold, because a single SST file can be
used by multiple checkpoints, and thus is put into a common shared directory. That is why they are
called incremental.</p>
<p>You can choose the savepoint format when triggering the savepoint like this:</p>
<pre tabindex="0"><code># take an intermediate savepoint
$ bin/flink savepoint --type [native/canonical] :jobId [:targetDirectory]

# stop the job with a savepoint
$ bin/flink stop --type [native/canonical] --savepointPath [:targetDirectory] :jobId
</code></pre><h3 id="capabilities-and-limitations">
  Capabilities and limitations
  <a class="anchor" href="#capabilities-and-limitations">#</a>
</h3>
<p>Unfortunately it is not possible to provide the same guarantees for all types of snapshots
(canonical or native savepoints and aligned or unaligned checkpoints). The main difference between
checkpoints and savepoints is that savepoints are still triggered and owned by users. Flink does not
create them automatically nor ever depends on their existence. Their main purpose is still for planned,
manual backups, whereas checkpoints are used for recovery. In database terms, savepoints are similar
to backups, whereas checkpoints are like recovery logs.</p>
<p>Having additional dimensions of properties in each of the two main snapshots category does not make
it easier, therefore we try to list what you can achieve with every type of snapshot.</p>
<p>The following table gives an overview of capabilities and limitations for the various types of
savepoints and checkpoints.</p>
<ul>
<li>✓ - Flink fully supports this type of snapshot</li>
<li>x - Flink doesn&rsquo;t support this type of snapshot</li>
</ul>
<table>
<thead>
<tr>
<th style="text-align:left">Operation</th>
<th style="text-align:left">Canonical Savepoint</th>
<th style="text-align:left">Native Savepoint</th>
<th style="text-align:left">Aligned Checkpoint</th>
<th style="text-align:left">Unaligned Checkpoint</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">State backend change</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">x</td>
<td style="text-align:left">x</td>
<td style="text-align:left">x</td>
</tr>
<tr>
<td style="text-align:left">State Processor API(writing)</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">x</td>
<td style="text-align:left">x</td>
<td style="text-align:left">x</td>
</tr>
<tr>
<td style="text-align:left">State Processor API(reading)</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">x</td>
</tr>
<tr>
<td style="text-align:left">Self-contained and relocatable</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">x</td>
<td style="text-align:left">x</td>
</tr>
<tr>
<td style="text-align:left">Schema evolution</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">✓</td>
</tr>
<tr>
<td style="text-align:left">Arbitrary job upgrade</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">x</td>
</tr>
<tr>
<td style="text-align:left">Non-arbitrary job upgrade</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">x</td>
</tr>
<tr>
<td style="text-align:left">Flink minor version upgrade</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">x</td>
</tr>
<tr>
<td style="text-align:left">Flink bug/patch version upgrade</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">✓</td>
</tr>
<tr>
<td style="text-align:left">Rescaling</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">✓</td>
<td style="text-align:left">✓</td>
</tr>
</tbody>
</table>
<ul>
<li>State backend change - you can restore from the snapshot with a different state.backend than the
one for which the snapshot was taken</li>
<li>State Processor API (writing) - The ability to create new snapshot via State Processor API.</li>
<li>State Processor API (reading) - The ability to read state from the existing snapshot via State
Processor API.</li>
<li>Self-contained and relocatable - One snapshot directory contains everything it needs for recovery.
You can move the directory around.</li>
<li>Schema evolution - Changing the data type of the <em>state</em> in your UDFs.</li>
<li>Arbitrary job upgrade - Restoring the snapshot with the different partitioning type(rescale,
rebalance, map, etc.)
or with a different record type for the existing operator. In other words you can add arbitrary
operators anywhere in your job graph.</li>
<li>Non-arbitrary job upgrade - In contrary to the above, you still should be able to add new
operators, but certain limitations apply. You can not change partitioning for existing operators
or the data type of records being exchanged.</li>
<li>Flink minor version upgrade - Restoring a snapshot which was taken for an older minor version of
Flink (1.x → 1.y).</li>
<li>Flink bug/patch version upgrade - Restoring a snapshot which was taken for an older patch version
of Flink (1.14.x → 1.14.y).</li>
<li>Rescaling - Restoring the snapshot with a different parallelism than was used during the snapshot
creation.</li>
</ul>
<h1 id="summary">
  Summary
  <a class="anchor" href="#summary">#</a>
</h1>
<p>We hope the changes we introduced over the last releases make it easier to operate Flink in respect
to snapshotting. We are eager to hear from you if any of the new features have helped you solve problems you&rsquo;ve faced in the past.
At the same time, if you still struggle with an issue or you had to work around some obstacles, please let
us know! Maybe we will be able to incorporate your approach or find a different solution together.</p>
</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/2022-05-06-restore-modes.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><a href="#past-improvements-to-the-snapshotting-process">Past improvements to the snapshotting process</a></li>
    <li><a href="#new-improvements-to-the-snapshotting-process">New improvements to the snapshotting process</a>
      <ul>
        <li><a href="#the-new-restore-modes">The new restore modes</a>
          <ul>
            <li><a href="#legacy-mode">LEGACY mode</a></li>
            <li><a href="#no_claim-default-mode">NO_CLAIM (default) mode</a></li>
            <li><a href="#claim-mode">CLAIM mode</a></li>
          </ul>
        </li>
        <li><a href="#savepoint-format">Savepoint format</a>
          <ul>
            <li><a href="#capabilities-and-limitations">Capabilities and limitations</a></li>
          </ul>
        </li>
      </ul>
    </li>
    <li><a href="#summary">Summary</a></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>






