sjwiesman commented on a change in pull request #14981: URL: https://github.com/apache/flink/pull/14981#discussion_r580593585
########## File path: docs/content/docs/ops/state/savepoints.md ########## @@ -46,9 +46,9 @@ In contrast to all this, Savepoints are created, owned, and deleted by the user. changing parallelism, forking a second job like for a red/blue deployment, and so on. Of course, Savepoints must survive job termination. Conceptually, Savepoints can be a bit more expensive to produce and restore and focus more on portability and support for the previously mentioned changes to the job. -Those conceptual differences aside, the current implementations of Checkpoints and Savepoints are basically using the same code and produce the same format. However, there is currently one exception from this, and we might -introduce more differences in the future. The exception is incremental checkpoints with the RocksDB state backend. They are using some RocksDB internal format instead of Flinkās native savepoint format. This makes them the -first instance of a more lightweight checkpointing mechanism, compared to Savepoints. +In Flink 1.13 we unified the binary format of savepoints across all state backends. That means you can take a savepoint and then restore from it using a different state backend. +All the state backends produce a common format only starting from the version 1.13. You cannot do that with checkpoints. It means the savepoint binary format might be different from the one used for checkpoints. This is the case e.g. for Heap state backend or +if you use incremental checkpoints with the RocksDB state backend. The RocksDB full snapshot share the format with unified savepoints, but it is not guaranteed, and we might introduce further modifications in the future. Review comment: ```suggestion Flink's savepoint binary format is unified across all state backends. That means you can take a savepoint with one state backend and then restore it using another. {{< hint info >}} State backends did not start producing a common format until version 1.13. Therefore, if you want to switch the state backend you should first upgrade your Flink version than take a savepoint with the new version, and only after that, you can restore it with a different state backend. {{< /hint >}} ``` ########## File path: docs/content/docs/ops/state/state_backends.md ########## @@ -136,15 +136,16 @@ The total memory amount of RocksDB instance(s) per slot can also be bounded, ple # Choose The Right State Backend -Currently, Flink's savepoint binary format is state backend specific. -A savepoint taken with one state backend cannot be restored using another, and you should carefully consider which backend you use before going to production. - In general, we recommend avoiding `MemoryStateBackend` in production because it stores its snapshots inside the JobManager as opposed to persistent disk. When deciding between `FsStateBackend` and `RocksDB`, it is a choice between performance and scalability. `FsStateBackend` is very fast as each state access and update operates on objects on the Java heap; however, state size is limited by available memory within the cluster. On the other hand, `RocksDB` can scale based on available disk space and is the only state backend to support incremental snapshots. However, each state access and update requires (de-)serialization and potentially reading from disk which leads to average performance that is an order of magnitude slower than the memory state backends. +In Flink 1.13 we unified the binary format of Flink's savepoints. That means you can take a savepoint and then restore from it using a different state backend. +All the state backends produce a common format only starting from the version 1.13. Therefore, if you want to switch the state backend you should first upgrade your Flink version than +take a savepoint with the new version and only after that you can restore it with a different state backend. + Review comment: ```suggestion {{< hint info >}} In Flink 1.13 we unified the binary format of Flink's savepoints. That means you can take a savepoint and then restore from it using a different state backend. All the state backends produce a common format only starting from version 1.13. Therefore, if you want to switch the state backend you should first upgrade your Flink version than take a savepoint with the new version, and only after that you can restore it with a different state backend. {{< /hint >}} ``` ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org