本书以Spark 2.0 版本为基础进行编写,全面介绍了Spark 核心及其生态圈组件技术。主要内
容包括Spark 生态圈、实战环境搭建、编程模型和内部重要模块的分析,重点介绍了消息通信框
架、作业调度、容错执行、监控管理、存储管理以及运行框架,同时还介绍了Spark 生态圈相关
组件,包括了Spark SQL 的即席查询、Spark Streaming 的实时流处理应用、MLbase/MLlib 的机器
学习、GraphX 的图处理、SparkR 的数学计算和Alluxio 的分布式内存文件系统等。
本书从Spark 核心技术进行深入分析,重要章节会结合源代码解读其实现原理,围绕着技术
原理介绍了相关典型实例,读者通过这些实例可以更加深入地理解Spark 的运行机制。另外本书
还应用了大量的图表进行说明,通过这种方式让读者能够更加直观地理解Spark 相关原理。
本书根据Spark最新版本,以源码为基础,结合实际案例,深入浅出分析Spark作业调度、容错执行、存储管理 以及运行架构等核心原理,同时对Spark生态圈BDAS组件做了详细的介绍。
前言:
为什么要写这本书
在过去的十几年里,随着计算机的普遍应用和互联网的普及,使得数据呈现爆发式增长,在这个背景下,Doug Cutting在谷歌的两篇论文(GFS和MapReduce)的启发下开发了Nutch项目。2006年Hadoop脱离了Nutch,成为Apache的顶级项目,带动了大数据发展的新十年。在此期间,大数据开源产品如雨后春笋般层出不穷,特别是2009年由加州大学伯克利分校AMP实验室开发的Spark,它以内存迭代计算的高效和各组件所形成一站式解决平台成为这些产品的翘楚。
Spark在2013年6月成为Apache孵化项目,8个月后成为其顶级项目,并于2014年5月发布了1.0版本,在2016年7月正式发布了2.0版本。在这个过程中,Spark社区不断壮大,成为了最为活跃的大数据社区之一。作为大数据处理的“利器”,Spark在发展过程中不断地演进,因此各个版本存在较大的差异。市面上关于Spark的书已经不少,但是这些书所基于的Spark版本稍显陈旧,另外在介绍Spark的时候,未能把原理、代码和实例相结合,于是便有了本书,本书能够在剖析Spark原理的同时结合实际案例,从而让读者能够更加深入理解和掌握Spark。
在本书中,首先对Spark的生态圈进行了介绍,讲述了Spark的发展历程,同时也介绍Spark实战环境的搭建;接下来从Spark的编程模型、作业执行、存储原理和运行架构等方面讲解了Spark内部核心原理;最后对Spark的各组件进行详细介绍,这些组件包括Spark SQL的即席查询、Spark Streaming的实时流处理应用、MLbase/MLlib的机器学习、GraphX的图处理、SparkR的数学计算和Alluxio的分布式内存文件系统等。
读者对象
(1)大数据爱好者
随着大数据时代的来临,无论是传统行业、IT行业还是互联网等行业,都将涉及大数据技术,本书能够帮助这些行业的大数据爱好者了解Spark生态圈和发展演进趋势。通过本书,读者不仅可以了解到Spark的特点和使用场景,而且如果希望继续深入学习Spark知识,那么本书也是很好的入门选择。
(2)Spark开发人员
如果要进行Spark应用的开发,仅仅掌握Spark基本使用方法是不够的,还需深入了解Spark的设计原理、架构和运行机制。本书深入浅出地讲解了Spark的编程模型、作业运行机制、存储原理和运行架构等内容,通过对这些内容的学习,相信读者可以编写出更加高效的应用程序。
(3)Spark运维人员
作为一名Spark运维人员,适当了解Spark的设计原理、架构和运行机制对于运维工作十分有帮助。通过对本书的学习,不仅能够更快地定位并排除故障,而且还能对Spark运行进行调优,让Spark运行得更加稳定和快速。
(4)数据科学家和算法研究
随着大数据技术的发展,实时流计算、机器学习、图计算等领域成为较热门的研究方向,而Spark有着较为成熟的生态圈,能够一站式解决类似场景的问题。这些研究人员可以通过本书加深对Spark的原理和应用场景的理解,从而能够更好地利用Spark各个组件进行数据计算和算法实现。
内容速览
本书分为三个部分,共计12章。
第一部分为基础篇(第1~2章),介绍了Spark诞生的背景、演进历程,以及Spark生态圈的组成,并详细介绍了如何搭建Spark实战环境。通过该环境不仅可以阅读Spark源代码,而且可以开发Spark应用程序。
第二部分为核心篇(第3~6章),讲解了Spark的编程模型、核心原理、存储原理和运行架构,在核心原理中对Spark通信机制、作业执行原理、调度算法、容错和监控管理等进行了深入分析,在分析原理和代码的同时结合实例进行演示。
第三部分为组件篇(第7~12章),介绍了Spark的各个组件,包括Spark SQL的即席查询、Spark Streaming的实时流处理应用、MLbase/MLlib的机器学习、GraphX的图处理、SparkR的数学计算和Alluxio的分布式内存文件系统等。
另外本书后面还包括5个附录:附录A为编译安装Hadoop,附录B为安装MySQL数据库,附录C为编译安装Hive,附录D为安装ZooKeeper,附录E为安装Kafka。由于本书篇幅有限,因此这些内容可到我的博客(http://www.cnblogs.com/shishanyuan)或博文视点网站(www.broadview.com.cn\30236)下载。
勘误和支持
由于笔者水平有限,加之编写时间跨度较长,同时Spark演进较快,因此在编写本书的过程中,难免会出现错误或者不准确的地方,恳请读者批评指正。如果本书存有错误,或者您有Spark的内容需要探讨,可以发送邮件到jan98341@qq.com与我联系,期待能够得到大家的反馈。
致谢
感谢中油瑞飞公司,让我接触到大数据的世界,并在工作的过程中深入了解Spark。感谢吴建平、于鹏、李新宅、祝军、张文逵、马君博士、卢文君等领导同事,在本书编写过程中提供无私的帮助和宝贵的建议。
感谢京东商城的付彩宝、沈晓凯对我的工作和该书的支持,感谢付彩宝在繁忙的工作之余为本书写推荐,感谢京东数据挖掘架构师何云龙为本书作序,感谢大数据平台部的周龙波对该书提出了宝贵意见。
感谢EMC常雷博士为本书审稿并写推荐。
感谢Alluxio的CEO李浩源博士对本书的支持,感谢范斌在非常忙的工作中,抽出时间给Alluxio章节进行了审稿并提供了很好的建议。
非常感谢我的家人对我的理解和支持,特别是在写书过程中老婆又为我们家添了一位猴宝宝,让为我拥有一对健康可爱的儿女,这些都给了我莫大的动力,让我的努力更加有意义。
谨以此书先给我亲爱的家人,你们是我努力的源泉。
郭景瞻
2016年11月
您好,我按照书上的步骤一步步进行,到这一步编译代码的时候一直报错,说是什么不存在。后来在书上找到您的相关博客,我看博客上的内容有先搭建Hadoop再进行spark搭建,想问一下书上的步骤为何与博客上的也有出入呢?