大规模数据处理实战
蔡元楠
Google Brain资深工程师
立即订阅
8443 人已学习
课程目录
已完结 46 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 从这里开始,带你走上硅谷一线系统架构师之路
免费
模块一 | 直通硅谷大规模数据处理技术 (3讲)
01 | 为什么MapReduce会被硅谷一线公司淘汰?
02 | MapReduce后谁主沉浮:怎样设计下一代数据处理技术?
03 | 大规模数据处理初体验:怎样实现大型电商热销榜?
模块二 | 实战学习大规模数据处理基本功 (8讲)
04 | 分布式系统(上):学会用服务等级协议SLA来评估你的系统
05 | 分布式系统(下):架构师不得不知的三大指标
06 | 如何区分批处理还是流处理?
07 | Workflow设计模式:让你在大规模数据世界中君临天下
08 | 发布/订阅模式:流处理架构中的瑞士军刀
09 | CAP定理:三选二,架构师必须学会的取舍
10 | Lambda架构:Twitter亿级实时数据分析架构背后的倚天剑
11 | Kappa架构:利用Kafka锻造的屠龙刀
模块三 | 抽丝剥茧剖析Apache Spark设计精髓 (10讲)
12 | 我们为什么需要Spark?
13 | 弹性分布式数据集:Spark大厦的地基(上)
14 | 弹性分布式数据集:Spark大厦的地基(下)
15 | Spark SQL:Spark数据查询的利器
16 | Spark Streaming:Spark的实时流计算API
17 | Structured Streaming:如何用DataFrame API进行实时数据分析?
18 | Word Count:从零开始运行你的第一个Spark应用
19 | 综合案例实战:处理加州房屋信息,构建线性回归模型
20 | 流处理案例实战:分析纽约市出租车载客信息
21 | 深入对比Spark与Flink:帮你系统设计两开花
模块四 | Apache Beam为何能一统江湖 (8讲)
22 | Apache Beam的前世今生
23 | 站在Google的肩膀上学习Beam编程模型
24 | PCollection:为什么Beam要如此抽象封装数据?
25 | Transform:Beam数据转换操作的抽象方法
26 | Pipeline:Beam如何抽象多步骤的数据流水线?
27 | Pipeline I/O: Beam数据中转的设计模式
28 | 如何设计创建好一个Beam Pipeline?
29 | 如何测试Beam Pipeline?
模块五 | 决战 Apache Beam 真实硅谷案例 (7讲)
30 | Apache Beam实战冲刺:Beam如何run everywhere?
31 | WordCount Beam Pipeline实战
32 | Beam Window:打通流处理的任督二脉
33 | 横看成岭侧成峰:再战Streaming WordCount
34 | Amazon热销榜Beam Pipeline实战
35 | Facebook游戏实时流处理Beam Pipeline实战(上)
36 | Facebook游戏实时流处理Beam Pipeline实战(下)
模块六 | 大规模数据处理的挑战与未来 (4讲)
37 | 5G时代,如何处理超大规模物联网数据
38 | 大规模数据处理在深度学习中如何应用?
39 | 从SQL到Streaming SQL:突破静态数据查询的次元
40 | 大规模数据处理未来之路
专栏加餐 | 特别福利 (4讲)
FAQ第一期 | 学习大规模数据处理需要什么基础?
加油站 | Practice makes perfect!
FAQ第二期 | Spark案例实战答疑
FAQ第三期 | Apache Beam基础答疑
结束语 (1讲)
结束语 | 世间所有的相遇,都是久别重逢
大规模数据处理实战
登录|注册

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

蔡元楠 2019-06-05
你好,我是蔡元楠。
今天我要与你分享的主题是“深入对比 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/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《大规模数据处理实战》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(7)

  • AF
    老师能详细解释一下这句话吗?
    “由于相同的原因,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
    1
    7
  • cricket1981
    spark根据算子依赖类型将计算过程划分成多个stage,只有上一个stage全部完成才能进入下一个stage,而flink无此限制。
    2019-06-05
    4
  • 淹死的大虾
    Spark多数据源的join实时处理不如Flink;Spark处理多数据源时,如果有数据源时间间隔超过watermark就没法inner-join了
    2019-06-26
    1
  • 大牛凯
    老师好,请问大多数机器学习算法是有环数据这是啥意思啊?是说每个优化迭代之间是环的么?

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

    2019-08-16
  • 江中芦苇
    本文例子加了时间窗口,不是对一段时间的数据进行计算吗?应该算批处理的例子吧
    2019-07-29
  • Geek_88b596
    我们知道flink的特点是支持在计算流做到exactly once,想问下老师spark支持这样特性吗?不支持的话是不是代表特殊场景下的结果是不准确的也就是说不确定的
    2019-06-27
  • se7en
    Flink有环数据流和用流思想做到批的思想,这两个地方我没懂,老师,你能详细说说么
    2019-06-11
收起评论
7
返回
顶部