【问题标题】:Flink, basic rule for checkpointing?Flink,检查点的基本规则?
【发布时间】:2019-07-29 09:59:32
【问题描述】:
我有两个关于 Flink 检查点策略的问题,
- 我知道检查点与状态有关(对吗?),所以如果我没有在我的工作代码中明确使用状态(ValueState 之类的东西),我需要关心检查点吗?还需要吗?
- 如果我需要启用检查点,间隔应该是多少?设置间隔有什么基本规则吗?假设我们谈论的是一个非常繁忙的系统(Kafka+Flink),比如每天有数十亿条消息。
非常感谢。
【问题讨论】:
标签:
apache-flink
flink-streaming
【解决方案1】:
即使您没有在应用程序中明确使用状态,Flink 的 Kafka 源和接收器连接器也会代表您使用状态,以便为您提供至少一次或完全一次的保证——假设您关心那些保证。此外,其他一些运算符也将代表您以某种方式透明地使用状态,例如窗口和其他流聚合。
如果您的 Flink 作业失败,那么它将被退回到最近成功的检查点,并从那里恢复处理。因此,例如,如果您的检查点间隔为 10 分钟,那么在恢复后,您的作业可能需要 10 分钟以上的数据才能恢复处理实时数据。所以从这个角度选择一个你可以接受的检查点间隔。