与Google资深工程师一起学习大规模数据处理 --专栏《大规模数据处理实战》学习总结

“无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。”

大家都知道,当前是大数据的时代,我们每天在网络上生成了海量的数据,连阿里巴巴都自称自己是一家大数据公司。那么,有了这么多数据之后,我们应该用什么样的方法来分析它们呢?如何从海量的数据中获取到对于我们来说有用的信息呢?带着这诸多的疑问,我学习了极客时间App上的《大规模数据处理实战》专栏。本专栏作者蔡元楠老师是Google资深工程师,领导并开发了超大规模数据驱动的全新应用。

通过对专栏的学习,我对大规模数据处理技术有了比较全面的了解。在这篇文章中,我分享一下自己的学习总结,供大家在处理大规模数据时参考。

专栏主要内容

在开篇词中,作者开门见山地说出了本专栏的特色:介绍硅谷最前沿技术和真实的案例。除了强调特色之外,作者还介绍了当前各大公司在数据处理方面普遍存在的问题,主要有三个:低估了数据处理的重要性低估了数据处理工程师在组织架构上的重要性低估了数据处理规模变大带来的复杂度。这些都是促成作者写作该专栏的原因。

本专栏的主要内容分为六个部分,分别是:直通硅谷大规模数据处理技术实战学习大规模数据处理基本功抽丝剥茧剖析Apache Spark设计精髓Apache Beam为何能一统江湖决战Apache Beam真实硅谷案例大规模数据处理的挑战与未来

我用下面这张思维导图来概括本专栏的主要内容。

MapReduce的淘汰

作者将超大规模数据处理的技术发展阶段分为三个:石器时代(MapReduce 诞生之前的时期)、青铜时代(MapReduce的诞生作为标志)、蒸汽机时代(FlumeJava的诞生作为标志)。2003年,MapReduce的诞生标志了超大规模数据处理的第一次革命,MapReduce作为大规模数据处理的鼻祖,为广大的IT从业者所熟知。但时过境迁,它已经不再处于浪潮之巅,而是被硅谷一线公司淘汰掉了。

为什么曾经风光无限的MapReduce会被淘汰了?主要有两个原因:第一,高昂的维护成本让很多的公司无法承受;第二,它的时间性能达不到用户的期待。如此,就需要新的技术来取代MapReduce了。

Spark的优势

在技术上,MapReduce有哪些缺陷呢?主要有四个,包括:

第一,MapReduce模型的抽象层次低,大量的底层逻辑都需要开发者手工完成;

第二,只提供了Map和Reduce两个操作;

第三,每一步计算都要进行硬盘的读取和写入,大大增加了系统的延迟;

第四,只支持批数据处理,欠缺对流数据处理的支持。

为了解决MapReduce的不足,Spark应运而生。经过工程师们的精心打造,Spark具备了如下三个优势:

第一,Spark最基本的数据抽象叫作弹性分布式数据集(Resilient Distributed Dataset,RDD),系统提供了很多对RDD的操作(如Map、Filter、flatMap、groupByKey和Union等),极大地提升了对各种复杂场景的支持;

第二,Spark会把中间数据缓存在内存中,从而减少了很多由于硬盘读写而导致的延迟,大大加快了处理速度;

第三,Spark有五个主要的扩展库,可以支持极其丰富的功能。

RDD

RDD是一种新的数据抽象模型,也是Spark的核心概念。RDD实际上是一个基于分布式内存的数据抽象,我们可以从如下三个方面来理解RDD:

第一,分区。同一个RDD包含的数据被存储在系统的不同节点中,可以认为RDD是一个大的数组,数组中的每个元素代表一个分区(Partition)。

第二,不可变性。每一个RDD都是只读的,它所包含的分区信息不可以被改变。

第三,并行操作。由于单个RDD的分区特性,使得它天然支持并行操作。

Apache Beam一统江湖

时至今日,MapReduce已经完成了它的历史使命,基本退出了历史舞台,而拿过其接力棒的是Apache Beam

Beam作为Google的前沿技术之一,其含义就是统一了批处理和流处理的一个框架。Beam提供了一套统一的API来处理批处理和流处理这两种模式,让我们只需要将注意力专注于数据处理的算法上,而不用再花时间去对两种数据处理模式上的差异进行维护。

具体到技术实现上,Beam包含了这些:PCollection(对数据进行抽象封装)、Transform(Beam数据转换操作的抽象方法)、Pipeline(多步骤的数据流水线抽象方法)、Pipeline I/O(Beam数据中转的设计模式)。

总结

本专栏的内容基于硅谷前沿技术,即使是没有大规模数据处理背景的人来阅读,也能够从中领略到数据处理的美妙之处。作者还在专栏中提到,其实我们一直都生活在一个被大规模数据所包围着的环境中,学习好大规模数据处理真的是一门必修课。我非常赞同作者的观点,就拿当前的热门的人工智能技术和5G技术来说,前者需要大量的数据来训练模型,而后者实际上就是为了传输海量数据而生的。

在这个大数据的时代,只有掌握了数据处理的核心技术,才不会迷失在数据的海洋中,才能够从数据中获取到真金白银。

如果大家对专栏的内容感兴趣,可以订阅学习,也可以阅读我绘制的思维导图。下载链接如下,希望对大家学习大规模数据处理技术有所帮助。

链接:https://pan.baidu.com/s/1SKo9WzaSJsJDpqzFr2-IAQ  

密码:a1pv

发布了510 篇原创文章 · 获赞 3058 · 访问量 191万+

猜你喜欢

转载自blog.csdn.net/zhouzxi/article/details/105594026