编辑推荐

适读人群:大数据开发者
  大数据培训名师、Spark大数据畅销书《大数据Spark企业级实战》作者王家林新作。  内容全面覆盖Spark技术及其生态系统,通过源码分析详解Spark四大子框架。  秉承“实战”类图书特点,解析大量代码的编写操作,具有较强的可操作性,便于读者学习和理解。

内容简介

  《Spark核心源码分析与开发实战》是一本全面介绍Spark以及Spark生态系统相关技术的书籍。主要内容包括Spark系统概述、Spark安装和集群的部署、RDD的编程实践、Spark的运行模式、Spark的运行机制以及Spark的四大子框架(SparkSQL、SparkStreaming、SparkGraphX、MLlib)的详细讲解。《Spark核心源码分析与开发实战》通过理论和实践相结合的方式对Spark的核心框架和生态圈做了详细的解读,不仅对Spark的原理进行详细阐述,还结合Spark的源码和案例操作展示了Spark框架的所具有的优雅和丰富的表现力。  《Spark核心源码分析与开发实战》适合大数据从业者、Spark技术爱好者阅读。相信通过学习《Spark核心源码分析与开发实战》,读者能够熟悉和掌握Spark这一当前流行的大数据计算框架,并将其投入到实践中去。

目录

第1章Spark系统概述1.1Spark是什么1.2Spark生态系统BDAS1.2.1SparkCore1.2.2SparkSQL1.2.3SparkStreaming1.2.4SparkGraphX1.2.5MLlib1.2.6Tachyon1.2.7BlinkDB思考题第2章Spark安装和集群部署2.1搭建Hadoop分布式集群2.1.1安装VMware虚拟机2.1.2安装Ubuntu的镜像文件2.1.3安装JDK2.1.4搭建另外两台Ubuntu系统并配置SSH免密码登录2.1.5安装Hadoop和搭建Hadoop分布式集群2.2Spark安装和集群部署2.2.1安装Scala2.2.2安装Spark和集群部署2.3测试Spark集群2.3.1通过Spark提供的示例LocalPi测试Spark集群2.3.2通过SparkShell测试Spark集群思考题第3章SparkRDD与SparkAPI编程实践3.1RDD介绍3.1.1RDD是Spark的核心抽象3.1.2RDD的特征3.2RDD的操作分类3.2.1输入操作3.2.2转换操作3.2.3行动操作3.2.4控制操作3.3SparkShell下的SparkAPI编程实践3.3.1Local模式下实践map、filter和collect方法3.3.2集群模式下实践textFile、sortByKey和saveAstextFile方法3.3.3集群模式下实践union、join、reduce和lookup方法3.3.4搜狗日志数据分析实践3.4基于IntelliJIDEA使用SparkAPI开发应用程序3.4.1搭建和设置IntelliJIDEA开发环境3.4.2在IntelliJIDEA下开发并部署Spark应用程序3.4.3使用SBT编译Spark应用程序3.4.4使用Maven构建Spark应用程序3.4.5Spark工具思考题第4章Spark的运行模式4.1Spark的运行模式概览4.1.1Spark的基本工作流程4.1.2Spark应用程序部署4.2Local模式4.2.1Local模式实例部署及运行演示4.2.2Local模式内部实现原理4.3Standalone模式4.3.1Standalone模式实例部署及运行演示4.3.2Standalone模式内部实现原理4.4Yarn-Cluster模式4.4.1Yarn-Cluster模式实例部署及运行演示4.4.2Yarn-Cluster模式内部实现原理4.5Yarn-Client模式4.5.1Yarn-Client模式实例部署及运行演示4.5.2Yarn-Client模式内部实现原理4.6Mesos模式4.6.1Mesos模式实例部署及运行演示4.6.2Mesos模式内部实现原理思考题第5章Spark的运行机制5.1Spark集群的架构5.2Spark的作业和任务调度5.2.1SparkApplication提交5.2.2作业(Job)提交5.2.3DAGScheduler划分Stage并提交5.2.4TaskScheduler提交Task5.2.5Executor运行Task并返回结果5.2.6Driver的处理5.3容错机制5.3.1Lineage机制5.3.2Checkpoint机制5.4Storage存储模块5.4.1Storage模块整体架构5.4.2缓存实现原理5.4.3缓存策略5.5Spark的消息传递机制Akka5.5.1Akka架构解析5.5.2Akka驱动下的start-all.sh源码解析5.6Shuffle机制5.6.1Shuffle的原理5.6.2Shuffle的写操作5.6.3Shuffle的读操作5.7共享变量5.7.1广播变量5.7.2累加器5.8Spark性能调优5.8.1数据序列化5.8.2内存优化5.8.3其他优化方法思考题第6章SparkSQL6.1SparkSQL原理和实现6.1.1SparkSQL简介6.1.2SparkSQL运行架构6.1.3Hive在Spark上的使用6.1.4源码解析SQL语句和HiveQL语句的执行过程6.2SparkSQL的操作实例6.2.1文本文件操作以及DSL操作6.2.2Parquet文件以及JSON文件操作6.2.3Hive数据操作演示(订单交易数据操作)6.2.4SparkSQL处理交通数据实战思考题第7章SparkStreaming7.1SparkStreaming运行原理7.1.1SparkStreaming简介7.1.2编程模型DStream7.1.3容错和持久化7.1.4性能调优7.1.5监控应用7.2源码解析SparkStreaming的运行过程7.2.1StreamingContext初始化并启动7.2.2数据接收7.2.3数据处理7.3SparkStreaming操作实例演示7.3.1文本数据操作实例演示7.3.2网络数据操作实例——销售模拟器演示7.3.3有状态(Stateful)操作实例演示7.3.4Window操作实例演示7.3.5SparkStreaming处理多源数据实战思考题第8章SparkGraphX8.1图的定义和应用8.1.1图的定义8.1.2图的应用8.2SparkGraphX简介8.2.1弹性分布式属性图8.2.2SparkGraphX图的切分和存储策略8.2.3SparkGraphX图的操作8.3SparkGraphX架构8.3.1Pregel图计算框架8.3.2SparkGraphX的实现8.3.3SparkGraphX图算法的实现方法8.4SparkGraphX图操作实例8.4.1基于SparkGraphX的属性图的操作实例8.4.2SparkGraphX图算法操作实例思考题第9章MLlib9.1机器学习简介9.1.1机器学习的定义9.1.2机器学习的分类9.1.3机器学习的常用算法9.2MLlib的简介9.2.1什么是MLlib9.2.2MLlib的架构9.2.3MLlib的数据类型9.2.4MLlib的算法9.3MLlib常用算法操作实践9.3.1K-Means算法解析和实践9.3.2协同过滤算法分析和案例实践思考题

