我知道flink使用检查点机制来保证一次。但我想知道更多的细节。
如果我是对的,每个操作员都有自己的检查点。我不明白这些检查站是如何协同工作的。
我有两个源任务a和b,还有一个操作符c。a和b是c的输入。
似乎c必须同时等待a的检查点和b的检查点。但是我们如何确定它们的间隔呢?如果c的运算符执行此操作: output = a1 + a2 + a3 - b1
,这是否意味着我们应该将b的检查点的间隔设置为a的检查点的三倍?
总之,我的问题是,我们是否应该根据每个操作员的工作和输入频率对其检查点间隔进行一些设计,以避免长时间等待检查点的问题?
1条答案
按热度按时间jjjwad0x1#
我不知道我是否明白你的问题。为整个作业设置检查点间隔,而不是基于每个操作员。这决定了将检查点屏障注入源流的时间间隔。然后它与常规事件通过相同的通道。在接收到一个检查点屏障时,一个操作员检查其对应于该特定检查点的状态(每个检查点屏障包含检查点id)。这样,整个作业可以在流中的该点对所有操作符进行一致的快照。
如果您想更透彻地解释它究竟是如何工作的,请看这里:数据流容错