Checkpoints
检查点机制
Fink中基于异步轻量级的分布式快照技术提供了Checkpoints容错机制,分布式快照可以将同一时间点Task/Operator的状态数据全局统一快照处理。
Flink会在输入的数据集上间歇性地生成checkpoint barrier,通过barrier将间隔时间段内的数据划分到相应的checkpoint中,当应用出现异常时,Operator就能够从上一次快照中恢复所有算子之前的状态,从而保证一致性。
对于状态占用空间较小的应用,快照产生过程非常轻量,高频率创建且对flink任务性能影响相对较小。checkpoint过程中状态数据一般被保存在一个可配置的环境中,通常在JobManager节点或者hdfs上
检查点默认是不开启的
checkpoint开启和时间间隔指定
checkpoint开启和时间间隔指定(根据实际情况选择,状态较大,建议适当增加n的值)
env.enableCheckpointing(1000);
exactly-once和at-least-once语义的选择
默认是使用exactly-ance
exactly-ance:保证整个应用内端到端的数据一致性,这种适合数据要求较高,不允许出现丢数据或者数据重复,同时这种情况flink的性能也相对较弱
at-least-once:适合于延时和吞吐量非常高但对数据的一致性要求不高的场景。
env.getCheckpointConfig().setCheckpointingMode(CheckpointingMode.EXACTLY