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

从检查点还原Apache Flink作业

马弘益
2023-03-14

我正在使用Apache Flink RabbitMQ堆栈。我知道有机会手动触发保存点并从中还原作业,但问题是Flink会在成功的检查点之后确认消息,如果要使保存点和还原状态为,则会丢失上次成功的保存点和上次成功的检查点之间的所有数据。有没有办法从检查点恢复作业?这将解决在不可重放数据源(如rabbitmq)的情况下丢失数据的问题。顺便说一句,如果我们有检查点及其所有开销,为什么不让用户使用它们呢?

共有1个答案

尉迟国发
2023-03-14

从概念上讲,保存点只不过是一个检查点加上一点元数据。在这两种情况下(保存点和检查点),Flink都会为所有操作符、源和接收器的状态创建一个一致的检查点。

检查点被认为是故障恢复的内部机制。但是,可以将检查点配置为外部化的检查点。当作业终止时,外部化的检查点不会自动清理,可以用于手动重新启动程序。

RabbitMQ源代码的问题是它违反了Flink的检查点语义学,因为它通过访问无法重置的检查点将某些状态推送到外部系统。

触发保存点并在事后立即关闭作业的机制能否解决您的问题?这将防止在获取保存点后触发检查点。

 类似资料:
  • 我有多个Kafka主题(多租户),我运行同一个作业运行多次基于主题的数量,每个作业消耗来自一个主题的消息。我已将文件系统配置为状态后端。 假设有3个作业正在运行。这里的检查站是如何工作的?这3个作业是否都将检查点信息存储在同一路径中?如果任何作业失败,该作业如何知道从何处恢复检查点信息?我们过去常常在向flink集群提交作业时提供作业名称。这和它有什么关系吗?一般来说,Flink如何区分作业及其检

  • 我有一份flink的工作,它使用Kafka的数据,制作一些无状态平面图,并向Kafka生成数据,这是一份工作量非常小的工作。 例如,在作业需要从检查点还原之前,它通常会无问题地获取检查点,而它只是无法使用下面的堆栈跟踪还原状态。 状态非常小,我相信它只是Kafka偏移量,它至少运行了一次语义。 所有操作员都有。uid()集,我完全没有主意了。 这是尝试从检查点重新启动时的错误: 任务管理器在正常操

  • 我正在检查Flink Sql Table与kafka连接器是否可以在EXACTLY_ONCE模式下执行,我的方法是创建一个表,设置合理的检查点间隔,并在event_time字段上使用简单的翻滚函数,最后重新启动我的程序。 以下是我的详细进度: 1:创建一个Kafka表 2:启动我的 Flink 作业,如下所示配置 3:执行我的sql 如我们所见,翻转窗口间隔为5分钟,检查点间隔为30秒,每个翻转窗

  • 问题内容: 这似乎不起作用: 当我在jsfiddle上运行它时,将触发一个请求(根据Chrome调试工具),如下所示: 然后(根据Chrome调试工具)我的本地服务器返回以下标头: (手动重新格式化以提高可读性) 然后在控制台中,我收到如下错误消息: 但是标题与我的服务器响应预检请求时显示的标题相同。那么,我在这个难题中遗漏了什么? 问题答案: OHHHHH,好的,我终于明白了… 显然,飞行前响应

  • 我注意到,每次我运行一个新作业时,它所花费的时间比我再次启动它时长20%左右? 如果一个作业运行多次,flink是否缓存一些结果并重用它们?如果是,我如何控制这一点? 我想测量我的任务运行了多长时间,但每次我重新运行它们时,速度都比以前快。

  • 主要内容:使用检查点恢复检查点(checkpoint)是一种机制,其中所有先前的日志都从系统中删除并永久存储在存储磁盘中。 检查点就像一个书签。 在执行事务时,标记此类检查点,然后使用事务的步骤执行事务,将创建日志文件。 当它到达检查点时,事务将更新到数据库中,直到那时,整个日志文件将从文件中删除。 然后使用新的事务步骤更新日志文件,直到下一个检查点,依此类推。 检查点用于声明DBMS处于一致状态之前的一个点,并且所有事