Spark内核设计的艺术:架构设计与实现
基本信息

内容简介
计算机书籍
全书分为10章。第1章介绍Spark学习环境的搭建。第2章介绍Spark的基本知识和架构。第3章介绍Spark内核底层的基础设施。第4章介绍SparkContext的初始化。第5章介绍Spark执行环境SparkEnv。第6章介绍Spark自身的存储体系。本章不同于其他书籍将存储的各个组件视为不同内容,而是将存储体系的内容凝聚起来。第7章介绍Spark的调度系统。第8章介绍Spark的计算引擎。第9章介绍Spark的部署模式。第10章介绍Spark的API。Spark从表面上看与之前版本大的不同是API,所以本章拿个别API的实现作为例子,分析其源码实现,让读者理解新老API之间的异同。
作译者
目录
前言
第1章 环境准备 1
1.1 运行环境准备 2
1.1.1 安装JDK 2
1.1.2 安装Scala 2
1.1.3 安装Spark 3
1.2 Spark初体验 4
1.2.1 运行spark-shell 4
1.2.2 执行word count 5
1.2.3 剖析spark-shell 9
1.3 阅读环境准备 14
1.3.1 安装SBT 15
1.3.2 安装Git 15
1.3.3 安装Eclipse Scala IDE插件 15
1.4 Spark源码编译与调试 17
1.5 小结 23
第2章 设计理念与基本架构 24
2.1 初识Spark 25
2.1.1 Hadoop MRv1的局限25
前言
给本书写前言时,让我想起了两年前给《深入理解Spark:核心思想与源码分析》一书写前言的经历。我不禁想起崔护的《题都城南庄》这首诗,诗的内容是:
去年今日此门中,人面桃花相映红。
人面不知何处去,桃花依旧笑春风。
从核心思想和架构来看,Spark依然是那个Spark,但是我已经找了一个新的“东家”。我的年龄不知不觉中又长了两岁,Spark也在大数据领域从“新贵”变成了“老人”。Spark的版本从0.x.x到2.x.x基本上也是用了两年时间。
自从《深入理解Spark:核心思想与源码分析》一书出版后,引起了一些市场反响,更难得的是得到了很多读者的反馈。一些热心的读者通过微信或者邮件向我指出了书中内容的很多不足之处,包括错别字、错误的描述、代码分析有点像流水账、提纲挈领的内容偏少、代码版本过低等。一些错误在修订的版本中得到了解决,有些修正的内容则通过单独写博客来补充。在与读者的沟通过程中,也纠正了我对一些问题的理解偏差。再次深深地感谢广大读者的支持与帮助!
一些读者对《深入理解Spark:核心思想与源码分析》一书的内容非常肯定,希望能够出第2版,高婧雅编辑也一再“怂恿”我,但是我一直没有写第2版的打算。我当时希望有人能够以更好的方式写一本介绍和分析Spark 2.0版本的源码分析书籍,因为我感觉之前的写作方式的确不是很好。在我心中一直有个矛盾:如果源码太少,源码分析的书籍将退化成单纯讲原理的书籍,对于想深入理解Spark实现的读者来说这是不够的;如果源码太多,又让人有堆砌代码或者“混”篇幅的感觉。很多源码分析的书只是简单说说接口或者方法的功能,让人始终有种“雾里看花”的感觉。所以我一直很期待能有更好的方式来写作源码分析类的书。
在一年多的等待中,我始终没有发现类似书籍的出现,于是我打算再做一次尝试。这次摈弃了《深入理解Spark:核心思想与源码分析》一书中按照代码执行流程分析的方式,改为先从整体上介绍一个系统,然后逐个分析每个组件的功能,最后将这些组件之间的关系用流程图的方式串联起来。本书的写作方式依然犯有代码过多的“毛病”,但我还是期待本书能带来一些新的气象。
本书的主要特色
按照源码分析的习惯设计,从脚本分析到初始化,再到核心内容。整个过程遵循由浅入深的基本思路。
每一章先对本章的内容有个总体介绍,然后深入分析各个组件的实现原理,最后将各个组件之间的关系通过执行流程来展现。
本书尽可能地用图来展示原理,以加速读者对内容的掌握。
本书讲解的很多实现及原理都值得借鉴,可以帮助读者提升架构设计、程序设计等方面的能力。
本书尽可能保留较多的源码,以便于初学者能够在脱离办公环境的地方(如地铁、公交等),也能轻松阅读。
读者对象
源码阅读是一项苦差事,人力和时间成本都很高,尤其对于刚刚接触Spark的人来说更是如此。本书尽可能保留源码,使得分析过程不至于产生跳跃感,目的是降低大多数人的学习门槛。如果你是从事IT工作1~3年的新人或者希望开始学习Spark的核心知识,本书非常适合你。如果你已经对Spark有所了解或者已经使用它,还想进一步提高自己,那么本书更适合你。如果你是一个开发新手,对Java、Linux等基础知识还不是很了解的话,本书可能不太适合你。如果你已经对Spark有深入的研究,本书也许可以作为你的参考资料。
总体来说,本书适合以下人群:
已经了解过Spark,但还想深入理解Spark实现原理的人;
大数据技术爱好者;
对性能优化和部署方案感兴趣的运维工程师与架构师;
媒体评论
4年过去了,我们在大数据、流计算、图计算、分布式机器学习、深度学习等领域有了越来越多的高质量开源选择,但是Spark仍然是数据科学家们用得最多的工具之一,了解一点Spark底层技术的人都不得不对Spark的设计及其分布式计算的理论基础表示由衷敬佩。
本书对Spark内部高度抽象的数据结构RDD、分布式DAG调度器/驱动器,以及高效的基于Non-blocking IO分布式计算框架Akka/Netty等内核设计进行了深度剖析,不可多得,是适合大型分布式计算架构师和资深开源贡献者阅读的参考书。
—蔡栋,万达网络科技集团总裁助理兼首席数据官、首席架构师
大数据技术生态其实是一个千姿百态的江湖。从学习技术的角度,最重要的是能将厚变薄,将纷繁复杂的信息进行归类和抽象。对应到大数据技术体系,虽然各种技术百花齐放,层出不穷,但大数据技术本质上无非解决4个核心问题:存储,计算,查询,挖掘。而Spark发展的短短几年,以迅雷不及掩耳之势推出RDD、Spark Streaming、Spark SQL、GraphX、MLlib等一系列模块,震撼了大数据圈。这本书结合了最新Spark 2.x版本,在设计思路和代码解析上做了很好的平衡,让开源代码爱好者,喜欢研究源码的同学汲取到一些阅读源码的方法。
—董飞,datatist首席运营官、前linkedin资深工程师
初读本书有种似曾相识的感觉,Spark还是那个Spark,但是本书多了一些岁月的痕迹,在技术之上多了一些艺术,也更加注重读者的口味。大数据的书很多,能够写出艺术味道的不多,本书应该可以让你在大数据漫漫征途之中对价值多了一重思考,也可以让你在大数据之巅的惊天骇浪中多了一座灯塔。
—于俊,科大讯飞大数据专家
制度信息化,信息工具化,Spark为大数据产业落地提供有力的技术支撑工具!它以内存计算为核心,以其通用、快速和完整的数据工具形成了一个强有竞争力的数据生态圈,成为大数据技术解决方案非常优秀的一个部分,越来越多企业应用部署Spark。本书为那些想要成为一名合格的Spark工程师,或者致力于成为大数据行业的技术管理人才提供了很好的学习途径。相信读者只要掌握一门Spark技术,就能在大数据的海洋中遨游。感谢笔者为大数据产业做出的贡献!
—张涵诚,中关村大数据交易产业联盟副秘书长
本书对Spark原理的讲解与剖析都极具学习意义,作者细致分析了Spark源码的每一个关键细节,对初级用户及中高级用户都有指导意义。
—王欢,上海添锡信息技术有限公司技术总监