Flink基础
(2022-08-03 14:11:22)分类: 大数据 |
链接:https://www.zhihu.com/question/263966662/answer/382028202
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Flink提供了可以恢复数据流应用的到一致状态的容错机制,确保在发生故障,程序的每一条记录只会作用于状态一次(exactly-once).
这套容错机制通过持续创建分布式数据流的快照来实现,对于状态占用空间小的流应用。这些快照非常轻量化。可以高频的创建对流的性能影响非常小。这个状态保存在一个可配置的环境。
当遇到故障时,flink会停止分布式数据流。系统会重启所有的operator,重至到最近成功的checkpoint。输入重置相应的状态快照位置,来保证重置位置的正确性。
Flink分布式快照的核心之一是数据栅栏,这些barrier被插入数据流,作为数据流数据的一部分,barrier不会干扰正常的数据流,一个barrier会把数据分割成两个部分,一部分进入当前快照,另一部分进入下一个快照。每个barrier都带有快照的id,并且 barrier 之前的数据都进入了此快照。多个barrier会出现数据流中,也就是会产生多个快照。
当barrier在source源头插入时,当快照 n的barrier插入时,系统就会记录当前快照的位置。然后barrier接着往下流到,但一个operator从输入流接收到所有快照 n的标示的barrier时,他会向所有的输出流插入一个标示为快照 n 的barrier.当sink operator接受到所有的快照 n,他会向the checkpoint coordinator 确认 snapshot n 已完成。当所有的sink都确认这个快照时,就完成。