➤ 笔记 | Flink_1.17(1)

前言

参考内容:

结构:

  • 概述
  • 快速上手与部署
  • 运行时架构
  • DataStreamAPI
  • 窗口
  • 水位线
  • 处理函数
  • 状态管理
  • 容错机制
  • FlinkSQL

扫盲

  • Flink 是什么:一个框架和分布式处理引擎,对无界和有界数据流进行有状态计算;

  • 核心目标:数据流上的有状态计算。

  • 特点:

  1. 高吞吐量、低延迟;
  2. 结果准确性,提供事件时间和处理时间语义,保证一致结果;
  3. 精确一次(exactly-one)的状态一致性保证;
  4. 可以和 Kafka、Hive、JDBC、HDFS、Redis 等结合使用;
  5. 高可用。
  • Flink 分层 API:
  1. 最高层:SQL;
  2. 声明式领域专用语言:Table API,表对象(用得不多,一般都用 SQL 更方便些);
  3. 核心 APIs:DataStream/DataSet,一个负责流计算,一个负责批处理,但在高版本 Flink 中都用 DataStream 了;
  4. 底层 APIs:处理函数,有状态流处理。
  • 名词:
  1. 流处理?批处理?
    • 流处理:流处理相反是为了解决实时计算或是近实时计算问题;
    • 批处理:批处理一般是解决离线计算数据量大,计算时间慢的问题,先拿到本地。
    • image-20231027154949353
  2. 无界流?有界流?
    • 无界流:只定义流的开始,没有定义流的结束,一直产生数据,数据需要被立即处理
    • 有界流:流有开始也有结束,可以在获取到所有数据后再统一处理,另外,其顺序可以被排序,所以不需要有序获取,有界流处理通常称为“批处理”。
  3. 无状态?有状态?
    • 有状态:将流处理需要的额外数据记录下来,称为“状态,对数据进行处理后,更新状态。可以是中间计算结果,也可以是数据本身。Flink 本身就可以存储这些状态到内存,然后定期持久化(备份)。
  4. Flink vs SparkStreaming?
    • Spark:批处理,“微批次”处理(攒几秒的数据,然后再处理这几秒内的数据),基于 RDD 数据模型;
    • Flink:流处理,基于数据流数据模型,以及事件序列,是标准的流执行模式。