Flink状态一致性检查点


一致性检查点:是指在某一个时刻所有算子将同一个任务都完成的情况下进行的一个快照(方便后续计算出错时,提供一个数据恢复的快照)。Flink有状态的流处理,内部每个算子任务都可以有自己的状态,对于流处理器内部来说,所谓的状态一致性,其实就是我们所说的计算结果要保证准确。


1、Spark & Flink 的CheckPoint

Spark 的CheckPoint也容错机制,对RDD的状态进行保存切断血缘关系,而Spark在map->reduce过程中宽窄依赖划分出的stage会又临时中间结果,所以我们可以拿此中间结果进行CP,这样就实现了Spark的容错机制,即便后面计算出现错误也可以通过CP重新计算。
Flink的CheckPoint也是容错机制(是状态一致性检查点),因为Flink的算子大部分都是有状态的,所以在某个时刻所有算子都完成了同一个任务时,进行一个快照,此时则是一个CheckPoint,其中涉及到了一个barrier(栅栏)的概念来实现快照时数据的混乱以及系统的暂停。

一个完整的快照包含=Source状态+算子状态+Sink事务/两次提交机制


2、单数据源快照流程

流程:
— 图1:首先由图看出数据源此时状态是数据4,此时由JobManager发送栅栏到数据中,随数据流动(特殊的一条数据),当栅栏到达source时则保存source的状态到存储系统中(HDFS、DB等)。
— 图2:栅栏经过Source之后准备进入SUM_even和SUM_odd两个算子,此处栅栏到达到算子,则对算子保存当前状态到存储器中。
— 图3:算子状态保存完毕,栅栏则返回给JobManager,此时JobManager形成映射图,并保存CheckPoint ID (栅栏ID)
Sink对外输出数据,也需要控制其发送的情况,保证状态一致性,其中包含两个策略:① 事务输入 ② 两次提交策略


3、并行数据源快照 流程

由图可知两个数据源并行发送数据
流程:
– 图一 、也是JM发送我们的栅栏,当栅栏到达我们的Source时,对状态进行保存,也就是状态4,3.
– 图二、我们的栅栏跟随数据流向算子,算子SUM_even需要接收到Source1的栅栏和Source2的栅栏都接受到后,才能对自己本身状态进行一个保存,如图二,算子状态分别为8,8。
– 图三、表现得是一种特殊情况,就是当我们的Source1的栅栏已经到达算子,但我们的Source2的栅栏处理慢,此时Source1发出数据5,导致数据5到Source2的栅栏前面,一旦算子5处理后在进行保存状态,会导致算子的状态不一致,故此会将数据5放入缓存区中,等我们的算子接收到Source2的栅栏保存完状态后在进行处理数据。(算子与算子之间保存状态不需要等待,在多个数据源的情况下,算子需要等待每个数据源的快照到达,才能对状态保存)


Flink状态一致性检查点相关推荐

  1. Flink 状态一致性:端到端状态一致性的保证

    文章目录 状态一致性 什么是状态一致性 状态一致性种类 端到端(end-to-end)状态一致性 Sink端到端状态一致性的保证 Flink+Kafka端到端状态一致性的保证 状态一致性 什么是状态一 ...

  2. Flink的状态一致性

    1 状态的一致性 1.1 一致性级别   流处理操作一般分为at-most-once,at-least-once和exactly-once这3个级别.   at-most-once:至多一次,发生故障 ...

  3. 【Flink】介绍Flink中状态一致性的保证

    1.概述 转载:介绍Flink中状态一致性的保证 再次温习了这篇文章有了不一样的收货.侵权可删,这里是方便自己找到. 1. 一致性 1.1 介绍状态一致性 有状态的流处理,内部每个算子任务都可以有自己 ...

  4. [Flink] 容错机制与状态一致性机制

    文章目录 1.状态一致性 1.1 状态一致性分类 2.一致性检查点 checkpoint 3.端到端(end-to-end)状态一致性 4. 端到端的精确一次(exactly-once)保证 4.1 ...

  5. flink学习笔记5-flink状态和检查点

    flink状态 要实现有且只有一次或者至少一次处理语义,需要保存相关的中间状态数据,在故障恢复时进行还原故障前系统的运行状态.在flink中,定义了操作状态和分组状态两种状态,且定义了检查点机制来定时 ...

  6. Flink 状态管理:算子状态、键值分区状态、状态后端、有状态算子的扩缩容

    文章目录 状态管理 算子状态 键值分区状态 状态后端(State Backends) 有状态算子的扩缩容 状态管理 通常意义上,函数里所有需要任务去维护并用来计算结果的数据都属于任务的状态,可以把状态 ...

  7. Flink 状态管理与 Checkpoint 机制

    点击上方"zhisheng",选择"设为星标" 一.状态分类 相对于其他流计算框架,Flink 一个比较重要的特性就是其支持有状态计算.即你可以将中间的计算结果 ...

  8. 【推荐实践】Flink 状态(State)管理在推荐场景中的应用

    导语 Flink 提供了灵活丰富的状态管理,可轻松解决数据之间的关联性.本文介绍了Flink 状态(State)管理在推荐场景中的应用,大家结合自己的应用场景与业务逻辑,选择合适的状态管理. 背景 F ...

  9. Flink状态后端配置(设置State Backend)

    Flink提供不同的状态后端(state backends)来区分状态的存储方式和存储位置.flink状态可以存储在java堆内存内或者内存之外.通过状态后端的设置,flink允许应用保持大容量的状态 ...

最新文章

  1. 拆分字符串使唯一子字符串的数目最大
  2. 担保债务凭证(Collateralized Debt Obligation,简称CDO) CLO/CBO
  3. 公需科目必须学吗_税务师要继续教育吗,2019税务师怎样继续教育?
  4. cocos2d-x之逐帧动画
  5. 得到第K个大的数算法研究
  6. 数据库连接,实现增删改查操作具体步骤(全)
  7. Ghost XP_sp3电脑装机终极版V9.6 【雪豹】
  8. 如何使用python刷博客浏览量---第二种方法
  9. Yii2基本概念之——行为(Behavior)
  10. 安装Ceres Solver
  11. 记2021沙尘漫天的春
  12. 疾病地图制作_助力旅游业复工复产,这份山西中医文旅地图请收好,就在你家门口...
  13. Scratch幻影小猫 电子学会图形化编程scratch等级考试三级真题答案2019-9
  14. 如何通过浏览器访问本地电脑文件
  15. 狂奔的“智慧校园”:监控学生的生意,会持续吗?
  16. 利用C#脚本来处理Excel
  17. pytorch 深度学习补充
  18. 电销公司用什么外呼系统好?用pc版还是app版
  19. 15个最好的PDF转word的在线转换器,将PDF文件转换成doc文件
  20. 【软件测试】测试用例的设计

热门文章

  1. C termios.h 简单用法
  2. 小米华为抢占智能家居,智慧家庭时代到来?
  3. 多项目同时进行如何做好进度管理?
  4. c语言:13、指针与内存
  5. 彻底解决Word中子标题变黑块问题
  6. 二分查找、求上界和下界(包括内置函数lower_bound、和upper_bound的使用)
  7. 04_消息中心(MessageCenter)
  8. 停用词是什么?常用中文停用词
  9. FineReport报表工具激活码
  10. 王兴在这个被互联网遗忘的网站上,留下了一万多条碎碎念。