Flink:批流一体

Flink的批流一体架构设计允许它同时处理流数据和批数据,这种设计使得Flink在处理不同类型的数据时能够提供一致的API和优化。以下是Flink批流一体的关键点:

1. **统一的SDK层**:Flink提供了两类SDK,关系型SDK(SQL/Table)和物理型SDK(DataStream),它们都支持流批一体的处理方式。这意味着开发者可以使用相同的逻辑来处理流数据和批数据,无论是使用SQL还是DataStream API。

2. **执行引擎层**:Flink的执行引擎使用统一的DAG(有向无环图)来描述数据处理流程。无论是流任务还是批任务,业务逻辑在执行前都会被转化为DAG图。执行引擎通过Unified DAG Scheduler将逻辑DAG转化为分布式环境下执行的任务。

3. **状态存储**:状态存储层负责存储算子的状态和执行状态。Flink提供了不同的状态后端,如RocksdbStatebackend、MemoryStatebackend和BatchStateBackend,以适应流作业和批作业的状态存储需求。

4. **流批一体的DataStream**:Flink的DataStream API允许开发者编写一次代码,同时在流和批场景下使用。这对于减少代码重复和提高开发效率非常有帮助。

5. **流批一体的DAG Scheduler**:Flink通过统一的Pipeline Region机制,使得流作业和批作业可以统一按照Pipeline Region的粒度进行调度。这种机制可以提高资源利用率并改善系统的易用性。

6. **流批一体的Shuffle架构**:Flink提供了一套统一的Shuffle架构,可以满足不同Shuffle在策略上的定制化需求,同时避免在共性需求上的重复开发。

7. **流批一体的容错策略**:Flink通过统一的容错策略,既满足批场景下的容错需求,也提升了流场景下的容错效果。

8. **执行模式**:Flink支持流(STREAMING)和批(BATCH)两种执行模式。在流模式下,Flink处理无边界的连续数据流,而在批模式下,Flink处理有边界的数据集。Flink允许用户根据作业的特点选择最合适的执行模式。

9. **状态后端/状态**:在流模式下,Flink使用StateBackend来控制状态的存储和检查点的工作方式。在批模式下,配置的状态后端被忽略,取而代之的是,keyed操作的输入按键分组,然后依次处理一个键的所有记录。

10. **处理顺序**:在流模式下,用户自定义函数不应该对传入记录的顺序做任何假设。在批模式下,Flink通过一些操作确保顺序。

11. **故障恢复**:在流模式下,Flink使用checkpoints进行故障恢复。在批模式下,Flink会尝试回溯到之前的中间结果仍可获取的处理阶段,只有失败的任务可能需要重新启动。

Flink的批流一体架构提供了强大的灵活性和一致性,使得开发者能够轻松地处理各种数据流和批处理任务。通过这种方式,Flink能够满足不同场景下的需求,无论是实时数据处理还是离线批量处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大连赵哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值