当前位置: 首页 > 知识库问答 >
问题:

Flink故障恢复:如果JobManager或TaskManager失败怎么办

贺玉石
2023-03-14

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

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

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

>

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

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

  • 共有1个答案

    田权
    2023-03-14

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

    至于作业管理器故障,在独立集群中,您应该运行备用作业管理器,并将ZooKeer配置为进行领导者选举。使用YARN、Mesos和库伯内特斯,您可以让集群框架处理重新启动作业管理器或运行备用,如您所愿,但在任何一种情况下,您都仍然需要ZooKeer为作业管理器的元数据提供HA存储

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

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

     类似资料:
    • 我正在尝试使用本机kubernetes运行flink集群。 下面是flink conf, 首先,JobManager和TaskManager成功启动,TM处理的事件很少。但在超时间隔之后,JM抛出如下所示的心跳错误,并将启动新的TaskManager。旧的任务管理器仍在运行,新的任务管理器在同一命名空间中启动。 无法解释这种行为。我确保检查TaskManager和jobmanager的内存,没有内

    • 我是flink的新手,我正在实现一个模式识别模块(不使用CEP实现模式匹配),该模块将从EventHub主题读取json流,并在模式匹配的情况下推送到另一个EventHub主题。我的模块功能如下 > 从Eventhub主题接收JSON有效负载 我正在使用RichSourceFunction,它将从API读取模式并发送到广播流 我正在使用Flink BroadcastProcessFunction根

    • 1)以上假设是否正确。2)当发生故障时,滚动窗口有状态是否有意义,我们从最后一个kafka分区提交的偏移量开始。3)当滚动窗口有状态时,这个状态什么时候可以被flink使用。4)为什么检查点和保存点的状态大小不同。5)当发生故障时,flink总是从sorce运算符开始。对吗?

    • 我在HA模式下配置了Flink,如下所述: 我想测试容错性,因此我做了以下工作: 设置具有2个JobManager和1个TaskManager的Flink群集 在任务管理器上启动流式处理作业 杀死活动的作业管理器(以模拟崩溃) 领导人选举如期举行 但注意到任务管理器正在重新连接到新的作业管理器。它只是每10秒尝试重新连接到前一个领导者 在此处粘贴任务管理器日志: 重新启动任务管理器没有帮助 重新启

    • 顺着我之前的一个问题,大部分评论都说“就是不要,你处于冷宫状态,你要杀光一切,重新开始”。还有一个“安全”的变通方法。 我不明白的是为什么分割错误本质上是不可恢复的。 写入受保护内存的时刻被捕获-否则,不会发送。 如果能够捕捉到写入受保护内存的时刻,我不明白为什么——理论上——它不能在某个低级别上恢复,并将SIGSEGV转换为标准软件异常。 请解释为什么在出现分段错误后,程序处于不确定状态,因为很

    • 我正在尝试使用以下命令提交flink关于纱线的作业: 我拿到了env。Java语言选择flink客户端日志,但当应用程序提交到Thread时,这些Java选项将不可用。由于额外的JVM选项不可用,应用程序在连接zookeeper时引发异常。 请建议如何将动态属性传递给JM 注意:我试图设置env。Java语言将选项选择到conf/flink-conf.yaml及其工作状态。我需要一种通过flink