Flink总结

1、有状态计算:处理和维护所有已处理记录的状态。

2、无状态计算:每次转换一条输入记录,并且仅根据最新的输入记录输出结果。

3、一致性:exactly-once  系统保证在发生故障后得到的计数结果与正确值一致。(Storm Trident 和 Spark Streaming)在性能和表现力这两个方面付出了很大的代价。为了保证exactly-once ,这些系统无法单独地对对每条记录进行运用逻辑,而是同时处理多条(一批)记录,保证对每一批的处理要么成功,要么全部失败。

4、Flink如何 保证exactly-once ??通过 check-point barrier 检查点屏障。

5、检查点屏障的原理:检查点由Flink系统自动生成插入到普通记录中,像普通记录一样在算子之间流动;算子收到检查点屏障时,它们会将位置和状态以异步的方式写入稳定存储。如果在计算过程中出现故障,Flink将输入流倒回到上一个检查点屏障的位置,同时回复算子的状态值;然后Flink从此处开始重新处理。这样保障了在记录处理之后,map算子的状态值与没有发生故障时的一致。

注意:如果检查点操作失败,Flink会丢弃该检查点并继续正常执行,因为之后的某一个检查点可能会成功。只有在一系列连续的检查点操作失败之后,Flink才会抛出错误,因为这通常预示着发生了严重且持久的错误。检查点依赖输入流的重放功能。

6、保存点:状态版本控制。人为控制的检查点。

7、端到端的一致性如何进行保障??Flink在将状态内容传送到输出存储系统的过程中,如何保证excatly-once那??
1)、在最后的算子输出环节缓冲所有输出,并在最后算子收到检查点时,将输出『原子提交』到存储系统。输出系统要具备『原子提交』的能力。
2)、在随时输出记录到外部存储时,牢记这些数据可能是脏数据,在发生故障时需要进行重新处理。如果发生故障,就需要将输出、输入和Flink作业全部回滚,从而将脏数据覆盖。

Flink有如下的流处理机制:
1)、检查点机制和状态机制:用于实现容错、有状态的处理。
2)、水印机制:用于实现事件时钟。
3)、窗口和触发器:用于限制计算范围,并定义呈现结果的时间。
Flink批处理机制:
1)、用于调度和恢复的回溯法:由Microsoft Dryad引入,现在几乎用于所有批处理起。
2)、用户散列和排序的特殊内存数据结构:可以在需要时,将一部分数据从内存溢出到硬盘上;
3)、优化器:尽可能地缩短生成结果的时间。

 

你可能感兴趣的:(Flink总结)