如果我为 Flink 检查点配置一个本地文件系统会发生什么?

What would happen if I configured a local file system for Flink checkpointing?

我看过一个名为 Managing State in Apache Flink - Tzu-Li (Gordon) Tai 的视频。 在这个video中,它使用分布式文件系统存储数据。

我想知道如果我为 Flink 检查点配置一个本地文件系统会发生什么?

例如:

env.setStateBackend(new RocksDBStateBackend(getString("flie:///tmp/checkpoints"), true));

我假设Flink集群的每个节点都会保存自己的数据。它会运作良好吗?

I assume that every node of Flink cluster will keep their own data.

没错。

Would it work well?

使用本地文件系统和分布式节点,您可以很好地检查点(即使这也不确定,因为目录可能是由 JobManager 创建的,所以 TaskManager实例可能会因目录不存在而失败)但是您将无法恢复,因为 JobManager 读取并根据需要将其分发给操作员。

严格来说,文件系统是本地的还是分布到flink都没有关系。重要的是 JobManager as restore time 能够看到所有的检查点数据。如果您 运行 一切都在同一台机器上,那么本地文件系统就可以正常工作。

我认为原则上您甚至可以让所有节点在本地写入,然后手动使用同步过程将数据移动到 JobManager 在尝试恢复期间可以看到的某个位置,但这肯定不是一个推荐的方法。