【Flink】Flink和Spark Streaming对比

Flink是实时处理引擎,是基于事件驱动的。

Spark Streaming是微批次处理模型。

 

FlinkSpark Streaming
架构模型Flink 运行时架构中,最重要的就是两大组件:作业管理器(JobManger)和任务管理器 (TaskManager)采用了标准 master-slave 的结构,核心组件包括:Driver、Executor、Master 、 Worker、ApplicationMaster
任务调度逻辑流图(StreamGraph)→ 作业图(JobGraph)→ 执行图(ExecutionGraph)→ 物理图(Physical Graph)连续不断的生成微小的数据批次后,Spark Streaming会构建有向无环图 DAG,依次创建 DStreamGraph、JobGenerator、JobScheduler
时间语义处理时间、事件时间、摄入时间只支持处理时间
容错机制

检查点是 Flink 容错机制的核心。

输入端:数据源可重置读取数据偏移量,Source 算子将偏移量作为状态保存进检查点,就可以保证数据不丢。

输入端:通过幂等写入或事务写入(预写日志和两阶段提交)保证exactly-once 一致性

设置 checkpoint,发生故障并重启后,可以从上次 checkpoint 处恢复,只能使得数据不丢失,可能会产生重复处理现象,无法做到精确一次

FlinkSpark Streaming是两个常见的流式计算框架,它们都可以用于实时数据处理和流式计算,但是它们各有优缺点。 1. 数据处理模型 FlinkSpark Streaming的数据处理模型有所不同。Flink使用基于事件的数据处理模型,它将数据视为事件流,支持事件时间和处理时间两种模型,可以对无限数据流进行低延迟的数据处理。Spark Streaming使用离散流数据处理模型,它将数据流切分为一系列的离散批次进行处理,处理延迟通常在数秒到数分钟之间。 2. 处理延迟 Flink的处理延迟通常在毫秒级别,可以实现低延迟的实时数据处理;而Spark Streaming的处理延迟通常在数秒到数分钟之间,适合于对延迟不敏感的数据处理。 3. 内存管理 FlinkSpark Streaming在内存管理上有所不同。Flink使用堆外内存管理技术,可以在内存中存储大量的数据并保证高效的内存管理和垃圾回收;而Spark Streaming则使用Spark的内存管理技术,将数据存储在内存和磁盘中进行管理。 4. 扩展性 FlinkSpark Streaming在扩展性上也有所不同。Flink支持更好的水平扩展,可以通过增加节点来实现更高的吞吐量和更低的延迟;而Spark Streaming则受限于Spark的扩展性,需要对批处理作业和流处理作业进行不同的配置和管理。 5. 生态系统 FlinkSpark Streaming的生态系统也略有不同。Flink生态系统相对较小,但是提供了完整的流处理框架和批处理框架;而Spark Streaming生态系统相对较大,可以与其他Spark组件进行集成,如Spark SQL、Spark MLlib和Spark GraphX等。 需要根据具体的业务需求来选择适合的流式计算框架。FlinkSpark Streaming各有优缺点,可以根据需求进行权衡和选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值