[英]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
。 它维护工人(TaskManagers)JVM堆上的状态,并将其检查点指向主服务器(JobManager)的JVM堆。 因此, MemoryStateBackend
不需要任何其他配置或外部系统,对于本地开发非常有用。 但是,它显然不具有可伸缩性,不适合任何严重的工作量。
Flink还提供了FSStateBackend
,它还在工作程序的JVM堆上保存本地状态,并将其检查点到远程文件系统(HDFS,NFS等)。 最后,还有RocksDBStateBackend
,它将状态存储在基于磁盘的嵌入式键值存储(RocksDB)中,并且还指向远程文件系统(HDFS,NFS等)的检查点。
默认状态后端是MemoryStateBackend。 意味着它将飞行中的数据存储在任务管理器的JVM中并将其检查点在master(作业管理器)堆中。 这对本地调试很有用,但是如果作业失败,您将失去检查点。
通常用于生产时使用FsStateBackend,并带有指向外部文件系统(HDFS,S3等)的路径。 它将飞行数据存储在任务管理器的JVM中,并将其检查点指向外部文件系统。
喜欢
env.setStateBackend(new FsStateBackend("file:///apps/flink/checkpoint"));
也可以选择配置一个小的元文件,指向状态存储以实现高可用性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.