-
目录
-
什么是savepoint?
savepoint是通过checkpoint机制为streaming job创建的一致性快照,比如数据源offset,状态等。
-
Savepoint有什么用?
savepoint由用户拥有,创建和删除。它一般用于Flink版本升级更新,业务 迁移,集群需要迁移,不容许数据丢失。
-
怎么使用savepoint?
1.配置
conf/flink-conf.yaml文件参数:
state.savepoints.dir: hdfs:///flink/savepoints
或者本地路径:
state.savepoints.dir: file:///home/pengchenglin/flinkresult/savepoint
注意:
1.目标目录必须是JobManager和TaskManager都可以访问的位置,例如,分布式文件系统上的位置。
2.尽管看起来好像可以移动保存点,但是由于_metadata文件中的绝对路径,当前无法实现。请遵循FLINK-5778以了解解除此限制的进度。
2.触发保存点
1.触发保存点
$ bin/flink savepoint :jobId [:targetDirectory]
这将为ID为的作业触发一个保存点:jobId,并返回创建的保存点的路径。您需要此路径来还原和处置保存点。详细参数见附录A
示例
$ bin/flink savepoint 49df8ca28acf46144c4cdf27f0c01ef9
Triggering savepoint for job 49df8ca28acf46144c4cdf27f0c01ef9.
Waiting for response...
Savepoint completed. Path: file:/home/pengchenglin/flinkresult/savepoint/savepoint-49df8c-eae9dd657bf2
You can resume your program from this savepoint with the run command.
2.触发保存点并取消job
$ bin/flink cancel -s [:targetDirectory] :jobId
示例
$ bin/flink cancel -s ffbc58efdd07b96b6e5e18a138b9bd0e
DEPRECATION WARNING: Cancelling a job with savepoint is deprecated. Use "stop" instead.
Cancelling job ffbc58efdd07b96b6e5e18a138b9bd0e with savepoint to default savepoint directory.
Cancelled job ffbc58efdd07b96b6e5e18a138b9bd0e. Savepoint stored in file:/home/pengchenglin/flinkresult/savepoint/savepoint-ffbc58-9daf3085de9a.
3.使用YARN触发保存点
$ bin/flink savepoint :jobId [:targetDirectory] -yid :yarnAppId
这将为ID为:jobIdYARN应用程序ID 的作业触发一个保存点:yarnAppId,并返回创建的保存点的路径。
3.从保存点恢复job
这将提交作业并指定要从中恢复的保存点。您可以提供保存点目录或_metadata文件的路径。
$ bin/flink run -s :savepointPath [:runArgs]
详细参数说明见附录B
示例
$ bin/flink run -s /home/pengchenglin/flinkresult/savepoint/savepoint-ffbc58-9daf3085de9a/_metadata /home/pengchenglin/flinkjar/myflink-ExactlyOnceTest.jar 0
Starting execution of program
最后的0为jar文件的参数。
-
参考文献
https://ci.apache.org/projects/flink/flink-docs-release-1.9/ops/state/savepoints.html
-
附录A
Savepoint动作对运行中的任务触发保存点,或者删除已存在的保存点。
语法: savepoint [OPTIONS] <Job ID> [<target directory>]
"savepoint" 动作选项:
-d,--dispose <arg> 要释放的保存点的路径。
-j,--jarfile <jarfile> Flink程序jar文件。
Yarn集群模式选项:
-m,--jobmanager <arg> 要连接到的作业管理器(主)的地址。使用此 标志连接到配置中指定的作业管理器以外的 作 业管理器。
-yid,--yarnapplicationId <arg> 附加到运行中的yarn session
-z,--zookeeperNamespace <arg> 高可用性模式创建zookeeper子路径的命名空间
默认模式选项:
-m,--jobmanager <arg> 要连接到的作业管理器(主)的地址。使用此 标志连接到配置中指定的作业管理器以外的 作业管理器。
-z,--zookeeperNamespace <arg> 高可用性模式创建zookeeper子路径的命名空间
-
附录B
Syntax: run [OPTIONS] <jar-file> <arguments>
"run" action options:
-c,--class <classname> 使用程序入口点(“main()”方法或“getplan()”方法)初始化。仅当jar文件未在其清单中指定类时才需要。
-C,--classpath <url> 向群集中所有节点上的每个用户代码类加 载器添加URL。路径必须指定一个协议(例 如file://),并且可以在所有节点上访问(例 如,通过nfs共享)。可以多次使用此选项 指定多个URL。协议必须被{@link
Java.NET.URLCaseLoopeRe}支持。
-d,--detached 如果出现,则以分离模式运行作业。
-n,--allowNonRestoredState 允许跳过无法还原的保存点状态。如果在 触发保存点时从程序中删除了作为程序一 部分的运算符,则需要允许此操作。
-p,--parallelism <parallelism> 运行程序的并行性。替代配置中指定的默 认值的可选标志。
-py,--python <python> 带有程序入口点的python脚本。可以使用 “--pyfiles”选项配置依赖资源。
-pyfs,--pyFiles <pyFiles> 为job附加自定义python文件。逗号可 用作分隔符来指定多个文件。标准的 python资源文件后缀,如.py/.egg/.zip, 都受支持。(例如: --pyfilesfile:///tmp/myresource.zip, hdfs:///$namenode\u address/myresource2.zip)
-pym,--pyModule <pyModule> 带有程序入口点的python模块。此选项 必须与“--pyfiles”一起使用。
-q,--sysoutLogging 如果存在,则禁止将输出记录到标准输出。
-s,--fromSavepoint <savepointPath> 要从中还原作业的保存点的路径(例如 hdfs:///flink/savepoint-1537)。
-sae,--shutdownOnAttachedExit 如果作业以附加模式提交,则在突然终止 cli时执行尽力而为的群集关闭,例如响应 用户中断,例如键入ctrl+c。
YARN集群模式选项:
-d,--detached 如果存在,则以分离方式运行作业模式
-m,--jobmanager <arg> 要连接到的作业管理器(主)的地址。使 用此标志连接到配置中指定的作业管理 器以外的作业管理器。
-sae,--shutdownOnAttachedExit 如果作业以附加模式提交,则在突然终止 cli时执行尽力而为的群集关闭,例如响 应用户中断,例如键入ctrl+c。
-yat,--yarnapplicationType <arg> 为Yarn上的应用设置自定义应用类型
-yD <property=value> 对给定属性使用值
-yd,--yarndetached 如果存在,则以分离模式运行作业(已弃 用;请改用非Yarn的特定选项)
-yh,--yarnhelp yarn session cli的帮助。
-yid,--yarnapplicationId <arg> 附加到运行中的yarn session。
-yj,--yarnjar <arg> Flink jar文件的路径。
-yjm,--yarnjobManagerMemory <arg> JobManager容器的内存
可选单位(默认:MB)。
-yn,--yarncontainer <arg> 要分配的Yarn容器数(=任务管理器数)。
-ynl,--yarnnodeLabel <arg> 指定yarn程序的yarn节点标签。
-ynm,--yarnname <arg> 为yarn上的程序设置自定义名称。
-yq,--yarnquery 显示可用的yarn资源(内存、核心)。
-yqu,--yarnqueue <arg> 指定yarn队列。
-ys,--yarnslots <arg> 每个taskmanager的slot数量。
-yst,--yarnstreaming 使用流模式启动flink。
-yt,--yarnship <arg> 在指定目录中传送文件(t用于传输)。
-ytm,--yarntaskManagerMemory <arg> 每个taskmanager容器的内存
可选单位(default: MB)。
-yz,--yarnzookeeperNamespace <arg> 用于为高可用性模式创建zookeeper子路 径的命名空间。
-z,--zookeeperNamespace <arg> 用于为高可用性模式创建zookeeper子路 径的命名空间。
默认模式选项:
-m,--jobmanager <arg> 要连接到的作业管理器(主)的地址。使用此 标志连接到配置中指定的作业管理器以外的 作业管理器。
-z,--zookeeperNamespace <arg> 用于为高可用性模式创建zookeeper子路 径的命名空间。