具有本地执行环境(如独立应用程序)的flink保存点

qrjkbowd  于 2021-06-21  发布在  Flink
关注(0)|答案(1)|浏览(454)

如何使用独立应用程序(本地执行环境或小型集群)实现flink保存点。我在flink-config.yaml文件中配置了保存点目录,但不确定如何在关闭应用程序之前获取保存点,以及如何使用重新启动应用程序进行恢复?
是否有任何方法或必须使用flink cluster,然后使用cli。
谢谢你的帮助。谢谢

yhuiod9q

yhuiod9q1#

您可以使用cli或RESTAPI来触发保存点。
https://ci.apache.org/projects/flink/flink-docs-stable/ops/cli.html#savepoints
例如,要在作业运行时触发保存点,请执行以下操作:

./bin/flink savepoint <jobId> [savepointDirectory]

或在停止作业时获取保存点:

./bin/flink stop [-p targetDirectory] [-d] <jobID>

要在重新启动期间从保存点还原状态,请执行以下操作:

./bin/flink run -s <savepointPath> ...

有关此主题和相关主题的教程,请参见https://ci.apache.org/projects/flink/flink-docs-stable/try-flink/flink-operations-playground.html#upgrading--重新调整工作规模。
rest api的文档如下:https://ci.apache.org/projects/flink/flink-docs-stable/monitoring/rest_api.html. 例如,您可以通过

curl -X POST localhost:8001/jobs/:jobid/savepoints -d '{"cancel-job": false}'

如果要使用rest api触发保存点而不运行群集,可以在作业中使用webui和rest api启动本地群集(在单个jvm中):

Configuration conf = new Configuration();
conf.setString("state.savepoints.dir", "file:///tmp/savepoints");
StreamExecutionEnvironment env =
  StreamExecutionEnvironment.createLocalEnvironmentWithWebUI(conf);

这些是使用开源flink实现这一点的唯一方法。有一些商业产品(比如ververica平台的免费社区版)使这变得更容易。

相关问题