我是 Apache Flink 的新手,我正在查看 Apache Flink 的示例。我发现,在发生故障时,Flink 能够从检查点恢复流处理。
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.enableCheckpointing(10000L);
现在,我的问题是 Flink 默认在哪里保存检查点?
感谢任何帮助!
最佳答案
Flink 具有 StateBackends 的抽象。 StateBackend
负责本地管理工作节点上的状态,还负责将状态检查点(并将状态恢复)到远程位置。
默认的StateBackend
是MemoryStateBackend
。它维护工作线程 (TaskManager) JVM 堆上的状态,并将其检查点到主线程 (JobManager) 的 JVM 堆。因此,MemoryStateBackend 不需要任何额外的配置或外部系统,有利于本地开发。然而,它显然不可扩展,不适合任何严重的工作负载。
Flink 还提供了 FSStateBackend
,它也在工作线程的 JVM 堆上保存本地状态,并将其检查点到远程文件系统(HDFS、NFS,...)。最后,还有 RocksDBStateBackend,它将状态存储在基于磁盘的嵌入式键值存储 (RocksDB) 中,并且还设置远程文件系统(HDFS、NFS...)的检查点。
关于java - Apache Flink 中的默认检查点保存在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50317884/