如果我没有配置statebackend,默认情况下状态存储在哪里?

r3i60tvu  于 2021-06-21  发布在  Flink
关注(0)|答案(2)|浏览(316)

在我的程序中,我启用了检查点,

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.enableCheckpointing(5000);

但我还没有配置任何statebend。
检查点状态存储在哪里?我能检查一下这些数据吗?

yhived7q

yhived7q1#

默认状态后端将工作状态保留在各种任务管理器的堆上,并将其备份到作业管理器堆。这就是所谓的 MemoryStateBackend .
没有api可以直接访问存储在状态后端的数据。您可以模拟任务管理器失败并观察状态是否已恢复。如果希望将状态外部化,则可以触发保存点,尽管没有工具可以直接检查这些保存点。

kiayqfof

kiayqfof2#

这不是答案,而是对正确答案的小小补充。为了名誉我不能写评论。
如果您使用的flink版本早于v1.5,那么默认状态后端将memorystatebeckend,异步快照设置为false。因此,在本例中,您将每5秒使用一次同步保存检查点(您的管道将每5秒阻塞一次以保存检查点)。
要避免这种情况,请使用显式构造函数: env.setStateBackend(new MemoryStateBackend(maxStateSize, true)); 由于flink v1.5.0版本,memorystatebackend默认情况下使用异步快照。
有关更多信息,请参阅flink\ u v1.4文档

相关问题