我是apache flink的新手,我正在浏览apache flink的例子。我发现在失败的情况下,flink有能力从检查点恢复流处理。
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.enableCheckpointing(10000L);
现在,我的问题是flink在默认情况下把检查点放在哪里?
感谢您的帮助!
我是apache flink的新手,我正在浏览apache flink的例子。我发现在失败的情况下,flink有能力从检查点恢复流处理。
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.enableCheckpointing(10000L);
现在,我的问题是flink在默认情况下把检查点放在哪里?
感谢您的帮助!
2条答案
按热度按时间jobtbby31#
flink的特点是对StateBackend的抽象。一
StateBackend
负责本地管理工作节点上的状态,还负责检查(并将状态恢复)到远程位置。默认值
StateBackend
是MemoryStateBackend
. 它维护worker(taskmanagers)jvm堆上的状态,并将其检查点指向master(jobmanager)的jvm堆。因此MemoryStateBackend
不需要任何额外的配置或外部系统,有利于本地开发。但是,它显然不可伸缩,不适合任何严重的工作负载。flink还提供了
FSStateBackend
,它还将本地状态保存在worker的jvm堆上,并将其检查点指向远程文件系统(hdfs、nfs,…)。最后,还有RocksDBStateBackend
,它将状态存储在嵌入式基于磁盘的键值存储(rocksdb)中,还将检查点存储到远程文件系统(hdfs、nfs等)。6qqygrtg2#
默认状态后端是memorystatebackend。意味着它将飞行中的数据存储在任务管理器的jvm中,并将其检查点放在主堆(job manger)中。这对本地调试很好,但如果工作失败,您将失去检查点。
通常在生产环境中使用fsstatebackend,并带有指向外部文件系统(hdfs、s3等)的路径。它将飞行数据存储在任务管理器的jvm中,并将其检查点到外部文件系统。
喜欢
还可以选择配置一个指向状态存储的小型元文件,以实现高可用性。