Flink 管理大型状态之增量 Checkpoint

Posted @SmartSi

tags:

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

传送门:Flink 系统性学习笔记


Apache Flink 是一个有状态的流处理框架。什么是流处理应用程序的状态呢?你可以理解状态为应用程序算子中的内存。状态在流计算很多复杂场景中非常重要,比如:

  • 保存所有历史记录,用来寻找某种事件模式
  • 保存最近一分钟的所有记录,对每分钟的记录进行聚合统计
  • 保存当前的模型参数,用于进行模型训练

但是,有状态的流处理仅在状态可以容错的情况下才建议在生产环境中使用。这里的容错是指即使出现软件或机器故障,计算的最终结果也是准确的,不会出现丢失数据或重复计算的情况。Flink 的容错一直是一个功能强大的特性,可以最大限度地减少软件或机器故障对我们业务带来的影响,并可以保证 Flink 应用程序结果的 Exactly-Once 语义。

Flink 应用程序状态容错保障机制的核心是 Checkpoint。Flink 中的 Checkpoint 是周期性触发的全局异步快照,并发送到持久存储(通常是分布式文件系统)上。如果发生故障,Flink 会使用最近一个完成的快照来恢复应用程序。有些用户的作业状态达到 GB 甚至 TB 级别。这些用户报告说在如此大的状态下,创建 Checkpoint 通常比较耗费时间,也耗费资源,这就是我们为什么在 Flink 1.3 中引入增量 Ch

以上是关于Flink 管理大型状态之增量 Checkpoint的主要内容,如果未能解决你的问题,请参考以下文章

大数据计算引擎之Flink Flink状态管理和容错

大数据计算引擎之Flink Flink状态管理和容错

Flink状态管理和恢复机制

Flink JobManager 基本组件

从0到1Flink的成长之路(二十)-Flink 高级特性之Flink 状态管理

Flink —— 状态管理