图解Spark:核心技术与案例实战
  • 推荐0
  • 收藏0
  • 浏览3.7K

图解Spark:核心技术与案例实战

郭景瞻 (作者) 

  • 书  号:978-7-121-30236-7
  • 出版日期:2016-12-08
  • 页  数:480
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:安娜
本书以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月

目录

第1章 Spark及其生态圈概述
1.1 Spark简介
1.1.1 什么是Spark
1.1.2 Spark与MapReduce比较
1.1.3 Spark的演进路线图
1.2 Spark生态系统
1.2.1 Spark Core
1.2.2 Spark Streaming
1.2.3 Spark SQL
1.2.4 BlinkDB
1.2.5 MLBase/MLlib
1.2.6 GraphX
1.2.7 SparkR
1.2.8 Alluxio
1.3 小结
第2章 搭建Spark实战环境
2.1 基础环境搭建
2.1.1 搭建集群样板机
2.1.2 配置集群环境
2.2 编译Spark源代码
2.2.1 配置Spark编译环境
2.2.2 使用Maven编译Spark
2.2.3 使用SBT编译Spark
2.2.4 生成Spark部署包
2.3 搭建Spark运行集群
2.3.1 修改配置文件
2.3.2 启动Spark
2.3.3 验证启动
2.3.4 第一个实例
2.4 搭建Spark实战开发环境
2.4.1 CentOS中部署IDEA
2.4.2 使用IDEA开发程序
2.4.3 使用IDEA阅读源代码
2.5 小结

第二篇 核心篇
第3章 Spark编程模型
3.1 RDD概述
3.1.1 背景
3.1.2 RDD简介
3.1.3 RDD的类型
3.2 RDD的实现
3.2.1 作业调度
3.2.2 解析器集成
3.2.3 内存管理
3.2.4 检查点支持
3.2.5 多用户管理
3.3 编程接口
3.3.1 RDD分区(Partitions)
3.3.2 RDD首选位置(PreferredLocations)
3.3.3 RDD依赖关系(Dependencies)
3.3.4 RDD分区计算(Iterator)
3.3.5 RDD分区函数(Partitioner)
3.4 创建操作
3.4.1 并行化集合创建操作
3.4.2 外部存储创建操作
3.5 转换操作
3.5.1 基础转换操作
3.5.2 键值转换操作
3.6 控制操作
3.7 行动操作
3.7.1 集合标量行动操作
3.7.2 存储行动操作
3.8 小结
第4章 Spark核心原理
4.1 消息通信原理
4.1.1 Spark消息通信架构
4.1.2 Spark启动消息通信
4.1.3 Spark运行时消息通信
4.2 作业执行原理
4.2.1 概述
4.2.2 提交作业
4.2.3 划分调度阶段
4.2.4 提交调度阶段
4.2.5 提交任务
4.2.6 执行任务
4.2.7 获取执行结果
4.3 调度算法
4.3.1 应用程序之间
4.3.2 作业及调度阶段之间
4.3.3 任务之间
4.4 容错及HA
4.4.1 Executor异常
4.4.2 Worker异常
4.4.3 Master异常
4.5 监控管理
4.5.1 UI监控
4.5.2 Metrics
4.5.3 REST
4.6 实例演示
4.6.1 计算年降水实例
4.6.2 HA配置实例
4.7 小结
第5章 Spark存储原理
5.1 存储分析
5.1.1 整体架构
5.1.2 存储级别
5.1.3 RDD存储调用
5.1.4 读数据过程
5.1.5 写数据过程
5.2 Shuffle分析
5.2.1 Shuffle简介
5.2.2 Shuffle的写操作
5.2.3 Shuffle的读操作
5.3 序列化和压缩
5.3.1 序列化
5.3.2 压缩
5.4 共享变量
5.4.1 广播变量
5.4.2 累加器
5.5 实例演示
5.6 小结
第6章 Spark运行架构
6.1 运行架构总体介绍
6.1.1 总体介绍
6.1.2 重要类介绍
6.2 本地(Local)运行模式
6.2.1 运行模式介绍
6.2.2 实现原理
6.3 伪分布(Local-Cluster)运行模式
6.3.1 运行模式介绍
6.3.2 实现原理
6.4 独立(Standalone)运行模式
6.4.1 运行模式介绍
6.4.2 实现原理
6.5 YARN运行模式
6.5.1 YARN运行框架
6.5.2 YARN-Client运行模式介绍
6.5.3 YARN-Client 运行模式实现原理
6.5.4 YARN-Cluster运行模式介绍
6.5.5 YARN-Cluster 运行模式实现原理
6.5.6 YARN-Client与YARN-Cluster对比
6.6 Mesos运行模式
6.6.1 Mesos介绍
6.6.2 粗粒度运行模式介绍
6.6.3 粗粒度实现原理
6.6.4 细粒度运行模式介绍
6.6.5 细粒度实现原理
6.6.6 Mesos粗粒度和Mesos细粒度对比
6.7 实例演示
6.7.1 独立运行模式实例
6.7.2 YARN-Client实例
6.7.3 YARN-Cluster实例
6.8 小结

