我想在kubernetes上运行一个flink作业,使用一个(持久的)状态后端,看来崩溃的任务管理器似乎没有问题,因为如果我理解正确的话,他们可以询问任务管理器他们需要从哪个检查点中恢复。
崩溃的工作经理似乎更加困难。在这个flip-6 page上,我读到需要动物园管理员才能知道工作经理需要使用哪个检查点进行恢复和领导选举。
看到kubernetes会在崩溃时重新启动jobmanager,是否有办法让新的jobmanager恢复作业而不需要设置Zookeeper集群?
我们正在研究的当前解决方案是:当kubernetes想杀死jobmanager时(例如,因为它想将其移动到另一个vm),然后创建一个保存点,但这仅适用于正常关机。
编辑:
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
和SubmittedJobGraphStore
进行轻量级实现,这可以带给您很大的帮助。
假设您始终只有一个JobManager在运行(不能完全确定K8是否可以保证这一点)并且您有一个持久存储位置,则可以实现CompletedCheckpointStore
,该CheckpointIDCounter
从持久存储系统中检索完成的检查点(例如,读取所有已存储的检查点)检查点文件)。此外,您将拥有一个文件,其中包含SubmittedJobGraphStore
的当前检查点ID计数器以及ojit_code的所有已提交作业图。因此,基本思想是将所有内容存储在单个JobManager可以访问的持久卷上。