Flink入门学习

Flink 的架构

  • JobManager:负责调度任务、协调检查点和故障恢复。
  • TaskManager:负责实际执行任务,每个 TaskManager 包含多个 Slot(资源单元)。
  •  Slot:TaskManager 中的资源单元,一个 Slot 可以运行一个 Task

1. 流处理与批处理

流处理(Stream Processing)是Flink的核心,允许处理无限数据流,支持事件时间,窗口操作等。

批处理(Batch Processing)可以看作是流处理的一个特例,其中数据集是有界的。Flink可以用同一个API处理流和批任务。

2. 窗口操作(Windowing)

时间窗口:Flink支持多种窗口操作,如滑动窗口(Sliding Windows)、滚动窗口(Tumbling Windows)、会话窗口(Session Windows)。

窗口函数:窗口操作可以用reduce、aggregate、process等函数来处理窗口内的数据。

3. 状态管理和Checkpoints

状态管理:Flink允许你维护和管理操作状态,这对实现有状态计算非常重要。

    ValueState、ListState、MapState等状态接口用于保存状态。

Checkpoints:用于容错,通过定期保存状态以便在故障后恢复。配置检查点在flink-conf.yaml中或在代码中动态设置。

4. 事件时间与处理时间

事件时间(Event Time)处理基于事件发生的时间,Flink支持水印(Watermarks)机制来处理乱序事件。

处理时间(Processing Time)基于操作符处理事件的时间。

5. Exactly-once语义

Flink提供精确一次处理的语义,这意味着每个事件会被处理且只处理一次,即使在故障后恢复。

6. 侧输出(Side Outputs)

允许将数据流分流到多个输出中,这对于处理异常数据或记录错误事件特别有用。

7. 广播状态(Broadcast State)

用于将状态广播到所有并行实例,这种方式在一些需要全局状态的场景中非常有用。

8. 连接器(Connectors)

Flink提供了丰富的连接器来与外部系统集成,如Kafka、Kinesis、HDFS等。你可以用这些连接器来读写数据。

9. 自定义算子(Operators)

虽然Flink提供了丰富的内置算子,但你也可以定义自己的算子来实现复杂的业务逻辑。

10. Table API & SQL

除了DataStream API,Flink还提供Table API和SQL查询接口,可以用更简洁的方式处理数据。

11. CEP(复杂事件处理)

Flink的CEP库允许你定义模式来检测事件流中的复杂事件序列。

12. Savepoints

与检查点类似,但手动触发,用于有计划的停机维护或扩展作业时。

上述内容如有雷同,纯属巧合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值