在Flink中,检查点可以在任务停机时完成吗?

k5hmc34c  于 2023-05-21  发布在  Apache
关注(0)|答案(1)|浏览(102)

我在用打火机。我有五个任务管理器,每个任务管理器都有一个任务插槽。
源代码是Kafka,在阅读数据并处理一些逻辑之后,数据被接收到dynamodb。
请注意,我使用了所有操作符的链接,以便将source, process and sink组合到一个操作符中。
而且,我使用的检查点具有精确一次语义,时间间隔为5分钟。
在这种情况下,Kafka进行了滚动更新,协调器也发生了变化。
在更新过程中,flink有警告消息,显示偏移量无法源Kafka。
从这个场景中,我有以下问题。
1.检查点是否有可能成功完成?因为当我看到flink Jmeter 板时, Jmeter 板中没有失败的检查点。
1.如果是这样,是否有可能任务已关闭,但taskmanger未关闭,从而使检查点已完成?(任务停机是微不足道的问题,因此不会影响检查点的生成)
1.当链接在一起时,即使我们使用检查点,数据也可能丢失?我的意思是,由于操作符从source到sink组合在一起,当source受到外部Kafka的影响时,sink会因为sink和chaining而受到影响。在那个时候,任务将停止并且正在运行的数据将被丢弃?

83qze16e

83qze16e1#

1.检查点是否有可能成功完成?因为当我看到flink Jmeter 板时, Jmeter 板中没有失败的检查点。
是的。你看到的msg是当Flink使用的Kafka消费者试图将偏移量保存到Kafka集群时,但检查点不会使用它。Flink将偏移量保存到快照,并将在从检查点或保存点恢复时使用它们,因此它不需要保存到Kafka集群的偏移量。
1.如果是这样的话,是否有可能任务已经关闭,但taskmanger没有关闭,这样它就使得检查点完成了
我假设您在询问作业是否可以处于失败状态,但任务管理器仍在运行。是的,但这与您的第一个问题无关(这不是为什么即使您看到错误也可以完成检查点)。
1.当链接在一起时,即使我们使用检查点,数据也可能丢失?我的意思是,由于操作符从source到sink组合在一起,当source受到外部Kafka的影响时,sink会因为sink和chaining而受到影响。在那个时候,任务将停止并且正在运行的数据将被丢弃?
当作业失败时,您总是“丢失”动态数据。但是由于Flink将所有Kafka分区的偏移量保存为最后一个成功检查点的一部分,因此当作业从该检查点重新启动时,您将重新播放所有正在运行的数据。所以没有数据丢失。

相关问题