1. Flink简述

Flink与Spark Streaming对比

数据模型和处理模型

​ Spark 的数据模型是 RDD,很多时候 RDD 可以实现为分布式共享内存或者完全虚拟化(即有的中间结果 RDD 当下游处理完全在本地时可以直接优化省略掉)。这样可以省掉很多不必要的 I/O。

​ Spark用 RDD上的变换(算子)来描述数据处理。每个算子生成一个新的 RDD。所有的算子组成一个DAG, Spark 比较简单地把边分为宽依赖和窄依赖,上下游数据不需要 shuffle 的即为窄依赖,可以把上下游的算子放在一个 stage 里在本地连续处理,这时上游的结果 RDD 可以省略。

​ Flink 的基本数据模型是数据流,即 Event 序列。流可以是无边界的的无限流,即一般意义上的流处理。也可以是有边界的有限流,这样就是批处理。

​ Flink 用数据流上的变换(算子)来描述数据处理。每个算子生成一个新的数据流。在算子、DAG 和上下游链接这些方面,和 Spark 大致等价。Flink 的节点 (vertex)大致相当于 Spark 的阶段(stage)。

​ 在 DAG 的执行上,Spark 和 Flink 有一个显著的区别。在 Flink 的流执行模式中,一个事件在一个节点处理完后的输出就可以发到下一个节点立即处理。这样的执行引擎不会引入额外的延迟。与之对应的,所有的节点是需要同时运行的。而 Spark 的 micro batch 和一般的 batch 执行一样,处理完上游的 stage 得到输出后才开始下游的 stage。

​ 最开始的 Spark Streaming 对流计算想得过于简单,对复杂一点的计算用起来会有不少问题。从 Spark 2.0 开始引入的 Structured Streaming 重新整理了流计算的语义,支持按事件时间处理和端到端的一致性。

​ 在Flink的流执行模式中,为了提高效率也可以把多个事件放在一起传输或者计算。但这完全是执行时的优化,可以在每个算子独立决定,也不用像 RDD 等批处理模型中一样和数据集边界绑定,可以做更加灵活的优化同时可以兼顾低延迟需求。

​ Flink 使用异步的 checkpoint 机制来达到任务状态的可恢复性,以保证处理的一致性,所以在处理的主流程上可以做到数据源和输出之间数据完全不用落盘,达到更高的性能和更低的延迟。(Spark 是通过 RDD 血缘)

状态处理

(待写)

参考: https://developer.aliyun.com/article/700509?spm=a2c6h.14164896.0.0.49c5182dlu7mrz

相关推荐
雪碧聊技术5 小时前
Badge 应用场景与落地实践指南
大数据·人工智能
望江东浪5 小时前
我的 Claude Code 效率工具全套配置分享
大数据·elasticsearch·搜索引擎
chaoyuanl6 小时前
现有游乐设施 XR 数字化升级改造方案
大数据·科技·3d·xr·娱乐
LL334455677 小时前
创业自动化平台怎么选
大数据·人工智能
珠海西格电力8 小时前
云边端协同架构:零碳园区管理系统的技术底座
大数据·运维·人工智能·算法·架构·能源
cc5725026538 小时前
大数据专业是不是热门专业
大数据
汇策研习社8 小时前
StdDev标准差指标深度解析:量化市场波动的核心工具
大数据·经验分享·金融·区块链·fastbull
大大大大晴天9 小时前
Hudi技术内幕: Concurrency Control原理与实践
大数据
阿里云大数据AI技术10 小时前
DataWorks Data Agent 实战课堂(一):解锁你的7×24h全能“数据搭子”DataWorks AI助理!
大数据·人工智能·agent
SelectDB10 小时前
美团数十 PB 规模 Apache Doris 实践:从统一 OLAP 到 AI-Native 数据基座
大数据·数据库·性能优化