vlambda博客
学习文章列表

新书推荐 | Spark性能调优与原理分析


引言


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


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


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


主要内容简介


本书主要介绍了Spark运行原理及性能调优的相关实践,

从Spark框架内部及外部运行环境等不同角度分析Spark性能调优的过程。

第1章介绍了Linux系统中各种监控工具的使用,对CPU、内存、网络、I/O等方面进行介绍,并提供了集群监控报警的解决方案。

第2章介绍了Java虚拟机(JVM)的基本知识、垃圾回收机制,以及对JVM运行状态的监控。

第3章和第4章介绍了Spark内核架构、任务运行的流程,对各个组件的实现进行了深入的剖析。尤其在Spark内存管理、存储原理、Shuffle阶段,详细介绍了每个实现的细节,这些实现的细节为后期Spark性能调优提供了参数调节的理论依据。

第5章介绍了Spark性能调优的详细实践过程,首先介绍了SparkUI和Spark日志的使用,通过这两项可以迅速定位瓶颈问题;然后根据定位的问题,分别从程序调优、资源调优、Shuffle过程调优等不同角度介绍了调优的实践过程。

本书在理论部分提供了大量的概念原理图、运行流程图,在实践部分提供了大量的示例。让读者对性能的调节不仅停留在参数调节的层面,而且能理解每个参数的修改对程序的内部运行产生的影响。



本书特色


本书以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程序的调优只是优化的一部分,还有其他方面的优化。


适读人群

本书既可以作为Spark开发者的参考用书,也可以作为高等院校计算机与软件相关专业的教材。