Spark与Flink的区别

分析&回答

(1)设计理念

  1、Spark的技术理念是使用微批来模拟流的计算,基于Micro-batch,数据流以时间为单位被切分为一个个批次,通过分布式数据集RDD进行批量处理,是一种伪实时。

  2、Flink是基于事件驱动的,是面向流的处理框架, Flink基于每个事件一行一行地流式处理,是真正的流式计算. 另外他也可以基于流来模拟批进行计算实现批处理。

(2)架构方面

  1、Spark在运行时的主要角色包括:Master、Worker、Driver、Executor。

  2、Flink 在运行时主要包含:Jobmanager、Taskmanager和Slot。

(3)任务调度

  1、Spark Streaming 连续不断的生成微小的数据批次,构建有向无环图DAG,根据DAG中的action操作形成job,每个job有根据窄宽依赖生成多个stage。

  2、Flink 根据用户提交的代码生成 StreamGraph,经过优化生成 JobGraph,然后提交给 JobManager进行处理,JobManager 会根据 JobGraph 生成 ExecutionGraph,ExecutionGraph 是 Flink 调度最核心的数据结构,JobManager 根据 ExecutionGraph 对 Job 进行调度。

(4)时间机制

  1、Spark Streaming 支持的时间机制有限,只支持处理时间。使用processing time模拟event time必然会有误差, 如果产生数据堆积的话,误差则更明显。

  2、flink支持三种时间机制:事件时间,注入时间,处理时间,同时支持 watermark 机制处理迟到的数据,说明Flink在处理乱序大实时数据的时候,更有优势。

(5)容错机制

  1、SparkStreaming的容错机制是基于RDD的容错机制,会将经常用的RDD或者对宽依赖加Checkpoint。利用SparkStreaming的direct方式与Kafka可以保证数据输入源的,处理过程,输出过程符合exactly once。

  2、Flink 则使用两阶段提交协议来保证exactly once。

(6)吞吐量与延迟

  1、spark是基于微批的,而且流水线优化做的很好,所以说他的吞入量是最大的,但是付出了延迟的代价,它的延迟是秒级;

  2、而Flink是基于事件的,消息逐条处理,而且他的容错机制很轻量级,所以他能在兼顾高吞吐量的同时又有很低的延迟,它的延迟能够达到毫秒级;

喵呜面试助手:一站式解决面试问题,你可以搜索微信小程序 喵呜面试助手 或关注 喵呜刷题 -> 面试助手 免费刷题。如有好的面试知识或技巧期待您的共享!

相关推荐
IT小白杨1 分钟前
Facebook广告账户环境隔离实战:从指纹自洽到代理固定的完整工程方案
大数据·经验分享·架构·facebook·指纹浏览器
鹏哥带你干乡墅29 分钟前
优选乡墅赋能培训平台如何帮助提升乡村建设?
大数据·人工智能·python
AI服务老曹35 分钟前
模型版本管理完整流程:景区文旅项目从0到1怎么做
大数据·人工智能
姜穆澜1 小时前
OneID 从 0 到 1 完整生产案例(三)
大数据·wpf
牛马之星1 小时前
气体涡轮流量计哪家好?天然气流量计源头厂家推荐与选型指南
大数据
jinggongszh2 小时前
欧盟电池护照背景下,电池制造企业如何构建MES数字化追溯体系
大数据·制造·mes系统·电池行业·生产制造执行系统
Allen_LVyingbo2 小时前
医疗AI基础2026-构建可靠智能体的编程路径(上)
大数据·数据库·人工智能·python·自动化
熊野君3 小时前
第 7 章 AI时代产品经理新增能力
大数据·人工智能·经验分享·职场和发展·产品经理
ha_lydms3 小时前
HDFS 简介
大数据·hadoop·hdfs·yarn·调度·aliyun·计算
oort1233 小时前
OortCloud Token Plan
大数据·人工智能·开源