Flink State

Posted zgq25302111

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flink State相关的知识,希望对你有一定的参考价值。

1、通常意义上,函数里所有需要任务去维护并用来计算结果的数据都属于任务的状态。比如 +1的算子,中间结果就是状态。

2、状态有两种,

算子状态:作用域是某个算子任务,所有在同一个并行任务之内的记录都能访问到相同的状态。算子状态不能通过其他任务访问。

健值分区状态:

3、有状态的流式应用的一致性检查点是在所有任务处理完等量的原始输入后对全部任务状态进行的一个拷贝。

数据源能否重置其输入流取决于数据源的具体实现以及所消费外部系统是否提供相关接口。只有所有输入流都是来自于可重置的数据源,应用才支持精确一次的状态的一致性。

根据应用采用的数据汇算子,恢复期间某些结果记录可能会向下游系统(如事件日志系统、文件系统或数据库)发送多次。对Kafka,Flink提供的数据汇函数支持精确一次输出,例如在检查点完成后才会把写出的记录正式提交。

4、P74 讲Chandy-Lamport算法。

所有先于分隔符的记录所引起的状态更改都会被包含在分隔符所对应的检查点之中;而所有晚于分隔符的记录所引起的状态更改都会被纳入之后的检查点之中。

和watermark类似,检查点分隔符总是以广播形式发送,从而可以确保每个任务都能从它们的每个输入都收到一个分隔符。

5、原则上,保存点的生成算法和检查点完全一样,只是保存点需要用户显示触发。

以上是关于Flink State的主要内容,如果未能解决你的问题,请参考以下文章

状态模式

设计模式_状态模式

java 多线程-线程的状态

RecyclerView网格分割线

Flink学习笔记:搭建Flink on Yarn环境并运行Flink应用

Flink学习笔记01:初探Flink