前言/序言

  写作背景  2014年IDC预测,未来全球大数据市场将以每年超过30%的速度增长,而我国更快,预计将超过50%。  2014年,麦肯锡统计美国医疗行业通过大数据获得潜在价值超3000亿美元,欧洲各国利用大数据节省开支超1000亿欧元。未来在全球的交通运输、电力、医疗健康等七大领域,大数据将会撬动超过3万亿美元的市场需求。  大数据时代,各种大数据处理技术百花齐放,有基于磁盘进行数据计算的通用批处理框架MapReduce(Hadoop生态系统的大数据计算框架),有低延迟的实时流处理框架Storm,也有提供快速、交互式查询的工具Impala等多种针对不同应用场景而特殊化的处理系统。Spark作为后起之秀,采用Scala编写,底层使用Akka框架进行各个模块之间的通信,代码十分简洁。而且它立足于内存计算,以其RDD(弹性分布式数据集)模型的强大表现能力,不断完善自己的功能,逐渐形成了一套自己的生态系统,提供了Full-stack(一栈式)的解决方案。该生态系统中主要包括负责即时查询的SparkSQL、负责实时流处理的SparkStreaming、负责图计算的SparkGraphX以及机器学习子框架MLlib。由于Spark在性能和扩展性上有快速、易用、通用等特点,使它正在加速成为一体化、多元化的大数据通用计算平台和库。  Spark技术在国内外的应用越来越广泛,它正在逐渐走向成熟,并在这个领域扮演更加重要的角色。国外一些大型互联网公司已经部署了Spark。例如,一直支持Hadoop的四大商业机构(Cloudera、MapR、Hortonworks、EMC)已纷纷宣布支持Spark;Mahout(ApacheSoftwareFoundation(ASF)旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现)也表示,将不再接受任何形式的以MapReduce实现的算法,同时还宣布了接受基于Spark新的算法;而Cloudera的机器学习框架Oryx的执行引擎也将由Hadoop的MapReduce替换成Spark;Google也已经开始将负载从MapReduce转移到Pregel和Dremel上;Facebook也宣布将负载转移到Presto上。而目前,国内的淘宝、优酷土豆、网易、百度、腾讯等企业在自己的商业生产系统中也已经使用Spark技术。  鉴于Spark的“Onestacktorulethemall”的架构理念和基于内存进行计算的性能优势,笔者有理由相信Spark作为大数据技术领域的星星之火,终将成为燎原之势。由于目前市场上介绍Spark技术的书籍比较少,我们特意编写了这本理论和实战相结合的Spark书籍,同时在介绍Spark核心技术的同时穿插了对其源代码的分析,使读者能从更深层次来把握Spark的核心技术,因为我们始终坚信Linux作者的一句话:“源码是一切问题出现的根源和一切问题解决的答案所在”。  《Spark核心源码分析与开发实战》内容  《Spark核心源码分析与开发实战》总体可以分为三大部分:第1~2章介绍Spark的生态系统、Spark集群的安装部署,第3~5章介绍SparkCore的运行原理和编程实践,第6~9章围绕Spark的四大子框架SparkSQL、SparkStreaming、SparkGraphX、MLlib的工作原理和技术特点展开了一系列的编程实践。在《Spark核心源码分析与开发实战》推出之前,SparkR已经作为Spark的一个新的子框架发布出来,这无疑更加快了Spark技术的成长速度。《Spark核心源码分析与开发实战》各章的主要内容介绍如下。  第1章:阐述了Spark的发展历程、Spark的优势和Spark的生态系统全景。  第2章:介绍了Hadoop集群和Spark集群的安装部署过程,在搭建完成Spark集群之后又通过Spark提供的示例LocalPi测试了Spark集群。  第3章:首先详细介绍RDD的概念、特征、操作分类,然后以实战的方式演示了SparkAPI编程实践,接着介绍了基于IntelliJIDEA开发工具使用SparkAPI开发应用程序,最后分别介绍了使用SBT编译Spark应用程序和使用Maven构建Spark应用程序。  第4章:介绍了Spark的工作流程、Spark应用程序部署、Spark的各种运行模式、Spark运行模式的内部实现原理以及各种模式实例部署和运行演示。  第5章:介绍了Spark集群的架构、Spark的作业和任务调度、容错机制、存储模块和存储模块的架构、缓存实现原理、缓存策略、Spark的消息传递机制Akka的源码解析、Shuffle机制(Shuffle的读和写操作)、广播变量、累加器、Spark性能调优。  第6章:介绍了SparkSQL原理和实现、SparkSQL运行架构、Hive在Spark上的使用、源码解析SQL语句和HiveQL语句的执行过程。最后用案例深入浅出地介绍了SparkSQL的操作。  第7章:介绍了SparkStreaming运行原理、编程模型DStream、容错和持久化、性能调优、源码解析SparkStreaming的运行过程。最后用多个案例进行了SparkStreaming操作实例演示。  第8章:介绍了弹性分布式属性图、图的切分和存储策略、图的操作、图计算框架、图算法的实现方法。最后用案例演示了图的使用方法。  第9章:介绍了机器学习的概念、机器学习的分类、机器学习的常用算法、MLlib的架构、MLlib的数据类型。最后用案例介绍了机器学习的使用,包括K-Means算法解析和实战、协同过滤算法分析和案例实战。  致谢  在《Spark核心源码分析与开发实战》编写的过程中,作者参考了很多网络上的书籍和博客,在此谢谢各位作者,正是你们的无私奉献,才推动了Spark技术的快速发展。  感谢中国科学院深圳先进技术研究院的范小朋博士提供了自己在Spark研究过程中编写的关于SparkSQL的交通数据处理案例和SparkStreaming的流式数据处理案例。由于笔者能力有限,书中难免存在错误或表述不准确的内容,恳请大家批评指正,希望大家一起努力使Spark技术在大数据计算领域里推广开来。


其他推荐