大规模数据处理实战
蔡元楠
硅谷资深工程师
41608 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 46 讲
大规模数据处理实战
15
15
1.0x
00:00/00:00
登录|注册

21 | 深入对比Spark与Flink:帮你系统设计两开花

低延迟的实时数据处理
实时数据流处理
历史数据的交互式查询
大数据分析
较新的开源社区
更活跃的社区
有环数据流
无环图表示
延迟性毫秒级
基于每个事件处理
延迟性秒级
基于微批量处理
Spark的不足及改进
Flink
Spark
Flink
Spark
Flink
Spark
Table API
SparkSQL
Flink
Spark
并行流
使用DataSet/DataFrame API
提升熟悉关系型数据库的开发者的工作效率
解决RDD底层不方便使用的问题
基于RDD实现的新API
思考题
场景选择
生态系统
迭代计算
SQL功能
流处理角度
Table API
DataStream API
DataSet API
核心处理引擎
部署层
存储层
Streaming Dataflow
转换操作
Stream
Structured Streaming
Spark Streaming
DataFrame/DataSet API
RDD
支持流处理
开发者无需用map和reduce实现复杂逻辑
提供High-level API
用内存运算提高性能
小结
对比
架构
核心模型
流处理
数据抽象
优点
Flink
Spark
深入对比Spark与Flink

该思维导图由 AI 生成,仅供参考

你好,我是蔡元楠。
今天我要与你分享的主题是“深入对比 Spark 与 Flink”。
相信通过这一模块前 9 讲的学习,你对 Spark 已经有了基本的认识。现在,我们先来回顾整个模块,理清一下思路。
首先,从 MapReduce 框架存在的问题入手,我们知道了 Spark 的主要优点,比如用内存运算来提高性能;提供很多 High-level API;开发者无需用 map 和 reduce 两个操作实现复杂逻辑;支持流处理等等。
接下来,我们学习了 Spark 的数据抽象——RDD。RDD 是整个 Spark 的核心概念,所有的新 API 在底层都是基于 RDD 实现的。但是 RDD 是否就是完美无缺的呢?显然不是,它还是很底层,不方便开发者使用,而且用 RDD API 写的应用程序需要大量的人工调优来提高性能。
Spark SQL 提供的 DataFrame/DataSet API 就解决了这个问题,它提供类似 SQL 的查询接口,把数据看成关系型数据库的表,提升了熟悉关系型数据库的开发者的工作效率。这部分内容都是专注于数据的批处理,那么我们很自然地就过渡到下一个问题:Spark 是怎样支持流处理的呢?
那就讲到了 Spark Streaming 和新的 Structured Streaming,这是 Spark 的流处理组件,其中 Structured Streaming 也可以使用 DataSet/DataFrame API,这就实现了 Spark 批流处理的统一。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Spark与Flink是两大流行的数据处理框架,本文通过对比分析展现了它们在技术特点上的差异。首先,文章指出了Spark在流处理实时性方面的不足,引出了Flink作为流处理框架的优势所在。Flink基于操作符的连续流模型,能够实现微秒级的延迟,相比之下具有更低的流处理延迟性。此外,文章还对Flink的架构进行了详细解析,包括存储层、部署层、核心处理引擎以及高级API和库。特别地,文章提到了Flink提供的两个核心API:DataSet API和DataStream API,以及Table API的关系型API,展示了Flink在批处理和流处理上的灵活性和高效性。总的来说,本文通过对比分析,全面展现了Spark与Flink在技术特点上的差异,为读者提供了全面的了解和选择参考。文章还对两个框架的异同进行了详细对比,指出了它们在流处理、SQL功能、迭代计算和生态系统等方面的差异。最后,根据不同场景提出了选择Spark或Flink的建议,为读者提供了实际应用的指导。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《大规模数据处理实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(8)

  • 最新
  • 精选
  • 西南偏北
    老师能详细解释一下这句话吗? “由于相同的原因,Spark 只支持基于时间的窗口操作(处理时间或者事件时间),而 Flink 支持的窗口操作则非常灵活,不仅支持时间窗口,还支持基于数据本身的窗口,开发者可以自由定义想要的窗口操作。”

    作者回复: 感谢提问。窗口是流数据处理中最重要的概念之一,窗口定义了如何把无边界数据划分为一个个有限的数据集。基于事件时间的窗口只是窗口的一种,它是按照事件时间的先后顺序来划分数据,比如说1:00-1:10是一个集合,1:10-1:20又是一个集合。 但是窗口并不都是基于时间的。比如说我们可以按数据的个数来划分,每接受到10个数据就是一个集合,这就是Count-based Window(基于数量的窗口)。Flink对于窗口的支持远比Spark要好,这是它相比Spark最大的优点之一。它不仅支持基于时间的窗口(处理时间、事件时间和摄入时间),还支持基于数据数量的窗口。 此外,在窗口的形式上,Flink支持滚动窗口(Tumbling Window)、滑动窗口(Sliding Window)、全局窗口(Global Window)和会话窗口(Session Windows)。

    2019-06-05
    2
    27
  • LJK
    老师好,请问大多数机器学习算法是有环数据这是啥意思啊?是说每个优化迭代之间是环的么?

    作者回复: 是指做的预测可以重新作为下一个迭代的训练数据

    2019-08-16
    8
  • cricket1981
    spark根据算子依赖类型将计算过程划分成多个stage,只有上一个stage全部完成才能进入下一个stage,而flink无此限制。
    2019-06-05
    1
    15
  • 淹死的大虾
    Spark多数据源的join实时处理不如Flink;Spark处理多数据源时,如果有数据源时间间隔超过watermark就没法inner-join了
    2019-06-26
    4
  • Geek_88b596
    我们知道flink的特点是支持在计算流做到exactly once,想问下老师spark支持这样特性吗?不支持的话是不是代表特殊场景下的结果是不准确的也就是说不确定的
    2019-06-27
    2
  • se7en
    Flink有环数据流和用流思想做到批的思想,这两个地方我没懂,老师,你能详细说说么
    2019-06-11
    2
  • 江中芦苇
    本文例子加了时间窗口,不是对一段时间的数据进行计算吗?应该算批处理的例子吧
    2019-07-29
    1
  • 太阳与冰
    老师,能解释一下从最底层算子的粒度,两边算子的差异么?以及为什么spark的算子只能处理微批,而Flink的算子能够处理基于事件的一条条数据呢?
    2022-03-16
收起评论
显示
设置
留言
8
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部