首页 > 解决方案 > Flink 故障恢复:如果 JobManager 或 TaskManager 失败了怎么办

问题描述

我正在阅读关于任务失败恢复的 Flink 官方文档:https ://ci.apache.org/projects/flink/flink-docs-stable/dev/task_failure_recovery.html

据我了解,这个文档告诉我们,如果某个任务由于某种原因失败,Flink 可以借助 Checkpoint 机制来恢复它。

所以现在我还有两个问题:

  1. 如果 TaskManager 失败了怎么办?据我了解,一个任务被分配到一个或多个插槽,插槽位于一个或多个TaskManagers。看了上面的文档,我知道 Flink 可以恢复失败的任务,但是如果 TaskManager 失败了,会发生什么?Flink 也能恢复吗?如果一个失败的TaskManager可以恢复,那么分配给它的任务在恢复后是否可以继续自动运行?

  2. 如果 JobManager 失败了怎么办?如果 JobManager 失败了,是不是所有的 TaskManager 也会失败?如果是这样,当我在 Zookeeper 的帮助下恢复 JobManager 时,是否所有的 TaskManager 及其任务都会自动继续运行?

标签: apache-flink

解决方案


在一个纯粹的独立集群中,如果一个任务管理器死了,那么如果你有一个备用任务管理器正在运行,它将被使用。否则,作业管理器将等待一个新的任务管理器神奇地出现。实现这一点取决于您。另一方面,如果您使用 YARN、Mesos 或 Kubernetes,集群管理框架将负责确保有足够的 TM。

至于 Job Manager 故障,在独立集群中,您应该运行备用 Job Manager,并配置 Zookeeper 进行领导者选举。使用 YARN、Mesos 和 Kubernetes,您可以让集群框架处理重新启动作业管理器或运行备用,但无论哪种情况,您仍然需要 Zookeeper 为作业管理器的元数据提供 HA 存储。

任务管理器可以在作业管理器故障/恢复情况下幸存下来。不必重新启动作业。

https://ci.apache.org/projects/flink/flink-docs-stable/ops/jobmanager_high_availability.html


推荐阅读