Updating Ignite 2.9.0 docs
diff --git a/docs/2.9.0/persistence/snapshots.html b/docs/2.9.0/persistence/snapshots.html
new file mode 100644
index 0000000..bb09d72
--- /dev/null
+++ b/docs/2.9.0/persistence/snapshots.html
@@ -0,0 +1,2771 @@
+<!DOCTYPE html>
+
+
+
+<html lang="en">
+<head>
+ <!-- Global site tag (gtag.js) - Google Analytics -->
+ <script async src="https://www.googletagmanager.com/gtag/js?id=UA-61232409-1"></script>
+ <script>
+ window.dataLayer = window.dataLayer || [];
+ function gtag(){dataLayer.push(arguments);}
+ gtag('js', new Date());
+
+ gtag('config', 'UA-61232409-1');
+ </script>
+
+
+
+ <meta charset="UTF-8">
+ <meta name="ignite-version" content="2.9.0" />
+ <title>Cluster Snapshots | Ignite Documentation</title>
+
+ <link rel="canonical" href="/docs/latest/persistence/snapshots" />
+
+
+ <link rel="stylesheet" href="/assets/css/styles.css?1600372553">
+ <link rel="stylesheet" href="/assets/css/asciidoc-pygments.css">
+ <link rel="shortcut icon" href="/favicon.ico">
+ <meta name='viewport' content='width=device-width, height=device-height, initial-scale=1.0, minimum-scale=1.0'>
+
+ <script type="text/javascript" src="/assets/js/anchor.min.js?1600372553"></script>
+
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
+
+
+</head>
+<body>
+ <header>
+ <div class="container">
+ <button type='button' class='menu' title='Docs menu'>
+ <img src="/assets/images/menu-icon.svg"/>
+ </button>
+ <div class='home'>
+ <a href="/" class='home' title='Apache Ignite home'>
+ <img src="/assets/images/apache_ignite_logo.svg" alt="Apache Ignite logo" width="103" >
+ </a>
+ </div>
+
+ <nav>
+
+ </nav>
+
+ <select id="version-selector">
+ <option value="2.9.0">2.9.0</option>
+ </select>
+
+ <a href="https://github.com/apache/ignite" title='GitHub' class='github' target="_blank">
+ <img src="/assets/images/github-gray.svg" alt="GitHub logo">
+ </a>
+
+ <form class='search'>
+ <button class="search-close" type='button'><img src='/assets/images/cancel.svg'></button>
+ <input type="search" placeholder="Search…" id="search-input">
+ </form>
+ <button type='button' class='search-toggle'><img src='/assets/images/search.svg'></button>
+ <button type='button' class='top-nav-toggle'>⋮</button>
+
+
+
+ </div>
+</header>
+
+
+ <link rel="stylesheet" href="/assets/css/docs.css">
+<section class='page-docs'>
+
+
+
+
+<nav class='left-nav' data-swiftype-index='false'>
+
+
+ <li>
+
+
+ <a href="/docs/latest/preface" class='' >Preface</a>
+
+ </li>
+
+ <li>
+
+
+
+
+
+
+ <button type='button' data-guide-url="" class='group-toggle collapsed '>Quick Start Guides<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class='nav-group collapsed'>
+
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/quick-start/java"
+
+ class=''
+ >Java</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/quick-start/dotnet"
+
+ class=''
+ >.NET/C#</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/quick-start/cpp"
+
+ class=''
+ >C++</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/quick-start/python"
+
+ class=''
+ >Python</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/quick-start/nodejs"
+
+ class=''
+ >Node.JS</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/quick-start/sql"
+
+ class=''
+ >SQL</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/quick-start/php"
+
+ class=''
+ >PHP</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/quick-start/restapi"
+
+ class=''
+ >REST API</a>
+
+ </li>
+
+
+
+ </nav>
+
+ </li>
+
+ <li>
+
+
+
+
+
+
+ <button type='button' data-guide-url="/installation" class='group-toggle collapsed '>Installation<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class='nav-group collapsed'>
+
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/installation/installing-using-zip"
+
+ class=''
+ >Installing Using ZIP Archive</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/installation/installing-using-docker"
+
+ class=''
+ >Installing Using Docker</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/installation/deb-rpm"
+
+ class=''
+ >Installing DEB or RPM package</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+
+
+ <button
+ type='button'
+ class='collapsed '>Kubernetes<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class="sub_pages collapsed">
+
+
+
+
+ <li><a href="/docs/latest//installation/kubernetes/amazon-eks-deployment" class=''>Amazon EKS</a></li>
+
+
+
+ <li><a href="/docs/latest//installation/kubernetes/azure-deployment" class=''>Azure Kubernetes Service</a></li>
+
+
+
+ <li><a href="/docs/latest//installation/kubernetes/gke-deployment" class=''>Google Kubernetes Engine</a></li>
+
+ </nav>
+
+ </li>
+
+
+
+ </nav>
+
+ </li>
+
+ <li>
+
+
+
+
+
+
+ <button type='button' data-guide-url="" class='group-toggle collapsed '>Setting Up<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class='nav-group collapsed'>
+
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/setup"
+
+ class=''
+ >Setting Up Ignite for Java</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/setup-dotnet"
+
+ class=''
+ >Setting Up Ignite for .NET/C#</a>
+
+ </li>
+
+
+
+ </nav>
+
+ </li>
+
+ <li>
+
+
+ <a href="/docs/latest/understanding-configuration" class='' >Understanding Configuration</a>
+
+ </li>
+
+ <li>
+
+
+ <a href="/docs/latest/logging" class='' >Configuring Logging</a>
+
+ </li>
+
+ <li>
+
+
+ <a href="/docs/latest/starting-nodes" class='' >Starting and Stopping Nodes</a>
+
+ </li>
+
+ <li>
+
+
+
+
+
+
+ <button type='button' data-guide-url="" class='group-toggle collapsed '>Clustering<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class='nav-group collapsed'>
+
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/clustering/clustering"
+
+ class=''
+ >Overview</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/clustering/tcp-ip-discovery"
+
+ class=''
+ >TCP/IP Discovery</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/clustering/zookeeper-discovery"
+
+ class=''
+ >ZooKeeper Discovery</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/clustering/discovery-in-the-cloud"
+
+ class=''
+ >Discovery in the Cloud</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/clustering/network-configuration"
+
+ class=''
+ >Network Configuration</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/clustering/connect-client-nodes"
+
+ class=''
+ >Connecting Client Nodes</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/clustering/running-client-nodes-behind-nat"
+
+ class=''
+ >Running Client Nodes Behind NAT</a>
+
+ </li>
+
+
+
+ </nav>
+
+ </li>
+
+ <li>
+
+
+
+
+
+
+ <button type='button' data-guide-url="" class='group-toggle collapsed '>Data Modeling<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class='nav-group collapsed'>
+
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/data-modeling/data-modeling"
+
+ class=''
+ >Introduction</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/data-modeling/data-partitioning"
+
+ class=''
+ >Data Partitioning</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/data-modeling/affinity-collocation"
+
+ class=''
+ >Affinity Colocation</a>
+
+ </li>
+
+
+
+ </nav>
+
+ </li>
+
+ <li>
+
+
+
+
+
+
+ <button type='button' data-guide-url="" class='group-toggle collapsed '>Configuring Memory<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class='nav-group collapsed'>
+
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/memory-architecture"
+
+ class=''
+ >Memory Architecture</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/memory-configuration/data-regions"
+
+ class=''
+ >Configuring Data Regions</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/memory-configuration/eviction-policies"
+
+ class=''
+ >Eviction Policies</a>
+
+ </li>
+
+
+
+ </nav>
+
+ </li>
+
+ <li>
+
+
+
+
+
+
+ <button type='button' data-guide-url="" class='group-toggle collapsed '>Configuring Caches<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class='nav-group collapsed'>
+
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/configuring-caches/configuration-overview"
+
+ class=''
+ >Cache Configuration</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/configuring-caches/configuring-backups"
+
+ class=''
+ >Configuring Partition Backups</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/configuring-caches/atomicity-modes"
+
+ class=''
+ >Atomicity Modes</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/configuring-caches/expiry-policies"
+
+ class=''
+ >Expiry Policy</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/configuring-caches/on-heap-caching"
+
+ class=''
+ >On-Heap Caching</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/configuring-caches/cache-groups"
+
+ class=''
+ >Cache Groups</a>
+
+ </li>
+
+
+
+ </nav>
+
+ </li>
+
+ <li>
+
+
+
+
+
+
+ <button type='button' data-guide-url="" class='group-toggle collapsed '>Persistence<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class='nav-group collapsed'>
+
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/persistence/native-persistence"
+
+ class=''
+ >Ignite Persistence</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/persistence/external-storage"
+
+ class=''
+ >External Storage</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/persistence/swap"
+
+ class=''
+ >Swapping</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/persistence/custom-cache-store"
+
+ class=''
+ >Implementing Custom Cache Store</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/persistence/snapshots"
+
+ class=''
+ >Cluster Snapshots</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/persistence/disk-compression"
+
+ class=''
+ >Disk Compression</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/persistence/persistence-tuning"
+
+ class=''
+ >Tuning Persistence</a>
+
+ </li>
+
+
+
+ </nav>
+
+ </li>
+
+ <li>
+
+
+ <a href="/docs/latest/baseline-topology" class='' >Baseline Topology</a>
+
+ </li>
+
+ <li>
+
+
+ <a href="/docs/latest/cluster-states" class='' >Cluster States</a>
+
+ </li>
+
+ <li>
+
+
+ <a href="/docs/latest/data-rebalancing" class='' >Data Rebalancing</a>
+
+ </li>
+
+ <li>
+
+
+ <a href="/docs/latest/partition-loss-policy" class='' >Partition Loss Policy</a>
+
+ </li>
+
+ <li>
+
+
+ <a href="/docs/latest/deploying-user-code" class='' >Deploying User Code</a>
+
+ </li>
+
+ <li>
+
+
+ <a href="/docs/latest/peer-class-loading" class='' >Peer Class Loading</a>
+
+ </li>
+
+ <li>
+
+
+ <a href="/docs/latest/data-streaming" class='' >Data Streaming</a>
+
+ </li>
+
+ <li>
+
+
+
+
+
+
+ <button type='button' data-guide-url="" class='group-toggle collapsed '>Using Key-Value Cache API<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class='nav-group collapsed'>
+
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/key-value-api/basic-cache-operations"
+
+ class=''
+ >Basic Cache Operations</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/key-value-api/binary-objects"
+
+ class=''
+ >Working with Binary Objects</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/key-value-api/using-scan-queries"
+
+ class=''
+ >Using Scan Queries</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/read-repair"
+
+ class=''
+ >Read Repair</a>
+
+ </li>
+
+
+
+ </nav>
+
+ </li>
+
+ <li>
+
+
+ <a href="/docs/latest/key-value-api/continuous-queries" class='' >Using Continuous Queries</a>
+
+ </li>
+
+ <li>
+
+
+ <a href="/docs/latest/key-value-api/transactions" class='' >Performing Transactions</a>
+
+ </li>
+
+ <li>
+
+
+
+
+
+
+ <button type='button' data-guide-url="" class='group-toggle collapsed '>Working with SQL<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class='nav-group collapsed'>
+
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/SQL/sql-introduction"
+
+ class=''
+ >Introduction</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/SQL/schemas"
+
+ class=''
+ >Understanding Schemas</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/SQL/indexes"
+
+ class=''
+ >Defining Indexes</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/SQL/sql-api"
+
+ class=''
+ >Using SQL API</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/SQL/distributed-joins"
+
+ class=''
+ >Distributed Joins</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/SQL/sql-transactions"
+
+ class=''
+ >SQL Transactions</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/SQL/custom-sql-func"
+
+ class=''
+ >Custom SQL Functions</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/SQL/JDBC/jdbc-driver"
+
+ class=''
+ >JDBC Driver</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/SQL/JDBC/jdbc-client-driver"
+
+ class=''
+ >JDBC Client Driver</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/transactions/mvcc"
+
+ class=''
+ >Multiversion Concurrency Control</a>
+
+ </li>
+
+
+
+ </nav>
+
+ </li>
+
+ <li>
+
+
+
+
+
+
+ <button type='button' data-guide-url="" class='group-toggle collapsed '>Distributed Computing<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class='nav-group collapsed'>
+
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/distributed-computing/distributed-computing"
+
+ class=''
+ >Distributed Computing API</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/distributed-computing/cluster-groups"
+
+ class=''
+ >Cluster Groups</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/distributed-computing/executor-service"
+
+ class=''
+ >Executor Service</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/distributed-computing/map-reduce"
+
+ class=''
+ >MapReduce API</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/distributed-computing/load-balancing"
+
+ class=''
+ >Load Balancing</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/distributed-computing/fault-tolerance"
+
+ class=''
+ >Fault Tolerance</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/distributed-computing/job-scheduling"
+
+ class=''
+ >Job Scheduling</a>
+
+ </li>
+
+
+
+ </nav>
+
+ </li>
+
+ <li>
+
+
+ <a href="/docs/latest/collocated-computations" class='' >Colocating Computations with Data</a>
+
+ </li>
+
+ <li>
+
+
+
+
+
+
+ <button type='button' data-guide-url="" class='group-toggle collapsed '>Working with Events<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class='nav-group collapsed'>
+
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/events/listening-to-events"
+
+ class=''
+ >Enabling and Listenting to Events</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/events/events"
+
+ class=''
+ >Events</a>
+
+ </li>
+
+
+
+ </nav>
+
+ </li>
+
+ <li>
+
+
+ <a href="/docs/latest/near-cache" class='' >Near Caches</a>
+
+ </li>
+
+ <li>
+
+
+ <a href="/docs/latest/platform-cache" class='' >.NET Platform Cache</a>
+
+ </li>
+
+ <li>
+
+
+ <a href="/docs/latest/services/services" class='' >Services</a>
+
+ </li>
+
+ <li>
+
+
+
+
+
+
+ <button type='button' data-guide-url="" class='group-toggle collapsed '>Distributed Data Structures<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class='nav-group collapsed'>
+
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/data-structures/queue-and-set"
+
+ class=''
+ >Queue and Set</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/data-structures/atomic-types"
+
+ class=''
+ >Atomic Types</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/data-structures/countdownlatch"
+
+ class=''
+ >CountDownLatch</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/data-structures/atomic-sequence"
+
+ class=''
+ >Atomic Sequence</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/data-structures/semaphore"
+
+ class=''
+ >Semaphore</a>
+
+ </li>
+
+
+
+ </nav>
+
+ </li>
+
+ <li>
+
+
+
+
+
+
+ <button type='button' data-guide-url="" class='group-toggle collapsed '>Machine Learning<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class='nav-group collapsed'>
+
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/machine-learning/machine-learning"
+
+ class=''
+ >Machine Learning</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/machine-learning/partition-based-dataset"
+
+ class=''
+ >Partition Based Dataset</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/machine-learning/updating-trained-models"
+
+ class=''
+ >Updating Trained Models</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+
+
+ <button
+ type='button'
+ class='collapsed '>Binary Classification<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class="sub_pages collapsed">
+
+
+
+
+ <li><a href="/docs/latest//machine-learning/binary-classification/introduction" class=''>Introduction</a></li>
+
+
+
+ <li><a href="/docs/latest//machine-learning/binary-classification/linear-svm" class=''>Linear SVM (Support Vector Machine)</a></li>
+
+
+
+ <li><a href="/docs/latest//machine-learning/binary-classification/decision-trees" class=''>Decision Trees</a></li>
+
+
+
+ <li><a href="/docs/latest//machine-learning/binary-classification/multilayer-perceptron" class=''>Multilayer Perceptron</a></li>
+
+
+
+ <li><a href="/docs/latest//machine-learning/binary-classification/logistic-regression" class=''>Logistic Regression</a></li>
+
+
+
+ <li><a href="/docs/latest//machine-learning/binary-classification/knn-classification" class=''>k-NN Classification</a></li>
+
+
+
+ <li><a href="/docs/latest//machine-learning/binary-classification/ann" class=''>ANN (Approximate Nearest Neighbor)</a></li>
+
+
+
+ <li><a href="/docs/latest//machine-learning/binary-classification/naive-bayes" class=''>Naive Bayes</a></li>
+
+ </nav>
+
+ </li>
+
+
+
+
+
+ <li>
+
+
+
+ <button
+ type='button'
+ class='collapsed '>Regression<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class="sub_pages collapsed">
+
+
+
+
+ <li><a href="/docs/latest//machine-learning/regression/introduction" class=''>Introduction</a></li>
+
+
+
+ <li><a href="/docs/latest//machine-learning/regression/linear-regression" class=''>Linear Regression</a></li>
+
+
+
+ <li><a href="/docs/latest//machine-learning/regression/decision-trees-regression" class=''>Decision Trees Regression</a></li>
+
+
+
+ <li><a href="/docs/latest//machine-learning/regression/knn-regression" class=''>k-NN Regression</a></li>
+
+ </nav>
+
+ </li>
+
+
+
+
+
+ <li>
+
+
+
+ <button
+ type='button'
+ class='collapsed '>Clustering<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class="sub_pages collapsed">
+
+
+
+
+ <li><a href="/docs/latest//machine-learning/clustering/introduction" class=''>Introduction</a></li>
+
+
+
+ <li><a href="/docs/latest//machine-learning/clustering/k-means-clustering" class=''>K-Means Clustering</a></li>
+
+
+
+ <li><a href="/docs/latest//machine-learning/clustering/gaussian-mixture" class=''>Gaussian mixture (GMM)</a></li>
+
+ </nav>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/machine-learning/preprocessing"
+
+ class=''
+ >Preprocessing</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+
+
+ <button
+ type='button'
+ class='collapsed '>Model Selection<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class="sub_pages collapsed">
+
+
+
+
+ <li><a href="/docs/latest//machine-learning/model-selection/introduction" class=''>Introduction</a></li>
+
+
+
+ <li><a href="/docs/latest//machine-learning/model-selection/evaluator" class=''>Evaluator</a></li>
+
+
+
+ <li><a href="/docs/latest//machine-learning/model-selection/split-the-dataset-on-test-and-train-datasets" class=''>Split the dataset on test and train datasets</a></li>
+
+
+
+ <li><a href="/docs/latest//machine-learning/model-selection/hyper-parameter-tuning" class=''>Hyper-parameter tuning</a></li>
+
+
+
+ <li><a href="/docs/latest//machine-learning/model-selection/pipeline-api" class=''>Pipeline API</a></li>
+
+ </nav>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/machine-learning/multiclass-classification"
+
+ class=''
+ >Multiclass Classification</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+
+
+ <button
+ type='button'
+ class='collapsed '>Ensemble Methods<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class="sub_pages collapsed">
+
+
+
+
+ <li><a href="/docs/latest//machine-learning/ensemble-methods/introduction" class=''></a></li>
+
+
+
+ <li><a href="/docs/latest//machine-learning/ensemble-methods/stacking" class=''>Stacking</a></li>
+
+
+
+ <li><a href="/docs/latest//machine-learning/ensemble-methods/baggin" class=''>Bagging</a></li>
+
+
+
+ <li><a href="/docs/latest//machine-learning/ensemble-methods/random-forest" class=''>Random Forest</a></li>
+
+
+
+ <li><a href="/docs/latest//machine-learning/ensemble-methods/gradient-boosting" class=''>Gradient Boosting</a></li>
+
+ </nav>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/machine-learning/recommendation-systems"
+
+ class=''
+ >Recommendation Systems</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+
+
+ <button
+ type='button'
+ class='collapsed '>Importing Model<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class="sub_pages collapsed">
+
+
+
+
+ <li><a href="/docs/latest//machine-learning/importing-model/introduction" class=''>Introduction</a></li>
+
+
+
+ <li><a href="/docs/latest//machine-learning/importing-model/model-import-from-gxboost" class=''>Import Model from XGBoost</a></li>
+
+
+
+ <li><a href="/docs/latest//machine-learning/importing-model/model-import-from-apache-spark" class=''>Import Model from Apache Spark</a></li>
+
+ </nav>
+
+ </li>
+
+
+
+ </nav>
+
+ </li>
+
+ <li>
+
+
+
+
+
+
+ <button type='button' data-guide-url="" class='group-toggle collapsed '>Monitoring<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class='nav-group collapsed'>
+
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/monitoring-metrics/intro"
+
+ class=''
+ >Introduction</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/monitoring-metrics/cluster-id"
+
+ class=''
+ >Cluster ID and Tag</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+
+
+ <button
+ type='button'
+ class='collapsed '>Metrics<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class="sub_pages collapsed">
+
+
+
+
+ <li><a href="/docs/latest//monitoring-metrics/configuring-metrics" class=''>Configuring Metrics</a></li>
+
+
+
+ <li><a href="/docs/latest//monitoring-metrics/metrics" class=''>JMX Metrics</a></li>
+
+ </nav>
+
+ </li>
+
+
+
+
+
+ <li>
+
+
+
+ <button
+ type='button'
+ class='collapsed '>New Metrics System<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class="sub_pages collapsed">
+
+
+
+
+ <li><a href="/docs/latest//monitoring-metrics/new-metrics-system" class=''>Introduction</a></li>
+
+
+
+ <li><a href="/docs/latest//monitoring-metrics/new-metrics" class=''>Metrics</a></li>
+
+ </nav>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/monitoring-metrics/system-views"
+
+ class=''
+ >System Views</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/monitoring-metrics/tracing"
+
+ class=''
+ >Tracing</a>
+
+ </li>
+
+
+
+ </nav>
+
+ </li>
+
+ <li>
+
+
+
+
+
+
+ <button type='button' data-guide-url="/security" class='group-toggle collapsed '>Security<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class='nav-group collapsed'>
+
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/security/authentication"
+
+ class=''
+ >Authentication</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/security/ssl-tls"
+
+ class=''
+ >SSL/TLS</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+
+
+ <button
+ type='button'
+ class='collapsed '>Transparent Data Encryption<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class="sub_pages collapsed">
+
+
+
+
+ <li><a href="/docs/latest//security/tde" class=''>Introduction</a></li>
+
+
+
+ <li><a href="/docs/latest//security/master-key-rotation" class=''>Master key rotation</a></li>
+
+ </nav>
+
+ </li>
+
+
+
+ </nav>
+
+ </li>
+
+ <li>
+
+
+
+
+
+
+ <button type='button' data-guide-url="" class='group-toggle collapsed '>Thin Clients<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class='nav-group collapsed'>
+
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/thin-clients/getting-started-with-thin-clients"
+
+ class=''
+ >Thin Clients Overview</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/thin-clients/java-thin-client"
+
+ class=''
+ >Java Thin Client</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/thin-clients/dotnet-thin-client"
+
+ class=''
+ >.NET Thin Client</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/thin-clients/cpp-thin-client"
+
+ class=''
+ >C++ Thin Client</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/thin-clients/python-thin-client"
+
+ class=''
+ >Python Thin Client</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/thin-clients/php-thin-client"
+
+ class=''
+ >PHP Thin Client</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/thin-clients/nodejs-thin-client"
+
+ class=''
+ >Node.js Thin Client</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+
+
+ <button
+ type='button'
+ class='collapsed '>Binary Client Protocol<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class="sub_pages collapsed">
+
+
+
+
+ <li><a href="/docs/latest//binary-client-protocol/binary-client-protocol" class=''>Binary Client Protocol</a></li>
+
+
+
+ <li><a href="/docs/latest//binary-client-protocol/data-format" class=''>Data Format</a></li>
+
+
+
+ <li><a href="/docs/latest//binary-client-protocol/key-value-queries" class=''>Key-Value Queries</a></li>
+
+
+
+ <li><a href="/docs/latest//binary-client-protocol/sql-and-scan-queries" class=''>SQL and Scan Queries</a></li>
+
+
+
+ <li><a href="/docs/latest//binary-client-protocol/binary-type-metadata" class=''>Binary Types Metadata</a></li>
+
+
+
+ <li><a href="/docs/latest//binary-client-protocol/cache-configuration" class=''>Cache Configuration</a></li>
+
+ </nav>
+
+ </li>
+
+
+
+ </nav>
+
+ </li>
+
+ <li>
+
+
+
+
+
+
+ <button type='button' data-guide-url="" class='group-toggle collapsed '>ODBC Driver<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class='nav-group collapsed'>
+
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/SQL/ODBC/odbc-driver"
+
+ class=''
+ >ODBC Driver</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/SQL/ODBC/connection-string-dsn"
+
+ class=''
+ >Connection String and DSN</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/SQL/ODBC/querying-modifying-data"
+
+ class=''
+ >Querying and Modifying Data</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/SQL/ODBC/specification"
+
+ class=''
+ >Specification</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/SQL/ODBC/data-types"
+
+ class=''
+ >Data Types</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/SQL/ODBC/error-codes"
+
+ class=''
+ >Error Codes</a>
+
+ </li>
+
+
+
+ </nav>
+
+ </li>
+
+ <li>
+
+
+ <a href="/docs/latest/restapi" class='' >REST API</a>
+
+ </li>
+
+ <li>
+
+
+ <a href="/docs/latest/control-script" class='' >Control Script</a>
+
+ </li>
+
+ <li>
+
+
+ <a href="/docs/latest/plugins" class='' >Plugins</a>
+
+ </li>
+
+ <li>
+
+
+ <a href="/docs/latest/sqlline" class='' >SQLLine</a>
+
+ </li>
+
+ <li>
+
+
+
+
+
+
+ <button type='button' data-guide-url="" class='group-toggle collapsed '>Ignite for Spark<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class='nav-group collapsed'>
+
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/ignite-for-spark/overview"
+
+ class=''
+ >Overview</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/ignite-for-spark/ignitecontext-and-rdd"
+
+ class=''
+ >IgniteContext and IgniteRDD</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/ignite-for-spark/ignite-dataframe"
+
+ class=''
+ >Ignite DataFrame</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/ignite-for-spark/installation"
+
+ class=''
+ >Installation</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/ignite-for-spark/spark-shell"
+
+ class=''
+ >Test Ignite with Spark-shell</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/ignite-for-spark/troubleshooting"
+
+ class=''
+ >Troubleshooting</a>
+
+ </li>
+
+
+
+ </nav>
+
+ </li>
+
+ <li>
+
+
+
+
+
+
+ <button type='button' data-guide-url="/sql-reference/sql-reference-overview" class='group-toggle collapsed '>SQL Reference<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
+ <nav class='nav-group collapsed'>
+
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/sql-reference/sql-conformance"
+
+ class=''
+ >SQL Conformance</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/sql-reference/ddl"
+
+ class=''
+ >Data Definition Language (DDL)</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/sql-reference/dml"
+
+ class=''
+ >Data Manipulation Language (DML)</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/sql-reference/transactions"
+
+ class=''
+ >Transactions</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/sql-reference/operational-commands"
+
+ class=''
+ >Operational Commands</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/sql-reference/aggregate-functions"
+
+ class=''
+ >Aggregate functions</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/sql-reference/numeric-functions"
+
+ class=''
+ >Numeric Functions</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/sql-reference/string-functions"
+
+ class=''
+ >String Functions</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/sql-reference/date-time-functions"
+
+ class=''
+ >Data and Time Functions</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/sql-reference/system-functions"
+
+ class=''
+ >System Functions</a>
+
+ </li>
+
+
+
+
+
+ <li>
+
+ <a href="/docs/latest/sql-reference/data-types"
+
+ class=''
+ >Data Types</a>
+
+ </li>
+
+
+
+ </nav>
+
+ </li>
+
+</nav>
+<div class="left-nav__overlay"></div>
+
+
+ <article data-swiftype-index='true'>
+ <a class='edit-link' href="https://github.com/apache/ignite/tree/IGNITE-7595/docs/_docs/persistence/snapshots.adoc" target="_blank">Edit</a>
+
+ <h1>Cluster Snapshots</h1>
+
+ <div class="sect1">
+<h2 id="overview">Overview</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Ignite provides an ability to create full cluster snapshots for deployments using
+<a href="/docs/latest/persistence/native-persistence">Ignite Persistence</a>. An Ignite snapshot includes a consistent cluster-wide copy of
+all data records persisted on disk and some other files needed for a recovery procedure.</p>
+</div>
+<div class="paragraph">
+<p>The snapshot structure is similar to the layout of the
+<a href="/docs/latest/persistence/native-persistence#configuring-persistent-storage-directory">Ignite Persistence storage directory</a>,
+with several exceptions. Let’s take this snapshot as an example to review the structure:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="rouge highlight"><code data-lang="shell">work
+└── snapshots
+ └── backup23012020
+ ├── binary_meta
+ │ ├── node1
+ │ ├── node2
+ │ └── node3
+ ├── db
+ │ ├── node1
+ │ │ └── my-sample-cache
+ │ │ ├── cache_data.dat
+ │ │ ├── part-3.bin
+ │ │ ├── part-4.bin
+ │ │ └── part-6.bin
+ │ ├── node2
+ │ │ └── my-sample-cache
+ │ │ ├── cache_data.dat
+ │ │ ├── part-1.bin
+ │ │ ├── part-5.bin
+ │ │ └── part-7.bin
+ │ └── node3
+ │ └── my-sample-cache
+ │ ├── cache_data.dat
+ │ ├── part-0.bin
+ │ └── part-2.bin
+ └── marshaller</code></pre>
+</div>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>The snapshot is located under the <code>work\snapshots</code> directory and named as <code>backup23012020</code> where <code>work</code> is Ignite’s work
+directory.</p>
+</li>
+<li>
+<p>The snapshot is created for a 3-node cluster with all the nodes running on the same machine. In this example,
+the nodes are named as <code>node1</code>, <code>node2</code>, and <code>node3</code>, while in practice, the names are equal to nodes'
+<a href="https://cwiki.apache.org/confluence/display/IGNITE/Ignite+Persistent+Store+-+under+the+hood#IgnitePersistentStoreunderthehood-SubfoldersGeneration">consistent IDs</a>.</p>
+</li>
+<li>
+<p>The snapshot keeps a copy of the <code>my-sample-cache</code> cache.</p>
+</li>
+<li>
+<p>The <code>db</code> folder keeps a copy of data records in <code>part-N.bin</code> and <code>cache_data.dat</code> files. Write-ahead and checkpointing
+are not added into the snapshot as long as those are not required for the current recovery procedure.</p>
+</li>
+<li>
+<p>The <code>binary_meta</code> and <code>marshaller</code> directories store metadata and marshaller-specific information needed for the recovery.</p>
+</li>
+</ul>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<h3 id="usually-snapshot-is-spread-across-the-cluster" class="discrete">Usually Snapshot is Spread Across the Cluster</h3>
+<div class="paragraph">
+<p>The previous example shows the snapshot created for the cluster running on the same physical machine. Thus, the whole
+snapshot is located in a single place. While in practice, all the nodes will be running on different machines having the
+snapshot data spread across the cluster. Each node keeps a segment of the snapshot with the data belonging to this particular node.
+The <a href="/docs/latest/persistence/snapshots#restoring-from-snapshot">restore procedure</a> explains how to tether together all the segments during recovery.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="configuring-snapshot-directory">Configuring Snapshot Directory</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>By default, a segment of the snapshot is stored in the work directory of a respective Ignite node and uses the same storage
+media where Ignite Persistence keeps data, index, WAL, and other files. Since the snapshot can consume as much space as
+already taken by the persistence files and can affect your applications' performance by sharing the disk I/O with the
+Ignite Persistence routines, it’s suggested to store the snapshot and persistence files on different media.</p>
+</div>
+<div class="paragraph">
+<p>You can avoid this interference between Ignite Native persistence and snapshotting
+by either changing <a href="/docs/latest/persistence/native-persistence#configuring-persistent-storage-directory">storage directories of the persistence files</a>
+or overriding the default snapshots' location as shown below:</p>
+</div>
+<code-tabs><code-tab data-tab='XML'><div class="listingblock">
+<div class="content">
+<pre class="rouge highlight"><code data-lang="xml"><span class="nt"><bean</span> <span class="na">class=</span><span class="s">"org.apache.ignite.configuration.IgniteConfiguration"</span><span class="nt">></span>
+ <span class="c"><!--
+ Sets a path to the root directory where snapshot files will be persisted.
+ By default, the `snapshots` directory is placed under the `IGNITE_HOME/db`.
+ --></span>
+ <span class="nt"><property</span> <span class="na">name=</span><span class="s">"snapshotPath"</span> <span class="na">value=</span><span class="s">"/snapshots"</span><span class="nt">/></span>
+
+ <span class="nt"><property</span> <span class="na">name=</span><span class="s">"cacheConfiguration"</span><span class="nt">></span>
+ <span class="nt"><bean</span> <span class="na">class=</span><span class="s">"org.apache.ignite.configuration.CacheConfiguration"</span><span class="nt">></span>
+ <span class="nt"><property</span> <span class="na">name=</span><span class="s">"name"</span> <span class="na">value=</span><span class="s">"snapshot-cache"</span><span class="nt">/></span>
+ <span class="nt"></bean></span>
+ <span class="nt"></property></span>
+
+<span class="nt"></bean></span></code></pre>
+</div>
+</div></code-tab><code-tab data-tab='Java'><div class="listingblock">
+<div class="content">
+<pre class="rouge highlight"><code data-lang="java"><span class="nc">IgniteConfiguration</span> <span class="n">cfg</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">IgniteConfiguration</span><span class="o">();</span>
+
+<span class="nc">File</span> <span class="n">exSnpDir</span> <span class="o">=</span> <span class="no">U</span><span class="o">.</span><span class="na">resolveWorkDirectory</span><span class="o">(</span><span class="no">U</span><span class="o">.</span><span class="na">defaultWorkDirectory</span><span class="o">(),</span> <span class="s">"ex_snapshots"</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
+
+<span class="n">cfg</span><span class="o">.</span><span class="na">setSnapshotPath</span><span class="o">(</span><span class="n">exSnpDir</span><span class="o">.</span><span class="na">getAbsolutePath</span><span class="o">());</span></code></pre>
+</div>
+</div></code-tab></code-tabs>
+</div>
+</div>
+<div class="sect1">
+<h2 id="creating-snapshot">Creating Snapshot</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Ignite provides several APIs for the snapshot creation. Let’s review all the options.</p>
+</div>
+<div class="sect2">
+<h3 id="using-control-script">Using Control Script</h3>
+<div class="paragraph">
+<p>Ignite ships the <a href="/docs/latest/control-script">control script</a> that supports snapshots-related commands listed below:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="rouge highlight"><code data-lang="shell"><span class="c">#Create a cluster snapshot:</span>
+control.<span class="o">(</span>sh|bat<span class="o">)</span> <span class="nt">--snapshot</span> create snapshot_name
+
+<span class="c">#Cancel a running snapshot:</span>
+control.<span class="o">(</span>sh|bat<span class="o">)</span> <span class="nt">--snapshot</span> cancel snapshot_name
+
+<span class="c">#Kill a running snapshot:</span>
+control.<span class="o">(</span>sh|bat<span class="o">)</span> <span class="nt">--kill</span> SNAPSHOT snapshot_name</code></pre>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="using-jmx">Using JMX</h3>
+<div class="paragraph">
+<p>Use the <code>SnapshotMXBean</code> interface to perform the snapshot-specific procedures via JMX:</p>
+</div>
+<table class="tableblock frame-all grid-all stripes-even stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Method</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">createSnapshot(String snpName)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Create a snapshot.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">cancelSnapshot(String snpName)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Cancel a snapshot on the node initiated its creation.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="using-java-api">Using Java API</h3>
+<div class="paragraph">
+<p>Also, it’s possible to create a snapshot programmatically in Java:</p>
+</div>
+<code-tabs><code-tab data-tab='Java'><div class="listingblock">
+<div class="content">
+<pre class="rouge highlight"><code data-lang="java"><span class="nc">CacheConfiguration</span><span class="o"><</span><span class="nc">Long</span><span class="o">,</span> <span class="nc">String</span><span class="o">></span> <span class="n">ccfg</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">CacheConfiguration</span><span class="o"><</span><span class="nc">Long</span><span class="o">,</span> <span class="nc">String</span><span class="o">>(</span><span class="s">"snapshot-cache"</span><span class="o">);</span>
+
+<span class="k">try</span> <span class="o">(</span><span class="nc">IgniteCache</span><span class="o"><</span><span class="nc">Long</span><span class="o">,</span> <span class="nc">String</span><span class="o">></span> <span class="n">cache</span> <span class="o">=</span> <span class="n">ignite</span><span class="o">.</span><span class="na">getOrCreateCache</span><span class="o">(</span><span class="n">ccfg</span><span class="o">))</span> <span class="o">{</span>
+ <span class="n">cache</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="mi">1</span><span class="o">,</span> <span class="s">"Maxim"</span><span class="o">);</span>
+
+ <span class="c1">// Start snapshot operation.</span>
+ <span class="n">ignite</span><span class="o">.</span><span class="na">snapshot</span><span class="o">().</span><span class="na">createSnapshot</span><span class="o">(</span><span class="s">"snapshot_02092020"</span><span class="o">).</span><span class="na">get</span><span class="o">();</span>
+<span class="o">}</span>
+<span class="k">finally</span> <span class="o">{</span>
+ <span class="n">ignite</span><span class="o">.</span><span class="na">destroyCache</span><span class="o">(</span><span class="n">ccfg</span><span class="o">);</span>
+<span class="o">}</span></code></pre>
+</div>
+</div></code-tab></code-tabs>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="restoring-from-snapshot">Restoring From Snapshot</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Currently, the data restore procedure has to be performed manually. In a nutshell, you need to stop the cluster,
+replace persistence data and other files with the data from the snapshot, and restart the nodes. The detailed procedure
+looks as follows:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Stop the cluster you intend to restore</p>
+</li>
+<li>
+<p>Do the following on each node:</p>
+<div class="ulist">
+<ul>
+<li>
+<p>Remove all the files and directories under the <code>$IGNITE_HOME/work/{node_id}</code> directory. Clean the
+<a href="/docs/latest/link:persistence/native-persistence#configuring-persistent-storage-directory"><code>db/{node_id}</code></a> directory separately if
+it’s not located under the Ignite <code>work</code> dir.</p>
+</li>
+<li>
+<p>Copy the files of belonging to a node with the <code>{node_id}</code> from the snapshot into the <code>$IGNITE_HOME/work/{node_id}</code> directory.
+If the <code>db/{node_id}</code> directory is not located under the Ignite <code>work</code> dir then you need to copy data files there.</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>Restart the cluster</p>
+</li>
+</ol>
+</div>
+<div class="paragraph">
+<p><strong>Restore On Cluster of Different Topology</strong></p>
+</div>
+<div class="paragraph">
+<p>Sometimes you might want to create a snapshot of an N-node cluster and use it to restore on an M-node cluster. The table
+below explains what options are supported:</p>
+</div>
+<table class="tableblock frame-all grid-all stripes-even stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Condition</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">N == M</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The <strong>recommended</strong> case. Create and use the snapshot on clusters of a similar topology.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">N < M</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Start the first N nodes of the M-node cluster and apply the snapshot. Add the rest of the M-cluster nodes to
+the topology and wait while the data gets rebalanced and indexes are rebuilt.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">N > M</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Unsupported.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect1">
+<h2 id="consistency-guarantees">Consistency Guarantees</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>All snapshots are fully consistent in terms of concurrent cluster-wide operations as well as ongoing changes with Ignite
+Persistence and other files on nodes.</p>
+</div>
+<div class="paragraph">
+<p>The cluster-wide snapshot consistency is achieved by triggering the <a href="https://cwiki.apache.org/confluence/display/IGNITE/%28Partition+Map%29+Exchange+-+under+the+hood">Partition-Map-Exchange</a>
+procedure. By doing that, the cluster will eventually get to the point in time when all previously started transactions are completed, and new
+ones are paused. Once this happens, the cluster initiates the snapshot creation procedure.</p>
+</div>
+<div class="paragraph">
+<p>The consistency between the primary Ignite Persistence files and their snapshot copies is achieved by copying the primary
+files to the destination snapshot directory with tracking all concurrent ongoing changes. The tracking of the changes
+might require extra space on your storage media.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="current-limitations">Current Limitations</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The snapshot procedure has some limitations that you should be aware of before using the feature in your production environment:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Snapshotting of specific caches/tables is unsupported. You always create a full cluster snapshot.</p>
+</li>
+<li>
+<p>Incremental snapshots are not supported.</p>
+</li>
+<li>
+<p>Caches/tables that are not persisted in Ignite Persistence are not added into the snapshot.</p>
+</li>
+<li>
+<p>Encrypted caches are not included in the snapshot.</p>
+</li>
+<li>
+<p>You can have only one snapshotting operation running at a time.</p>
+</li>
+<li>
+<p>The snapshot procedure is interrupted if the cluster topology changes (new node join the cluster or some leave it).</p>
+</li>
+<li>
+<p>Snapshot may be restored only at the same cluster topology with the same node IDs;</p>
+</li>
+<li>
+<p>The automatic restore procedure is not available yet. You have to restore it manually.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>If any of these limitations prevent you from using Apache Ignite, then select alternate snapshotting implementations for
+Ignite provided by enterprise vendors.</p>
+</div>
+</div>
+</div>
+ <div class="copyright">
+ © 2020 The Apache Software Foundation.<br/>
+Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are either registered trademarks or trademarks of The Apache Software Foundation.
+
+</div>
+
+ </article>
+ <nav class="right-nav" data-swiftype-index='false'>
+ <ul class="sectlevel1">
+<li><a href="#overview">Overview</a></li>
+<li><a href="#configuring-snapshot-directory">Configuring Snapshot Directory</a></li>
+<li><a href="#creating-snapshot">Creating Snapshot</a>
+<ul class="sectlevel2">
+<li><a href="#using-control-script">Using Control Script</a></li>
+<li><a href="#using-jmx">Using JMX</a></li>
+<li><a href="#using-java-api">Using Java API</a></li>
+</ul>
+</li>
+<li><a href="#restoring-from-snapshot">Restoring From Snapshot</a></li>
+<li><a href="#consistency-guarantees">Consistency Guarantees</a></li>
+<li><a href="#current-limitations">Current Limitations</a></li>
+</ul>
+
+
+<footer>
+</footer>
+
+</nav>
+
+</section>
+<script type='module' src='/assets/js/code-copy-to-clipboard.js' async crossorigin></script>
+
+ <script>
+ // inits deep anchors -- needs to be done here because of https://www.bryanbraun.com/anchorjs/#dont-run-it-too-late
+ anchors.add('.page-docs h1, .page-docs h2, .page-docs h3:not(.discrete), .page-docs h4, .page-docs h5');
+ anchors.options = {
+ placement: 'right',
+ visible: 'always'
+ };
+ </script>
+ <!-- load google fonts async -->
+ <script type="text/javascript">
+ WebFontConfig = {
+ google: { families: [ 'Open+Sans:300,400,600,700&display=swap' ] }
+ };
+ (function() {
+ var wf = document.createElement('script');
+ wf.src = 'https://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
+ wf.type = 'text/javascript';
+ wf.async = 'true';
+ var s = document.getElementsByTagName('script')[0];
+ s.parentNode.insertBefore(wf, s);
+ })(); </script>
+ <script src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
+ <script>
+ docsearch({
+ // Your apiKey and indexName will be given to you once
+ // we create your config
+ apiKey: '3eee686c0ebe39eff3baeb18c56fa5f8',
+ indexName: 'apache_ignite',
+ // Replace inputSelector with a CSS selector
+ // matching your search input
+ inputSelector: '#search-input',
+ // algoliaOptions: { 'facetFilters': ["version:$VERSION"] },
+
+ // Set debug to true to inspect the dropdown
+ debug: false,
+ });
+ </script>
+<script type='module' src='/assets/js/index.js?1600372553' async crossorigin></script>
+<script type='module' src='/assets/js/versioning.js?1600372553' async crossorigin></script>
+</body>
+
+</html>
diff --git a/includes/promotion_banner.html b/includes/promotion_banner.html
new file mode 100644
index 0000000..66a7f73
--- /dev/null
+++ b/includes/promotion_banner.html
@@ -0,0 +1,10 @@
+<div id="promotion-bar">
+ <p>
+ Apache Ignite Track at ApacheCon@Home 2020:
+ <a href="https://www.apachecon.com/acna2020/tracks/ignite.html"
+ rel="noopener" target="_blank"
+ onclick="gtag('event', 'banner_click', { 'event_category': 'ignite_tech_talk', 'event_label': 'apachecon-home-202'});">
+ Join talks by our committers
+ </a>
+ </p>
+</div>
\ No newline at end of file