如何通过保存点恢复作业,并在应用程序模式下通过executeAsync运行多作业(flink 1.18)

问题描述 投票:0回答:1

我正在开发 1.18 版本的 flink java,并希望使用应用程序模式在一个 pod 中运行 2 个作业(k8s docker 部署)。

在java代码中,我使用for语句通过env.executeAsync创建2个或更多作业,在循环子句中创建一个新的env。这样我们就可以在一个 docker pod 中运行多个并行作业,以减少资源成本。

在应用程序模式下,我认为我无法通过检查点接管恢复,因为我们无法在这种模式下启用HA,因此我们无法将之前的作业ID存储在Zookeeper中以从检查点恢复。参考:https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/deployment/overview/#application-mode

所以当 docker pod 关闭或需要重新启动时,我想通过保存点进行恢复。我的问题是:

  • 我如何每小时触发每个作业的保存点(现在我在一个 pod 中运行 2 个作业)?
  • 当 docker pod 重新启动时,如何从每个作业的保存点恢复? 使用 java 代码或 REST api。

我希望当我在应用程序模式下运行多项作业时,保存点或检查点可以有所帮助

java apache-flink flink-streaming recovery savepoints
1个回答
0
投票

FWIW,对于 Flink 来说,“高可用性”是指 Flink 集群从失败的作业管理器中恢复的能力。即使没有所谓的高可用性,我相信以应用程序模式运行的作业仍然可以依赖检查点从任务管理器故障中恢复。如果作业管理器发生故障,您可以从检查点手动重新启动(与使用保存点的方式相同)。

要使用保存点进行恢复,您可以使用 Flink 的 REST API 来触发并从保存点重新启动。

© www.soinside.com 2019 - 2024. All rights reserved.