【Flink入门修炼】2-1 Flink 四大基石

前一章我们对 Flink 进行了总体的介绍。对 Flink 是什么、能做什么、入门 demo、架构等进行了讲解。

本章我们将学习 Flink 重点概念、核心特性等。

本篇对 Flink 四大基石进行概括介绍,是 Flink 中非常关键的四个内容。

一、四大基石

Flink四大基石分别是:Time(时间)、Window(窗口)、State(状态)、Checkpoint(检查点)。

下面我们对每个部分,分别进行介绍。

(一)State

什么是状态?

流计算不断有数据流入,会基于历史数据和当前数据做计算,那么各个算子之中计算后的数据就是状态。

  • Flink 计算引擎,自身就是基于状态计算框架,默认情况下程序自己管理状态
  • 提供一致性的语义,使得用户在编程时能够更轻松、更容易地去管理状态
  • 提供一套非常简单明了的State API,包括ValueState、ListState、MapState,BroadcastState

(二)Checkpoint

什么是 Checkpoint(检查点)?

一言以蔽之:用于 Flink 的故障恢复。

Checkpoint 会定期生成快照(Snapshot),对当前 State 进行备份。若Flink程序崩溃,重新运行程序时可以有选择地从这些快照进行恢复。Checkpoint是Flink可靠性的基石

原理:

使用异步屏障快照 Asynchronous Barrier Snapshotting(简称 ABS)算法(依赖于Chandy-Lamport算法的变种)实现分布式快照。

与之相关的,容易混淆的是 **savepoint。**Savepoint 你可以把它当做在某个时间点程序状态全局镜像,以后程序在进行升级,或者修改并发度等情况,还能从保存的状态位继续启动恢复。

checkpoint savepoint
概念 自动容错机制 程序全局状态镜像
目的 程序自动容错,快速恢复。 程序修改后继续从状态恢复,程序升级等。
用户交互 Flink 系统行为。 用户触发。
状态文件保留策略 默认程序删除,可以设置 CheckpointConfig 中的参数进行保留。 会一直保存,除非用户删除。

(三)Window

流计算一种典型场景是计算一段时间内的统计值,如最近 5min、最近 1h 的点击量。

想完成这个操作,就需要划定一个时间段,也就是开窗,基于这个时间窗口上的数据做计算。

根据窗口数据划分的不同,目前 Flink 支持如下 3 种:

  • 滚动窗口,窗口数据有固定的大小,窗口中的数据不会叠加;
  • 滑动窗口,窗口数据有固定的大小,并且有生成间隔;
  • 会话窗口,窗口数据没有固定的大小,根据用户传入的参数进行划分,窗口数据无叠加。

(四)Time

要进行窗口计算,首先要明确基于的是什么时间。

Flink 中一共提供了三类时间:

  • 事件时间(Event Time),即事件实际发生的时间,这个时间一般由数据生产方自身携带;
  • 摄入时间(Ingestion Time),事件进入流处理框架的时间;
  • 处理时间(Processing Time),事件被处理的时间。

Flink还实现了 Watermark 的机制,能够支持基于事件时间的处理,能够容忍迟到/乱序的数据。这个我们后面篇章再展开讲。

二、小结

本篇对 Flink 四大基石进行了概括性的讲解,让大家对 State、Checkpoint、Window、Time 的概念有了初步的认知,后面的篇章将会对四个概念进行细致的讲解和梳理,并会深入到源码中探究其实现原理和使用方式。


参考文章:
Flink 高级特性(一)-Flink四大基石
Flink:四大基石Time,Window,Checkpoint,State_flink的四大基石-CSDN博客
FLINK 四大基石_flink四大基石-CSDN博客

相关推荐
Blossom i2 小时前
Python+spark2.0+Hadoop机器学习与大数据实战第十一章:Python Spark的集成开发环境
大数据·hadoop·spark
我要用代码向我喜欢的女孩表白21 小时前
hdfs获取所有路径大小的脚本
大数据·hadoop·hdfs
渣渣盟1 天前
当反压问题解决后,如何进一步优化 Flink 作业的 Checkpoint 性能,让大状态作业也能稳定运行?
大数据·flink
渣渣盟1 天前
当 Redis 写入不再是瓶颈后,Flink 任务的反压可能来自哪里?如何系统性地定位和解决 Flink 反压问题?
数据库·redis·flink
渣渣盟1 天前
当 Redis 集群发生主从切换(Failover)时,Flink 任务会崩溃吗?如何利用 Sentinel 实现高可用?
redis·flink·sentinel
渣渣盟1 天前
当 Checkpoint 稳定运行后,如何进一步优化 Flink 作业的启动和恢复速度,让大状态作业的扩缩容从“小时级”降到“分钟级”?
大数据·flink
ZCBUS实时计算2 天前
金融证券实时数仓建设实践:轻量化实时计算平台落地,实现交易数据端到端秒级处理
大数据·数据库·数据仓库·金融·flink·dba·etl
fastjson_2 天前
Hadoop之Yarn
大数据·hadoop·npm
fastjson_2 天前
Hive的介绍和使用
数据仓库·hive·hadoop
让头发掉下来3 天前
Flink SQL 中两个频繁变化 Topic 的 Join 行为分析
大数据·数据库·sql·flink