我有一个flinkv1.2设置,在它自己的vm中有1个jobmanager,2个taskmanager。我将state backend配置为filesystem,并将其指向上述每台主机的本地位置(state.backend.fs.checkpointdir:file:///home/ubuntu/prototype/flink/flink checkpoints)。我将parallelism设置为1,每个taskanger有一个插槽。然后,我在jobmanager上运行一个事件处理作业,将其分配给taskmanager。我杀死了运行作业的taskmanager,在失败的taskmanager上尝试了几次失败后,flink尝试在剩余的taskmanager上运行作业。此时它再次失败,因为它找不到相应的检查点/state:java.io.filenotfoundexception:/home/ubuntu/prototype/flink/flink checkpoints/56c409681baeaf205bc1ba6cbe9f8091/chk-14/46f6e71d-ebfe-4b49-bf35-23c2e7f97923(没有这样的文件或目录)
文件夹/home/ubuntu/prototype/flink/flink checkpoints/56c409681baeaf205bc1ba6cbe9f8091只存在于我杀死的taskmanager上,而不存在于另一个。
我的问题是,如果我想要上述功能,是否应该在所有任务管理器上设置相同的检查点/状态位置?
谢谢!
1条答案
按热度按时间c8ib6hqw1#
您使用的检查点目录需要在组成flink集群的所有计算机之间共享。通常这类似于hdfs或s3,但可以是任何共享文件系统。