购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

前言

诞生于伯克利大学AMPLab的Spark是当今大数据领域最活跃、最热门、最高效的大数据通用计算平台。基于RDD,Spark成功地构建起了一体化、多元化的大数据处理体系。在任何规模的数据计算中,Spark在性能和扩展性上都更具优势。携带先天学术基因优势的Spark在整个发展过程中都深深地打上了学术研究的烙印,在“One Stack to rule them all”思想的引领下,Spark成功地使用Spark SQL、Spark Streaming、MLlib、GraphX近乎完美地解决了大数据中的Batch Processing、Streaming Processing、Ad-hoc Query等三大核心问题。在“Full Stack”理想的指引下,Spark中的Spark SQL、Spark Streaming、MLLib、GraphX四大子框架和库之间可以无缝地共享数据和操作,这不仅打造了Spark在当今大数据计算领域其他计算框架都无可匹敌的优势,而且使得Spark正在加速成为大数据处理中心首选计算平台。

为什么写作本书

Spark+Hadoop=A Winning Combination!

Hadoop和Spark联合构成了当今的大数据世界,而这个世界正在悄悄发生变化,这种变化是Hadoop负责数据存储和资源管理,Spark负责一体化、多元化的不同规模的数据计算,而计算正是大数据的精髓之所在!

在Spark官方公布的世界上明确在实际生产环境中使用Spark的公司可见https://cwiki.apache.org/confluence/display/SPARK/Powered+By+Spark。在实际的生产环境中,世界上已经出现很多一千个以上节点的Spark集群,以eBay为例,eBay的Spark集群节点已经超过2000个,Yahoo!等公司也在大规模地使用Spark,国内的淘宝、腾讯、百度、网易、京东、华为、大众点评、优酷土豆等也在生产环境下深度使用Spark。2014 Spark Summit上的信息显示,Spark已经获得世界20家顶级公司的支持,这些公司中包括Intel、IBM等,同时更重要的是,最大的4个Hadoop发行商都提供了对Spark非常强有力的支持。

不得不提的是,DataBricks和AWS联合所做的Sort Benchmark测试表明,Spark在只用Hadoop 1/10的计算资源且基于磁盘计算的情况下却只用了1/3的运算时间,彻底颠覆了Hadoop保持的排序记录,成为开源软件领域在TB和PB数量级别排序最快的计算引擎。这表明在任意大小的数据规模下,Spark在性能和扩展性上都更具优势。

与Spark火爆程度形成鲜明对比的是Spark人才的严重稀缺,这一情况在中国尤其严重,这种人才的稀缺一方面是由于Spark技术在2013、2014年才在国内流行,另一方面是由于缺乏Spark相关的中文资料和系统化的培训。为此,Spark亚太研究院和51CTO联合推出了“Spark亚太研究院决胜大数据时代100期公益大讲堂”,共同推动Spark技术的普及。具体视频信息请参考http://edu.51cto.com/course/course_id-1659.html。

与此同时,为了更好地满足广大大数据爱好者系统学习Spark的迫切需求,我们基于最新的Spark 1.1版本编写了《大数据Spark企业级实战》一书,本着从企业级实际开发需要的Spark技能的角度出发,《大数据Spark企业级实战》一书全面覆盖了Spark集群的动手构建、Spark架构、内核的深入解析、Spark四大子框架的细致剖析和实战、Tachyon文件系统揭秘、Spark多语言编程、SparkR、Spark性能调优和最佳实践、Spark核心源码解析等内容。考虑到Spark框架和开发语言使用Scala,而很多朋友可能对Scala不是太熟悉,所以在本书的附录中加入了动手实战Scala三部曲来帮助没有使用过Scala语言的学习者快速掌握Scala编程。对于一名大数据爱好者来说,本书内容可以帮助他们一站式地完成从零起步到进行Spark企业级开发所需要的全部核心内容和实战方法。

关于本书作者

本书作者王家林是Spark亚太研究院首席专家,中国移动互联网和云计算大数据技术领域的集大成者。在Spark、Hadoop、Android等方面有丰富的源码、实务和性能优化经验,彻底研究了Spark从0.5到1.1共18个版本的Spark源码。

作者是Hadoop源码级专家,曾负责某知名公司的类Hadoop框架开发工作,专注于提供Hadoop一站式解决方案,同时也是云计算分布式大数据处理的最早实践者之一。

作者是Android架构师、高级工程师、咨询顾问、培训专家,为超过50家公司提供了基于Linux和Android的软/硬整合解决方案。

