如何使用独立应用程序(本地执行环境或迷你集群)实现 flink 保存点。我在 flink-config.yaml 文件中配置了保存点目录,但不确定如何在关闭应用程序之前获取保存点以及如何通过重新启动应用程序来恢复?
有没有办法或必须使用 flink 集群然后使用 CLI。
感谢你的帮助。谢谢
如何使用独立应用程序(本地执行环境或迷你集群)实现 flink 保存点。我在 flink-config.yaml 文件中配置了保存点目录,但不确定如何在关闭应用程序之前获取保存点以及如何通过重新启动应用程序来恢复?
有没有办法或必须使用 flink 集群然后使用 CLI。
感谢你的帮助。谢谢
您可以使用 CLI 或 REST API 来触发保存点。
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--rescaling-a-job .
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 Platform 的免费社区版)使这变得更容易。