当前位置: 首页 > news >正文

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

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

http://www.lryc.cn/news/153866.html

相关文章:

  • 未来智造:珠三角引领人工智能产业集群
  • 【Unity db】sqlite
  • Linux 指令心法(四)`touch` 创建一个新的空文件
  • 分类算法系列②:KNN算法
  • 12. 微积分 - 梯度积分
  • Large Language Models and Knowledge Graphs: Opportunities and Challenges
  • Python操作Excel教程(图文教程,超详细)Python xlwings模块详解,
  • Java入门
  • 深度解析BERT:从理论到Pytorch实战
  • 小程序数据导出文件
  • hadoop1.2.1伪分布式搭建
  • 【校招VIP】前端JavaScript语言之跨域
  • mysql调优小计
  • AI:04-基于机器学习的蘑菇分类
  • 算法——排序
  • leetCode动态规划“不同路径II”
  • 100天精通Python(可视化篇)——第99天:Pyecharts绘制多种炫酷K线图参数说明+代码实战
  • 哈希表与有序表
  • 什么时候使用RPA?如何使用RPA?需要什么样的硬件支持?需要安装哪些软件?
  • R语言入门——line和lines的区别
  • C语言:static关键字的使用
  • AUTOSAR知识点 之 ECUM (三):ECUM的ISOLAR-AB配置及代码解析
  • 2023年MySQL-8.0.34保姆级安装教程
  • ElasticSearch入门
  • RocketMQ的Broker
  • 使用Puppeteer进行游戏数据可视化
  • 【Flask】from flask_sqlalchemy import SQLAlchemy报错
  • 索引简单概述(SQL)
  • union all 和 union 的区别,mysql union全连接查询
  • UDP和TCP的区别