本书主要内容

本书共15章,每章的主要内容如下。

第1章回答了Spark为何是大数据处理平台的必然选择?Spark速度如此之快的原因是什么?Spark的理论基石是什么?Spark具体是如何仅仅使用一个技术堆栈解决多元化的大数据处理需求的?

第2章回答了如何从零起步构建Hadoop集群?如何在Hadoop集群的基础上构建Spark集群?如何测试Spark集群?

第3章回答了如何在IDEA集成开发环境中开发并运行Spark程序?如何在IDA中开发Spark代码并进行测试?

第4章在细致解析RDD的基础上会动手实战RDD中的Transformation类型的RDD、Action类型的RDD,并伴有Spark API的综合实战案例。

第5章详细分析了Spark Standalone模式、Spark Yarn-Cluster模式、Spark-Client模式的设计和实现。

第6章首先介绍Spark内核,接着分析Spark内核及源码,细致解析Spark作业的全生命周期,最后分享Spark性能优化的内容。

第7章通过大约30个动手实践的案例循序渐进地展示Spark GraphX框架方方面面的功能和使用方法,并对Spark GraphX的源码进行解析。

第8章基于Spark SQL动手编程实践章节,从零起步,细致、深入地介绍了Spark SQL方方面面的内容。

第9章从快速入门机器学习开始,详细解析MLlib框架,通过对线性回归、聚类、协同过滤的算法解析、源码解析和案例实战,循序渐进地揭秘MLlib,最后通过对MLlib中Basic Statics、朴素贝叶斯算法、决策树的解析和实战,进一步提升掌握Spark机器学习的技能。

第10章细致解析了Tachyon这个分布式内存文件系统的架构设计、具体实现、部署以及Spark对Tachyon的使用等内容。

第11章循序渐进地介绍Spark Streaming的原理、源码和实战案例等内容。

第12章介绍了Spark多语言编程的特点,并通过代码实例循序渐进地介绍Spark多语言编程,最后通过一个综合实例来实践Spark多语言编程。

第13章从R语言的基础介绍和动手实战入手,介绍SparkR的使用和代码实战,助您快速上手R语言和Spark两大大数据处理的利器。

第14章循序渐进地介绍了Spark常见的问题及其调优方式。首先介绍Spark性能优化的14大问题及其解决方法,然后从内存优化、RDD分区、Spark对象和操作的性能调优等角度解决常见的性能调优问题,最后讲解Spark最佳实践方案。

第15章聚焦于Spark源码中的BlockManager、Cache和Checkpoint等核心源码解析,BlockManager、Cache和Checkpoint是每个Spark学习者都必须掌握的核心内容。本章循序渐进地解析了这三部分的源码,包括通过源码说明其用途、实现机制、内部细节和实际Spark生产环境下的最佳实践等。通过本章即可轻松驾驭BlockManager、Cache和Checkpoint,对Spark精髓的领悟也必将更上一层楼!

附录部分主要是从Spark的角度来讲解Scala,以动手实战为核心,从零开始,循序渐进地讲解Scala函数式编程和面向对象编程。

如何阅读本书

这是一本内容详实的大数据Spark企业级实战图书,按照以下建议阅读可能会取得更好的效果:

如果你以前没有接触过Scala,建议先从附录中的“动手实战Scala三部曲”开始阅读,边阅读边编写代码,快速掌握Scala。

在阅读完第1章的基础上,强烈建议按照书中第2章和第3章的内容搭建起Spark的集群和IDE开发环境,后续主要内容都要在第2章和第3章构建的环境基础上进行讲解。

其他内容按照章节循序渐进地学习,建议多动手实践。

强烈建议对于每一个Spark中知识点的学习应多阅读源码。

最终所有的内容都要回归到框架源码以及对源码的阅读和修改上,源码是一切问题的来源和答案,恭祝各位早日成为Spark源码级高手。

致谢

本书得以顺利出版是团队协作的结晶。在此特别感谢博文视点郭总的大力支持,优秀编辑孙学瑛的认真和专业以及其他相关人员的支持。同时也感谢Spark亚太研究院各位同事的大力支持!尤其感谢佳佳在本书出版工作中的全力配合!

王家林
2014年12月 hI+ieqhDyXIh5ccPWk81zWWbcAnZ7+vEoHBpoOW0tXPtb1B7E3HagtyXfsOqdy2h

点击中间区域
呼出菜单
上一章
目录
下一章
×