前言

在这个互联网数据爆发的时代,在大数据的浪潮中,各种分布式计算框架、资源调度框架层出不穷。计算速度慢的终究会落地,曾经辉煌的MapReduce也成为历史。先进的内存迭代式计算框架Spark成为大数据计算的主导。

然而有优秀的计算框架,并不一定就能写出高效的处理程序,就如同一辆兰博基尼行驶在颠簸的乡间小路上一般,纵使有
很大的马力,也没有发挥的余地。所以在企业级开发中,Spark性能的优化才能将Spark的性能发挥得淋漓尽致。

一辆车能跑多快不仅仅取决于引擎的动力,车轮、避震、跑道等因素也会对其造成影响。一个Spark程序能够运行多快,同样不单单由Spark本身决定,用户
编写的程序、CPU、内存、磁盘、网络等因素都会对
程序的运行产生影响。正因为如此,一个程序真正的调优并不简单,对
程序的性能瓶颈的定位更加困难。市面上虽有很多介绍Spark的书籍,但大部分对性能调优部分只是一笔带过,
只说明要调节哪些参数,对于为什么需要调节、原理如何、调节后的效果如何
等介绍得甚少,于是便有了本书。

本书以Spark内部实现原理为指导,对其运行过程中的每个组件都进行了详细剖析,以理论指导各种参数的调节,以结果证明理论的正确性。如果从宏观上来看本书,各个章节的理论分析能够使读者更加快速地定位程序运行的瓶颈,解决实际生产中的问题。本书具有以下优点。
(1) 目标针对性强。
本书针对大数据技术开发者,适合想要使用Spark但对Spark原理不太了解的读者。同时,本书更适合对性能优化有需求的大数据开发工程师。本书不太适合没有Linux基础或Spark开发基础的读者。

(2) 内容与时俱进。
作为分布式计算框架的领军者,Spark的发展可谓相当迅速,截至本书写作之时,Spark最新的版本为Spark 2.4.0,本书所有功能均针对Spark 2.4.0功能进行介绍。在内核源码分析部分使用Spark 2.2.0源码为基础进行剖析。



(3) 理论结合实践。
本书以Spark内核运行原理为指导,使用了大量图表来描述Spark各个环节的运行过程。以理论指导每个调优参数背后影响的过程,让读者不仅知其然,而且知其所以然。同时,本书提供了大量操作示例并提供示例的运行结果,让枯燥的理论不再乏味。读者可以跟随书中的内容同步进行操作。本书每个示例中提供的代码均提供源码下载,读者可扫描下方二维码下载。


源代码



(4) 真实的生产实践。
本书所有调优均来自真实的生产实践,并将主要问题简化后通过实验方式表达出来。大部分实验围绕Spark的优化进行,有一些实验围绕系统的优化来进行,如内存、网络等方面。这也表明在真实的生产环境中,对Spark程序的调优只是优化的一部分,还有其他方面的优化。
本书的作者为吕云翔、郭宇光,曾洪立也参与了部分内容的编写和辅助教材的制作工作。
由于实验环境条件有限,性能影响因素众多,同时限于作者水平,书中难免有疏漏之处,恳请广大读者批评指正。
作者2020年9月