山西做网站建设的平台,电子商务系统规划方案,网站建设推广途径,福州建网站哪家好面试题来源#xff1a;
《大数据面试题 V4.0》
大数据面试题V3.0#xff0c;523道题#xff0c;679页#xff0c;46w字
可回答#xff1a;1#xff09;Spark Streaming和Flink的区别
问过的一些公司#xff1a;杰创智能科技(2022.11)#xff0c;阿里蚂蚁(2022.11)
《大数据面试题 V4.0》
大数据面试题V3.0523道题679页46w字
可回答1Spark 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连续不断的生成微小的数据批次构建有向无环图DAGSpark Streaming会依次创DStreamGraph、JobGenerator、JobScheduler。
Flink 根据用户提交的代码生成 StreamGraph经过优化生成 JobGraph然后提交给JobManager 进行处理 JobManager 会根据 JobGraph 生成 ExecutionGraphExecutionGraph 是 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在处理延迟和状态管理方面可能稍逊一些。