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

代码更改后从状态恢复Flink作业

祁杰
2023-03-14

我使用Apache Flink 1.9和标准检查点/保存点机制来FS。

我的问题是:如果作业的代码发生了更改,从保存点恢复作业的正确方法是什么?例如,在重构之后,我重命名了几个类,之后我无法从旧的检查点恢复。

我丢失了我的数据,想问-在这种情况下我能做些什么?

所有运算符都有uid和name

共有2个答案

景元徽
2023-03-14

似乎您的状态不能被视为POJO(POJO:遵循某种类bean模式的类)。当用户定义的数据类型不能被识别为POJO类型时,它必须被处理为GenericType并使用Kryo序列化。目前,在Flink中,仅POJO和Avro类型支持模式演进。因此,如果您关心状态的模式演进,目前建议始终对状态数据类型使用Pojo或Avro。

一些文档供参考:https://ci.apache.org/projects/flink/flink-docs-stable/dev/types_serialization.html https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/state/schema_evolution.html

濮金鑫
2023-03-14

简而言之:这要看情况而定。

至于更详细的解释,如果您只对类进行了重新排序和重命名,这通常不应该是一个问题,显然只要UID没有改变。至于重构,它实际上可能会影响状态的存储方式,从而可能会阻止恢复它。在这种情况下,您可以使用参数--lowNonRestoredState,它应该允许从保存点恢复可用状态并启动干净状态。请记住,这可能不会恢复所有状态。一般来说,一旦运算符运行,您就不应该真正重构它们,因为它可以有效地阻止从保存点恢复。

值得注意的是,如果您使用的是SQL,则可能无法从保存点恢复,请参阅FLINK-6966问题。

我假设您处理的是保存点而不是外部化的检查点,否则没有什么需要考虑的,尤其是在更改并行性时。

 类似资料:
  • 我正在编写一个应用程序,它有一个带有按钮和图像的菜单。我按下按钮,按钮的标签从“录制曲目”更改为“停止录制”。问题是,当我旋转设备时,带有按钮的活动会被操作系统终止。因此,我知道我必须在数据在方法中被杀死之前保存数据,然后在我的method中恢复数据。类似这样: 和: 虽然它完美地恢复了我的图像,但我的菜单仍然有问题:由于某些原因,它总是保持为“空”,因此它永远不会更改按钮的标签,尽管每次“活动”

  • 我正在K8上运行flink cluster,状态约为1TB。 我面临的问题之一是获取保存点并恢复作业。现在,这些更新有时是简单的代码更新,而不是并行性更改。但是获取保存点然后用旧状态恢复新作业的时间相当长。 是否有方法对作业进行就地更新,以使本地状态和作业ID不发生更改,从而避免执行保存点恢复所需的时间?

  • 我正在研究以太网AVB模块。我的板可以被命令暂停 但是当从挂起恢复时,eth0不起作用。现象是: > 可平环回: $ ping 127.0.0.1 -- PHY电源关闭(关机) 无法ping邻居:$ping 192.168.1.1-- 我假设网络层(符合OSI模型)是可以的,因为我可以ping回环。我认为问题发生在物理层,与: > PHY ic(我的板使用Micrel Phys ksz9031)

  • 我将微服务实现为事件源聚合,而事件源聚合又被实现为Flink FlatMapFunction。在基本设置中,聚合从两个kafka主题读取事件和命令。然后,它将新事件写入第一个主题并处理第三个主题的结果。因此,Kafka充当事件存储。希望这张图能有所帮助: 由于Kafka没有选中点,因此命令可能会被重放两次,而且输出事件似乎也可以在主题中写入两次。 在重复消息的情况下如何恢复状态?聚合是否可以知道其

  • 我们目前正在kubernetes上运行flink,作为使用这个helm模板的作业集群:https://github.com/docker-flink/examples/tree/master/helm/flink(带有一些添加的配置)。 如果我想关闭集群,重新部署新映像(由于应用程序代码更新)并重新启动,我将如何从保存点进行恢复? jobManager命令严格设置在standalone-job.s

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