第三篇 组件篇
第7章 Spark SQL
7.1 Spark SQL简介
7.1.1 Spark SQL发展历史
7.1.2 DataFrame/Dataset介绍
7.2 Spark SQL运行原理
7.2.1 通用SQL执行原理
7.2.2 SparkSQL运行架构
7.2.3 SQLContext运行原理分析
7.2.4 HiveContext介绍
7.3 使用Hive-Console
7.3.1 编译Hive-Console
7.3.2 查看执行计划
7.3.3 应用Hive-Console
7.4 使用SQLConsole
7.4.1 启动HDFS和Spark Shell
7.4.2 与RDD交互操作
7.4.3 读取JSON格式数据
7.4.4 读取Parquet格式数据
7.4.5 缓存演示
7.4.6 DSL演示
7.5 使用Spark SQL CLI
7.5.1 配置并启动Spark SQL CLI
7.5.2 实战Spark SQL CLI
7.6 使用Thrift Server
7.6.1 配置并启动Thrift Server
7.6.2 基本操作
7.6.3 交易数据实例
7.6.4 使用IDEA开发实例
7.7 实例演示
7.7.1 销售数据分类实例
7.7.2 网店销售数据统计
7.8 小结
第8章 Spark Streaming
8.1 Spark Streaming简介
8.1.1 术语定义
8.1.2 Spark Streaming特点
8.2 Spark Streaming编程模型
8.2.1 DStream的输入源
8.2.2 DStream的操作
8.3 Spark Streaming运行架构
8.3.1 运行架构
8.3.2 消息通信
8.3.3 Receiver分发
8.3.4 容错性
8.4 Spark Streaming运行原理
8.4.1 启动流处理引擎
8.4.2 接收及存储流数据
8.4.3 数据处理
8.5 实例演示
8.5.1 流数据模拟器
8.5.2 销售数据统计实例
8.5.3 Spark Streaming+Kafka实例
8.6 小结
第9章 Spark MLlib
9.1 Spark MLlib简介
9.1.1 Spark MLlib介绍
9.1.2 Spark MLlib数据类型
9.1.3 Spark MLlib基本统计方法
9.1.4 预言模型标记语言
9.2 线性模型
9.2.1 数学公式
9.2.2 线性回归
9.2.3 线性支持向量机
9.2.4 逻辑回归
9.2.5 线性最小二乘法、Lasso和岭回归
9.2.6 流式线性回归
9.3 决策树
9.4 决策模型组合
9.4.1 随机森林
9.4.2 梯度提升决策树
9.5 朴素贝叶斯
9.6 协同过滤
9.7 聚类
9.7.1 K-means
9.7.2 高斯混合
9.7.3 快速迭代聚类
9.7.4 LDA
9.7.5 二分K-means
9.7.6 流式K-means
9.8 降维
9.8.1 奇异值分解降维
9.8.2 主成分分析降维
9.9 特征提取和变换
9.9.1 词频—逆文档频率
9.9.2 词向量化工具
9.9.3 标准化
9.9.4 范数化
9.10 频繁模式挖掘
9.10.1 频繁模式增长
9.10.2 关联规则挖掘
9.10.3 PrefixSpan
9.11 实例演示
9.11.1 K-means聚类算法实例
9.11.2 手机短信分类实例
9.12 小结
第10章 Spark GraphX
10.1 GraphX介绍
10.1.1 图计算
10.1.2 GraphX介绍
10.1.3 发展历程
10.2 GraphX实现分析
10.2.1 GraphX图数据模型
10.2.2 GraphX图数据存储
10.2.3 GraphX图切分策略
10.2.4 GraphX图操作
10.3 实例演示
10.3.1 图例演示
10.3.2 社区发现演示
10.4 小结
第11章 SparkR
11.1 概述
11.1.1 R语言介绍
11.1.2 SparkR介绍
11.2 SparkR与DataFrame
11.2.1 DataFrames介绍
11.2.2 与DataFrame的相关操作
11.3 编译安装SparkR
11.3.1 编译安装R语言
11.3.2 安装SparkR运行环境
11.3.3 安装SparkR
11.3.4 启动并验证安装
11.4 实例演示
11.5 小结
第12章 Alluxio
12.1 Alluxio简介
12.1.1 Alluxio介绍
12.1.2 Alluxio系统架构
12.1.3 HDFS与Alluxio
12.2 Alluxio编译部署
12.2.1 编译Alluxio
12.2.2 单机部署Alluxio
12.2.3 集群模式部署Alluxio
12.3 Alluxio命令行使用
12.3.1 接口说明
12.3.2 接口操作示例
12.4 实例演示
12.4.1 启动环境
12.4.2 Alluxio上运行Spark
12.4.3 Alluxio上运行MapReduce
12.5 小结

