Apache Flink - FsStateBackend - 在将状态存储在本地文件系统中的任务管理器发生故障时如何恢复状态

Apache Flink - FsStateBackend - How state is recovered in case of Task Manager failure which stores state in its local file system

假设我们有 2 个作业管理器(ZooKeeper for HA)和 3 个任务管理器。我已经为检查点配置了 FsStateBackend。我假设 FsStateBackend 在每个维护内存状态的任务管理器中运行。在检查点上,状态保存在我们配置的路径中(文件:/数据)。基本上我已经配置了指向本地文件系统的路径。因此,每个任务管理器都有自己的本地磁盘存储,检查点数据保存在其中。根据我的理解,一个小的元数据在检查点时被发送到作业管理器。

  1. 如果其中一个任务管理器崩溃,会发生什么情况?可以肯定的是,任务是在任何可用的任务管理器中启动的。由于任务管理器(崩溃的任务管理器)检查点数据不可用,作业状态如何恢复?检查点进程是否将状态信息发送给作业管理器?
  2. 检查点期间任务管理器发送给作业管理器的元数据是什么?
  3. 我们正在使用的文件系统应该是分布式的吗?例如。网络文件系统,S3。如果我们使用系统本地存储进行检查点会发生什么。

谢谢

您应该始终使用分布式文件系统进行检查点。类似于 HDFS、S3、GFS、NFS、Ceph 等。此外,所使用的存储路径必须可从所有参与的 processes/nodes(即所有任务管理器和作业管理器)访问。

否则,正如您所指出的,如果本地磁盘发生故障,检查点数据将会丢失。

作业管理器完全了解检查点,如果您配置了 HA,此信息将存储在配置的 HA 存储提供程序中以启用作业管理器故障转移。