apache-flink - Flink 故障恢复:如果 JobManager 或 TaskManager 失败了怎么办
问题描述
我正在阅读关于任务失败恢复的 Flink 官方文档:https ://ci.apache.org/projects/flink/flink-docs-stable/dev/task_failure_recovery.html
据我了解,这个文档告诉我们,如果某个任务由于某种原因失败,Flink 可以借助 Checkpoint 机制来恢复它。
所以现在我还有两个问题:
如果 TaskManager 失败了怎么办?据我了解,一个任务被分配到一个或多个插槽,插槽位于一个或多个TaskManagers。看了上面的文档,我知道 Flink 可以恢复失败的任务,但是如果 TaskManager 失败了,会发生什么?Flink 也能恢复吗?如果一个失败的TaskManager可以恢复,那么分配给它的任务在恢复后是否可以继续自动运行?
如果 JobManager 失败了怎么办?如果 JobManager 失败了,是不是所有的 TaskManager 也会失败?如果是这样,当我在 Zookeeper 的帮助下恢复 JobManager 时,是否所有的 TaskManager 及其任务都会自动继续运行?
解决方案
在一个纯粹的独立集群中,如果一个任务管理器死了,那么如果你有一个备用任务管理器正在运行,它将被使用。否则,作业管理器将等待一个新的任务管理器神奇地出现。实现这一点取决于您。另一方面,如果您使用 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。
推荐阅读
- php - URI 必须是字符串或 laravel php 中的 UriInterface
- java - 在 MainActivity android studio 中将 java 类设置为对象时出错——无法解析符号“”
- java - NetBean 中的错误,但 javac 中没有错误?
- angular - 试图获取组件的服务属性。但总是以未定义的形式返回
- php - SMTP 错误:EHLO 命令失败:-ERR 未知命令
- f# - F# 函数很好,但从 main 调用时却不行
- python - Python + 多处理 + VMware:进程挂起
- python - 如何验证 @jit() 装饰器在 GPU 上工作?
- arrays - 针对数组检查随机值以防止重复
- javafx - 带有 Google Guice 的 JavaFx 提供了两个不同的控制器实例