本书附录部分请到博文视点网站下载www.broadview.com.cn/30236。

本书勘误

印次
  • 页码:28  •  行数:倒数第四行命令  •  印次: 1

    您好,我按照书上的步骤一步步进行,到这一步编译代码的时候一直报错,说是什么不存在。后来在书上找到您的相关博客,我看博客上的内容有先搭建Hadoop再进行spark搭建,想问一下书上的步骤为何与博客上的也有出入呢?

    大鲨鱼~~ 提交于 2017/12/10 14:36:42
    安娜 确认于 2017/12/11 13:03:51

读者评论

  • 书中对于rdd 算子这块描述的个人认为不准确,foldbykey算子书中写到初始值是针对每一个元素,个人认为这个情况只有发生在相同key 的元素在不同的rdd分区中,如果都划分在一个分区中那么结果行为是不同的,所以这个函数跟分区数是有关系的。

    thomasg发表于 2019/9/7 18:32:57
    • 邮箱:18610321705@163.com 如果观点错误请回复

      thomasg发表于 2019/9/7 18:34:18

相关博文

  • Spark 生态系统组件

    Spark 生态系统组件

    管理员账号 2017-01-04

    小编说:随着大数据技术的发展,实时流计算、机器学习、图计算等领域成为较热的研究方向,而Spark作为大数据处理的“利器”有着较为成熟的生态圈,能够一站式解决类似场景的问题。那么Spark 生态系统中有哪些组件你知道吗?下面让我们跟着本文...

    管理员账号 2017-01-04
    1294 0 0 0

相关图书

Spring Boot 2企业应用实战

本书介绍了Java EE领域的全新开源框架:Spring Boot。其中Spring的版本为5.0。本书的示例建议在Tomcat 8上运行。<br>本书重点介绍...

¥58.00

Apache Kafka实战

胡夕 (作者)

本书是涵盖Apache Kafka各方面的具有实践指导意义的工具书和参考书。作者结合典型的使用场景,对Kafka整个技术体系进行了较为全面的讲解,以便读者能够举...

¥59.00

Spring+MyBatis企业应用实战(第2版)

本书主要介绍介绍了Java EE领域的两个开源框架:Spring的MVC和MyBatis。其中Spring的版本为5.0,MyBatis的版本是3.4.5。本书...

¥39.00

轻量级Java EE企业应用实战(第5版)——Struts 2+Spring 5+Hibernate 5/JPA 2整合开发

本书是《轻量级Java EE企业应用实战》的第5版,这一版保持了前几版内容全面、深入的特点,主要完成全部知识的升级。<br>本书介绍了Java EE领域的四个开...

¥128.00

Spark:大数据集群计算的生产实践

李刚 (作者) 李刚 (译者)

本书针对spark从验证性环境迁移到实际生产环境时会遇到的各种问题给出了实际的帮助,涵盖了开发及维护生产级Spark应用的各种方法、组件与有用实践。全书分为6章...

¥65.00

Hadoop金融大数据分析

Rajiv Tiwari (作者) 王小宁 (译者)

在互联网+时代,数据是炙手可热的重要资源,网络使用基础的提升,数据流量增大,用户需求多样化和多变对架构设计提出严峻考验,而Hadoop为快速响应用户需求提供了重...

¥59.00