在我的程序中,我启用了检查点,
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.enableCheckpointing(5000);
但我还没有配置任何statebend。检查点状态存储在哪里?我能检查一下这些数据吗?
yhived7q1#
默认状态后端将工作状态保留在各种任务管理器的堆上,并将其备份到作业管理器堆。这就是所谓的 MemoryStateBackend .没有api可以直接访问存储在状态后端的数据。您可以模拟任务管理器失败并观察状态是否已恢复。如果希望将状态外部化,则可以触发保存点,尽管没有工具可以直接检查这些保存点。
MemoryStateBackend
kiayqfof2#
这不是答案,而是对正确答案的小小补充。为了名誉我不能写评论。如果您使用的flink版本早于v1.5,那么默认状态后端将memorystatebeckend,异步快照设置为false。因此,在本例中,您将每5秒使用一次同步保存检查点(您的管道将每5秒阻塞一次以保存检查点)。要避免这种情况,请使用显式构造函数: env.setStateBackend(new MemoryStateBackend(maxStateSize, true)); 由于flink v1.5.0版本,memorystatebackend默认情况下使用异步快照。有关更多信息,请参阅flink\ u v1.4文档
env.setStateBackend(new MemoryStateBackend(maxStateSize, true));
2条答案
按热度按时间yhived7q1#
默认状态后端将工作状态保留在各种任务管理器的堆上,并将其备份到作业管理器堆。这就是所谓的
MemoryStateBackend
.没有api可以直接访问存储在状态后端的数据。您可以模拟任务管理器失败并观察状态是否已恢复。如果希望将状态外部化,则可以触发保存点,尽管没有工具可以直接检查这些保存点。
kiayqfof2#
这不是答案,而是对正确答案的小小补充。为了名誉我不能写评论。
如果您使用的flink版本早于v1.5,那么默认状态后端将memorystatebeckend,异步快照设置为false。因此,在本例中,您将每5秒使用一次同步保存检查点(您的管道将每5秒阻塞一次以保存检查点)。
要避免这种情况,请使用显式构造函数:
env.setStateBackend(new MemoryStateBackend(maxStateSize, true));
由于flink v1.5.0版本,memorystatebackend默认情况下使用异步快照。有关更多信息,请参阅flink\ u v1.4文档