Apache Flink 中保存的默认检查点在哪里?
Where is the default checkpoint(s) kept in Apache Flink?
我是 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
,它在 worker 的 JVM 堆上保存本地状态,并将其检查点到远程文件系统(HDFS、NFS 等)。最后,还有 RocksDBStateBackend
,它将状态存储在基于嵌入式磁盘的键值存储 (RocksDB) 中,并将检查点存储到远程文件系统(HDFS、NFS 等)。
默认状态后端是 MemoryStateBackend。意味着它将飞行中的数据存储在任务管理器的 JVM 中,并将其检查点放在主机(作业管理器)的堆中。它对本地调试很有用,但如果工作失败,您将失去检查点。
通常在生产环境中使用带有外部文件系统(HDFS、S3 等)路径的 FsStateBackend。它将飞行数据存储在任务管理器的 JVM 中,并将其检查点到外部文件系统。
喜欢
env.setStateBackend(new FsStateBackend("file:///apps/flink/checkpoint"));
可选地,还可以配置一个小元文件指向状态存储以实现高可用性。
我是 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
,它在 worker 的 JVM 堆上保存本地状态,并将其检查点到远程文件系统(HDFS、NFS 等)。最后,还有 RocksDBStateBackend
,它将状态存储在基于嵌入式磁盘的键值存储 (RocksDB) 中,并将检查点存储到远程文件系统(HDFS、NFS 等)。
默认状态后端是 MemoryStateBackend。意味着它将飞行中的数据存储在任务管理器的 JVM 中,并将其检查点放在主机(作业管理器)的堆中。它对本地调试很有用,但如果工作失败,您将失去检查点。
通常在生产环境中使用带有外部文件系统(HDFS、S3 等)路径的 FsStateBackend。它将飞行数据存储在任务管理器的 JVM 中,并将其检查点到外部文件系统。
喜欢
env.setStateBackend(new FsStateBackend("file:///apps/flink/checkpoint"));
可选地,还可以配置一个小元文件指向状态存储以实现高可用性。