TaskManager 的 Flink 状态后端
Posted
技术标签:
【中文标题】TaskManager 的 Flink 状态后端【英文标题】:Flink state backend for TaskManager 【发布时间】:2017-03-08 13:25:38 【问题描述】:我有一个 Flink v1.2 设置,其中有 1 个 JobManager,2 个 TaskManager,每个都在它自己的 VM 中。我将状态后端配置为文件系统,并在上述每个主机的情况下将其指向本地位置(state.backend.fs.checkpointdir:file:///home/ubuntu/Prototype/flink/flink-checkpoints)。我已将并行度设置为 1,每个任务管理器都有 1 个插槽。 然后我在 JobManager 上运行一个事件处理作业,它将它分配给一个 TaskManager。 我杀死了运行作业的 TaskManager,在失败的 TaskManager 上尝试了几次不成功后,Flink 尝试在剩余的 TaskManager 上运行作业。此时它再次失败,因为它找不到相应的检查点/状态: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】:您使用的检查点目录需要在构成 Flink 集群的所有机器之间共享。通常这类似于 HDFS 或 S3,但可以是任何共享文件系统。
【讨论】:
嗨,你确定吗?这次又做了一个测试设置 state.backend: filesystem state.backend.fs.checkpointdir: file:///home/local/flink/flink-checkpoints state.checkpoints.dir: file:///home/home/local /flink/external-checkpoints 在每个 Job/TaskManager VM 上,如果我在剩余的一个上杀死 TaskManager,它会恢复工作。以上是关于TaskManager 的 Flink 状态后端的主要内容,如果未能解决你的问题,请参考以下文章
Flink - The heartbeat of TaskManager with id container timed out 分析与 Heartbeat 简介