大数据面试题:Spark和Flink的区别

面试题来源:

《大数据面试题 V4.0》

大数据面试题V3.0,523道题,679页,46w字

可回答:1)Spark Streaming和Flink的区别

问过的一些公司:杰创智能科技(2022.11),阿里蚂蚁(2022.11),阿里云(2022.10)(2019.03),携程(2022.10),银联(2022.10),顺丰(2022.09)(2022.05),贝壳(2022.09),美团(2022.09),字节(2022.08)x2(2022.05)(2022.04)(2021.10)(2021.08),兴金数金(2022.08),星环科技(2022.07),西安华为实习(2022.05),小红书(2022.04),欢聚(2021.09),蔚来(2021.09),百度提前批(2021.08),网易严选(2021.08)(2019.08),字节社招(2021.05),字节实习(2021.03),中信银行信用卡中心(2020.11),招银网络(2020.09),转转(2020.09),美团优选社招(2020.09)x2,触宝(2020.09),京东(2020.08),网易(2020.08)(2018.11),竞技世界(2020.08),趋势科技(2020.08),美团实习(2020.04),华为实习(2020.04),美团(2020.04),快手(2020.03),爱奇艺(2020.03),蘑菇街实习(2020.03),嘉云数据(2020.01),360社招(2020.01),阿里(2018.11)

参考答案:

1、编程模型方面

Spark基于批处理模型,将连续的数据流划分成一系列的微批处理(batch),并在每个微批处理中执行Spark RDD操作。因此,它采用了与Spark相同的编程模型,允许开发人员使用Scala、Java或Python进行编程。

Flink则基于数据流模型,数据以流的形式输入和输出,支持连续数据处理和有限数据处理。开发人员可以使用Flink提供的DataStream API编写处理逻辑,这些API提供了类似于Spark RDD的转换和操作。

2、数据处理模式方面

Spark将数据流划分成微批处理,并在每个微批处理中执行一组操作,因此它是一个基于"微批"(micro-batch)的引擎。这意味着在处理每个微批处理时,Spark Streaming会等待所有数据到达批处理,因此会存在一定的延迟,延迟是秒级。

Flink则是一个基于"事件时间"(event time)的引擎。它支持流式处理和批处理,可以根据事件时间对数据进行有序处理,避免了由于乱序数据引起的问题。因此,Flink处理数据时可以保证更低的延迟和更高的准确性,延迟能够达到毫秒级。

3、架构模型方面

Spark Streaming在运行时的主要角色包括:Master、Worker、Driver、Executor, Flink 在运行时主要包:Jobmanager、Taskmanager 和 Slot。

4、任务调度

Spark Streaming连续不断的生成微小的数据批次,构建有向无环图DAG,Spark Streaming会依次创DStreamGraph、JobGenerator、JobScheduler。

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

5、时间机制

Spark Streaming支持的时间机制有限,只支持处理时间。

Flink支持了流处理程序在时间上的三个定义:处理时间、事件时间、注入时间。同时也支持watermark机制来处理滞后数据。

6、容错机制

对于Spark Streaming任务,可以设置Checkpoint,然后假如发生故障并重启,可以从上次Checkpoint之处恢复,但是这个行为只能使得数据不丢失,可能会重复处理,不能做到恰好一次处理语义。利用Spark Streaming的direct方式与Kafka可以保证数据输入源的,处理过程,输出过程符合Exactly Once。

Flink则使用两阶段提交协议来保证Exactly Once。

7、数据方面

在Flink的世界观中,一切都是由流组成的,离线数据是有界限的流,实时数据是一个没有界限的流,这就是所谓的有界流和无界流。流处理的特点是无界、实时, 无需针对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作,一般用于实时统计。

在Spark的世界观中,一切都是由批次组成的,离线数据是一个大批次,而实时数据是由一个一个无限的小批次组成的。批处理的特点是有界、持久、大量,非常适合需要访问全套记录才能完成的计算工作,一般用于离线统计。

8、应用场景方面

Flink的延迟是毫秒级别,而Spark Streaming的延迟是秒级延迟。

Flink更适合实时流数据处理和事件驱动应用。它是专门设计用于流式数据处理的框架,可以对实时数据流进行高效的计算和处理。

Spark最初是为批处理而设计的,它非常适合对大规模的数据集进行批处理分析,还通过其SQL查询功能提供快速的交互式查询。

Spark Structured Streaming支持实时流处理,但相对于Flink,在处理延迟和状态管理方面可能稍逊一些。

相关推荐
武子康4 小时前
大数据-241 离线数仓 - 实战:电商核心交易数据模型与 MySQL 源表设计(订单/商品/品类/店铺/支付)
大数据·后端·mysql
IvanCodes4 小时前
一、消息队列理论基础与Kafka架构价值解析
大数据·后端·kafka
武子康1 天前
大数据-240 离线数仓 - 广告业务 Hive ADS 实战:DataX 将 HDFS 分区表导出到 MySQL
大数据·后端·apache hive
字节跳动数据平台2 天前
5000 字技术向拆解 | 火山引擎多模态数据湖如何释放模思智能的算法生产力
大数据
武子康2 天前
大数据-239 离线数仓 - 广告业务实战:Flume 导入日志到 HDFS,并完成 Hive ODS/DWD 分层加载
大数据·后端·apache hive
字节跳动数据平台3 天前
代码量减少 70%、GPU 利用率达 95%:火山引擎多模态数据湖如何释放模思智能的算法生产力
大数据
得物技术3 天前
深入剖析Spark UI界面:参数与界面详解|得物技术
大数据·后端·spark
大大大大晴天3 天前
Flink生产问题排障-HBase NotServingRegionException
flink·hbase
武子康3 天前
大数据-238 离线数仓 - 广告业务 Hive分析实战:ADS 点击率、购买率与 Top100 排名避坑
大数据·后端·apache hive
武子康4 天前
大数据-237 离线数仓 - Hive 广告业务实战:ODS→DWD 事件解析、广告明细与转化分析落地
大数据·后端·apache hive