如何将HDFS设置为flink的statebackend

How to set HDFS as statebackend for flink

我想将 flink 存储在 HDFS 中,以便在崩溃后我可以从 HDFS 恢复 flink 状态。我计划每 60 秒将状态写入 HDFS。我怎样才能做到这一点? 这是我需要遵循的配置吗? https://ci.apache.org/projects/flink/flink-docs-release-1.4/ops/state/state_backends.html#setting-default-state-backend

我在哪里指定检查点间隔?任何 link 或示例代码都会有所帮助

有关检查点和保存点的信息可以在 https://nightlies.apache.org/flink/flink-docs-master/docs/dev/datastream/fault-tolerance/checkpointing/

找到

关于如何将 HDFS 配置为文件系统,您应该查看 https://nightlies.apache.org/flink/flink-docs-master/docs/deployment/filesystems/overview/

选择存储检查点的位置(例如,HDFS)与决定使用哪个状态后端来管理您的工作状态(可以在堆上,或者在由 RocksDB 库管理的本地文件中)是分开的。

这两个概念在 Flink 1.12 中被清晰地分开了。在 Flink 的早期版本中,两者似乎比实际更密切相关,因为文件系统和 rocksdb 状态后端构造函数将文件 URI 作为参数,指定检查点应存储在何处。

管理所有这些的最佳方法是将其从代码中删除,并在 flink-conf.yaml 中指定所需的配置,例如,

state.backend: filesystem
state.checkpoints.dir: hdfs://namenode-host:port/flink-checkpoints
execution.checkpointing.interval: 10s