From 79f508ab699fbf0ff24276c301a77deadb421236 Mon Sep 17 00:00:00 2001 From: wangfeifan Date: Sun, 1 May 2022 21:19:38 +0800 Subject: [PATCH] [FLINK-26052][docs-zh] Document savepoint format --- docs/content.zh/docs/ops/state/savepoints.md | 27 +++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/docs/content.zh/docs/ops/state/savepoints.md b/docs/content.zh/docs/ops/state/savepoints.md index 11f336898d93c..3d5cb7c52fea8 100644 --- a/docs/content.zh/docs/ops/state/savepoints.md +++ b/docs/content.zh/docs/ops/state/savepoints.md @@ -116,6 +116,19 @@ mapper-id | State of StatefulMapper **注意:** 不建议移动或删除正在运行作业的最后一个 Savepoint ,因为这可能会干扰故障恢复。因此,Savepoint 对精确一次的接收器有副作用,为了确保精确一次的语义,如果在最后一个 Savepoint 之后没有 Checkpoint ,那么将使用 Savepoint 进行恢复。 {{< /hint >}} + + +#### Savepoint 格式 + +你可以在 savepoint 的两种二进制格式之间进行选择: + +* 标准格式 - 一种在所有 state backends 间统一的格式,允许你使用一种状态后端创建 savepoint 后,使用另一种状态后端恢复这个 savepoint。这是最稳定的格式,旨在与之前的版本、模式、修改等保持最大兼容性。 + +* 原生格式 - 标准格式的缺点是它的创建和恢复速度通常很慢。原生格式以特定于使用的状态后端的格式创建快照(例如 RocksDB 的 SST 文件)。 + +{{< hint info >}} +以原生格式创建 savepoint 的能力在 Flink 1.15 中引入,在那之前 savepoint 都是以标准格式创建的。 +{{< /hint >}} #### 触发 Savepoint @@ -123,7 +136,11 @@ mapper-id | State of StatefulMapper $ bin/flink savepoint :jobId [:targetDirectory] ``` -这将触发 ID 为 `:jobId` 的作业的 Savepoint,并返回创建的 Savepoint 路径。 你需要此路径来还原和删除 Savepoint 。 +这将触发 ID 为 `:jobId` 的作业的 Savepoint,并返回创建的 Savepoint 路径。 你需要此路径来恢复和删除 Savepoint 。你也可以指定创建 Savepoint 的格式。如果没有指定,会采用标准格式创建 Savepoint。 + +```shell +$ bin/flink savepoint --type [native/canonical] :jobId [:targetDirectory] +``` #### 使用 YARN 触发 Savepoint @@ -133,13 +150,15 @@ $ bin/flink savepoint :jobId [:targetDirectory] -yid :yarnAppId 这将触发 ID 为 `:jobId` 和 YARN 应用程序 ID `:yarnAppId` 的作业的 Savepoint,并返回创建的 Savepoint 的路径。 -#### 使用 Savepoint 取消作业 + + +#### 使用 Savepoint 停止作业 ```shell -$ bin/flink cancel -s [:targetDirectory] :jobId +$ bin/flink stop --type [native/canonical] --savepointPath [:targetDirectory] :jobId ``` -这将自动触发 ID 为 `:jobid` 的作业的 Savepoint,并取消该作业。此外,你可以指定一个目标文件系统目录来存储 Savepoint 。该目录需要能被 JobManager(s) 和 TaskManager(s) 访问。 +这将自动触发 ID 为 `:jobid` 的作业的 Savepoint,并停止该作业。此外,你可以指定一个目标文件系统目录来存储 Savepoint 。该目录需要能被 JobManager(s) 和 TaskManager(s) 访问。你也可以指定创建 Savepoint 的格式。如果没有指定,会采用标准格式创建 Savepoint。 ### 从 Savepoint 恢复