我们每天在处理数据时都会遇到一两个检查点故障。数据量很低,比如10k以下,我们的间隔设置为“2分钟”(处理速度非常慢的原因是我们需要将数据下沉到另一个api端点,这需要在flink作业结束时花费一些时间来处理,因此时间是流式传输数据+下沉到外部api端点)。
根本问题是:10分钟后检查点超时,这是由于数据处理时间长于10分钟,所以检查点超时。我们可能会增加并行度以加快处理速度,但是如果数据变大,我们必须再次增加并行度,所以不想使用这种方式。
建议解决方案:我看到有人建议在新旧检查点之间设置暂停,但我有一个问题,如果我在那里设置暂停时间,新的检查点是否会在暂停时间内丢失状态?
目的:如何避免这个问题,并记录正确的状态,不丢失任何数据?
失败的检查点:在此处输入图像描述
完成的检查点:在此处输入图像描述
子任务没有响应请在此处输入图像描述
谢谢
1条答案
按热度按时间sg2wtvxw1#
您可以设置几个相关的配置变量,例如检查点间隔、检查点之间的暂停以及并发检查点的数量。这些设置的组合不会导致跳过检查点的数据。
设置检查点之间的间隔意味着flink在上一个检查点完成(或失败)后的某个时间过去之前不会启动新的检查点,但这对超时没有影响。
听起来你应该延长超时时间,你可以这样做:
哪里
n
以毫秒为单位。有关更多详细信息,请参阅flink文档中有关启用和配置检查点的部分。