我想在 kubernetes 上运行 flink 作业,使用(持久)状态后端,似乎崩溃的任务管理器不是问题,因为如果我理解正确的话,它们可以询问作业管理器需要从哪个检查点恢复。
崩溃的 jobmanager 似乎有点困难。对此翻页 6 页我读到动物园管理员需要能够知道作业经理需要使用哪个检查点来恢复和领导者选举。
看到 kubernetes 每当崩溃时都会重新启动 jobmanager,有没有办法让新的 jobmanager 无需设置 Zookeeper 集群即可恢复作业?
目前我们正在考虑的解决方案是:当 kubernetes 想要终止 jobmanager 时(例如,因为它想要将其移动到另一个虚拟机),然后创建一个保存点,但这仅适用于正常关闭。
Edit:
http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Flink-HA-with-Kubernetes-without-Zookeeper-td15033.html看起来很有趣但是没有后续
Flink 开箱即用,需要 ZooKeeper 集群才能从 JobManager 崩溃中恢复。然而,我认为你可以有一个轻量级的实现HighAvailabilityServices
, CompletedCheckpointStore
, CheckpointIDCounter
and SubmittedJobGraphStore
这可以让你走得很远。
假设你始终只有一个 JobManager 运行(不完全确定 K8s 是否能保证这一点)并且你有一个持久存储位置,你可以实现一个CompletedCheckpointStore
它从持久存储系统检索已完成的检查点(例如读取所有存储的检查点文件)。此外,您将有一个文件,其中包含当前检查点 id 计数器CheckpointIDCounter
以及所有提交的作业图表SubmittedJobGraphStore
。因此基本思想是将所有内容存储在可由单个 JobManager 访问的持久卷上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)