java—ApacheFlink中的默认检查点保存在哪里?

5tmbdcev  于 2021-06-24  发布在  Flink
关注(0)|答案(2)|浏览(644)

我是apache flink的新手,我正在浏览apache flink的例子。我发现在失败的情况下,flink有能力从检查点恢复流处理。

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.enableCheckpointing(10000L);

现在,我的问题是flink在默认情况下把检查点放在哪里?
感谢您的帮助!

jobtbby3

jobtbby31#

flink的特点是对StateBackend的抽象。一 StateBackend 负责本地管理工作节点上的状态,还负责检查(并将状态恢复)到远程位置。
默认值 StateBackendMemoryStateBackend . 它维护worker(taskmanagers)jvm堆上的状态,并将其检查点指向master(jobmanager)的jvm堆。因此 MemoryStateBackend 不需要任何额外的配置或外部系统,有利于本地开发。但是,它显然不可伸缩,不适合任何严重的工作负载。
flink还提供了 FSStateBackend ,它还将本地状态保存在worker的jvm堆上,并将其检查点指向远程文件系统(hdfs、nfs,…)。最后,还有 RocksDBStateBackend ,它将状态存储在嵌入式基于磁盘的键值存储(rocksdb)中,还将检查点存储到远程文件系统(hdfs、nfs等)。

6qqygrtg

6qqygrtg2#

默认状态后端是memorystatebackend。意味着它将飞行中的数据存储在任务管理器的jvm中,并将其检查点放在主堆(job manger)中。这对本地调试很好,但如果工作失败,您将失去检查点。
通常在生产环境中使用fsstatebackend,并带有指向外部文件系统(hdfs、s3等)的路径。它将飞行数据存储在任务管理器的jvm中,并将其检查点到外部文件系统。
喜欢

env.setStateBackend(new FsStateBackend("file:///apps/flink/checkpoint"));

还可以选择配置一个指向状态存储的小型元文件,以实现高可用性。

相关问题