如何使用独立应用程序(本地执行环境或小型集群)实现flink保存点。我在flink-config.yaml文件中配置了保存点目录,但不确定如何在关闭应用程序之前获取保存点,以及如何使用重新启动应用程序进行恢复?是否有任何方法或必须使用flink cluster,然后使用cli。谢谢你的帮助。谢谢
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平台的免费社区版)使这变得更容易。
1条答案
按热度按时间yhuiod9q1#
您可以使用cli或RESTAPI来触发保存点。
https://ci.apache.org/projects/flink/flink-docs-stable/ops/cli.html#savepoints
例如,要在作业运行时触发保存点,请执行以下操作:
或在停止作业时获取保存点:
要在重新启动期间从保存点还原状态,请执行以下操作:
有关此主题和相关主题的教程,请参见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. 例如,您可以通过
如果要使用rest api触发保存点而不运行群集,可以在作业中使用webui和rest api启动本地群集(在单个jvm中):
这些是使用开源flink实现这一点的唯一方法。有一些商业产品(比如ververica平台的免费社区版)使这变得更容易。