循序渐进学Spark
上QQ阅读APP看书,第一时间看更新

前言

Spark诞生于美国加州大学伯克利分校AMP实验室。随着大数据技术在互联网、金融等领域的突破式进展,Spark在近些年得到更为广泛的应用。这是一个核心贡献者超过一半为华人的大数据平台开源项目,且正处于飞速发展、快速成熟的阶段。

为什么写这本书

Spark已经成为大数据计算、分析领域新的热点和发展方向。相对于Hadoop传统的MapReduce计算模型,Spark提供更为高效的计算框架以及更为丰富的功能,因此在大数据生产应用领域中不断攻城略地,势如破竹。

与企业不断涌现的对大数据技术的需求相比,大数据人才还存在很大缺口,对大数据技术充满期许的新人正在源源不断地加入这个领域。在小象学院的教学实践过程中,我们发现,一本能完整系统地介绍Spark各模块原理并兼顾使用实战的书,对于初入大数据领域的技术人员至关重要。于是,我们根据日常积累的经验,著成本书。

Spark作为一个高速发展的开源项目,最近也发布了全新的Spark 2.0版本。对于Spark 2.0版本的新特性,我们也专门给予描述,以期将最前沿的Spark技术奉献给读者。

本书面向的读者

❑ Spark初学者

❑ Spark应用开发人员

❑ Spark运维人员

❑ 大数据技术爱好者

如何阅读本书

本书共分8章:

第1章介绍了Spark大数据处理框架的基本概念、主要组成部分、基本架构,以及Spark集群环境搭建和Spark开发环境的构建方法。

第2章引入Spark编程中的核心——RDD弹性分布式数据集,以典型的编程范例,讲解基于RDD的算子操作。

第3章主要讲述了Spark的工作机制与原理,剖析了Spark的提交和执行时的具体机制,重点强调了Spark程序的宏观执行过程。此外,更深入地剖析了Spark的存储及IO、通信机制、容错机制和Shuffl e机制。

第4章对Spark的代码布局做了宏观介绍,并对Spark的执行主线进行详细剖析,从代码层面详细讲述RDD是如何落地到Worker上执行的。同时,本章从另一个角度分析了Client、Master与Worker之间的交互过程,深入讲述了Spark的两个重要功能点及Spark Shuffl e与Spark存储机制。

第5章介绍了YARN的基本原理及基于YARN的Spark程序提交,并结合从程序提交到落地执行的过程,详细介绍了各个阶段的资源管理和调度职能。在本章的后半部分,主要从资源配置的角度对YARN及基于YARN的Spark做了较为详细的介绍。

第6章一一讲解了BDAS中的主要模块。由Spark SQL开始,介绍了Spark SQL及其编程模型和DataFrame。接着深入讲解Spark生态中用于流式计算的模块Spark Streaming。之后,讲解了Spark R的基本概念及操作。最后针对机器学习的流行趋势,重点介绍了Spark MLlib的架构及编程应用,以及机器学习的基本概念和基本算法。

第7章首先详细叙述了Spark调优的几个重要方面,接着给出了工业实践中常见的一些问题,以及解决问题的常用策略,最后启发读者在此基础上进一步思考和探索。

第8章描述了Spark 2.0.0发布之后,Spark Core、Spark SQL、MLlib、Spark Streaming、Spark R等模块API的变化以及新增的功能特性等。对于变化较大的Spark SQL,书中用实际的代码样例更详细地说明和讲解了SparkSession、结构化Streaming等新特性。

对于Spark的初学者或希望从零开始详细了解Spark技术的读者,请从第1章开始通读全书;对于有一定Spark基础的研究者,可从第4章开始阅读;如果只想了解Spark最基本的原理,阅读第1~3章即可。

资源和勘误

本书大量资源来源于小象学院专家团队在大数据项目开发以及Spark教学课程中的经验积累。本书内容的撰写也参考了大量官方文档(http://spark.apache.org/)。

由于Spark技术正在飞速发展,加之笔者水平有限,书中难免存在谬误,也可能存在若干技术细节描述不详尽之处,恳请读者批评指正。欢迎大家关注微信服务号“小象学院”,把您的意见或者建议反馈给我们。

致谢

首先应该感谢Apache Spark的开源贡献者们,Spark是当今大数据领域伟大的开源项目之一,没有这一开源项目,便没有本书。

本书以小象学院git项目方式管理。感谢姜冰钰、陈超、冼茂源等每一位内容贡献者,感谢他们花费大量时间,将自己对Spark的理解加上在实际工作、学习过程中的体会,融汇成丰富的内容。

感谢本书的审阅者樊明璐、杨福川、李艺,他们对本书的内容和结构提供了非常宝贵的意见。