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

相关推荐
shuxianshrng1 小时前
大气网格化精细化监管监测系统
大数据·服务器·windows·经验分享
aqymnkstkw1 小时前
2024年【电气试验】考试题库及电气试验模拟试题
大数据·c语言·人工智能·嵌入式硬件·安全
环能jvav大师2 小时前
基于R语言的统计分析基础:使用dplyr包进行数据操作
大数据·开发语言·数据分析·r语言
不睡懒觉的橙4 小时前
【医疗大数据】医疗保健领域的大数据管理:采用挑战和影响
大数据·人工智能·信息可视化·人机交互·健康医疗
数分大拿的Statham5 小时前
PostgreSQL中的regexp_split_to_table函数详解,拆分字段为多行
大数据·数据库·postgresql·数据分析·数据清洗
码爸5 小时前
flink 批量写clickhouse
java·clickhouse·flink
howard20056 小时前
大数据时代:历史、发展与未来
大数据
翔云API6 小时前
人证合一接口:智能化身份认证的最佳选择
大数据·开发语言·node.js·ocr·php
知识分享小能手6 小时前
mysql学习教程,从入门到精通,SQL 删除数据(DELETE 语句)(19)
大数据·开发语言·数据库·sql·学习·mysql·数据开发
学习使我快乐——玉祥7 小时前
es查询语法
大数据·elasticsearch·搜索引擎