前 言
第1章 Spark架构与集群环境 1
1.1 Spark概述与架构 1
1.1.1 Spark概述 2
1.1.2 Spark生态 3
1.1.3 Spark架构 5
1.2 在Linux集群上部署Spark 8
1.2.1 安装OpenJDK 9
1.2.2 安装Scala 9
1.2.3 配置SSH免密码登录 10
1.2.4 Hadoop的安装配置 10
1.2.5 Spark的安装部署 13
1.2.6 Hadoop与Spark的集群复制 14
1.3 Spark 集群试运行 15
1.4 Intellij IDEA的安装与配置 17
1.4.1 Intellij的安装 17
1.4.2 Intellij的配置 17
1.5 Eclipse IDE的安装与配置 18
1.6 使用Spark Shell开发运行Spark程序 19
1.7 本章小结 20
第2章 Spark 编程模型 21
2.1 RDD弹性分布式数据集 21
2.1.1 RDD简介 22
2.1.2 深入理解RDD 22
2.1.3 RDD特性总结 24
2.2 Spark程序模型 25
2.3 Spark算子 26
2.3.1 算子简介 26
2.3.2 Value型Transmation算子 27
2.3.3 Key-Value型Transmation算子 32
2.3.4 Action算子 34
2.4 本章小结 37
第3章 Spark机制原理 38
3.1 Spark应用执行机制分析 38
3.1.1 Spark应用的基本概念 38
3.1.2 Spark应用执行机制概要 39
3.1.3 应用提交与执行 41
3.2 Spark调度机制 42
3.2.1 Application的调度 42
3.2.2 job的调度 43
3.2.3 stage(调度阶段)和TasksetManager的调度 46
3.2.4 task的调度 50
3.3 Spark存储与I/O 52
3.3.1 Spark存储系统概览 52
3.3.2 BlockManager中的通信 54
3.4 Spark通信机制 54
3.4.1 分布式通信方式 54
3.4.2 通信框架AKKA 56
3.4.3 Client、Master和Worker之间的通信 57
3.5 容错机制及依赖 65
3.5.1 Lineage(血统)机制 66
3.5.2 Checkpoint(检查点)机制 68
3.6 Shuffle机制 70
3.6.1 什么是Shuffle 70
3.6.2 Shuffle历史及细节 72
3.7 本章小结 78
第4章 深入Spark内核 79
4.1 Spark代码布局 79
4.1.1 Spark源码布局简介 79
4.1.2 Spark Core内模块概述 80
4.1.3 Spark Core外模块概述 80
4.2 Spark执行主线[RDD→Task]剖析 80
4.2.1 从RDD到DAGScheduler 81
4.2.2 从DAGScheduler到TaskScheduler 82
4.2.3 从TaskScheduler到Worker节点 88
4.3 Client、Master和Worker交互过程剖析 89
4.3.1 交互流程概览 89
4.3.2 交互过程调用 90
4.4 Shuffle触发 96
4.4.1 触发Shuffle Write 96
4.4.2 触发Shuffle Read 98
4.5 Spark存储策略 100
4.5.1 CacheManager职能 101
4.5.2 BlockManager职能 105
4.5.3 DiskStore与DiskBlock--Manager类 113
4.5.4 MemoryStore类 114
4.6 本章小结 117
第5章 Spark on YARN 118
5.1 YARN概述 118
5.2 Spark on YARN的部署模式 121
5.3 Spark on YARN的配置重点 125
5.3.1 YARN的自身内存配置 126
5.3.2 Spark on YARN的重要配置 127
5.4 本章小结 128
第6章 BDAS 生态主要模块 129
6.1 Spark SQL 129
6.1.1 Spark SQL概述 130
6.1.2 Spark SQL的架构分析 132
6.1.3 Spark SQL如何使用 135
6.2 Spark Streaming 140
6.2.1 Spark Streaming概述 140
6.2.2 Spark Streaming的架构分析 143
6.2.3 Spark Streaming编程模型 145
6.2.4 数据源Data Source 147
6.2.5 DStream操作 149
6.3 SparkR 154
6.3.1 R语言概述 154
6.3.2 SparkR简介 155
6.3.3 DataFrame创建 156
6.3.4 DataFrame操作 158
6.4 MLlib on Spark 162
6.4.1 机器学习概述 162
6.4.2 机器学习的研究方向与问题 164
6.4.3 机器学习的常见算法 167
6.4.4 MLlib概述 210
6.4.5 MLlib架构 212
6.4.6 MLlib使用实例——电影推荐 214
6.5 本章小结 220
第7章 Spark调优 221
7.1 参数配置 221
7.2 调优技巧 223
7.2.1 序列化优化 223
7.2.2 内存优化 224
7.2.3 数据本地化 228
7.2.4 其他优化考虑 229
7.3 实践中常见调优问题及思考 230
7.4 本章小结 231
第8章 Spark 2.0.0 232
8.1 功能变化 232
8.1.1 删除的功能 232
8.1.2 Spark中发生变化的行为 233
8.1.3 不再建议使用的功能 233
8.2 Core以及Spark SQL的改变 234
8.2.1 编程API 234
8.2.2 多说些关于SparkSession 234
8.2.3 SQL 236
8.3 MLlib 237
8.3.1 新功能 237
8.3.2 速度/扩展性 237
8.4 SparkR 238
8.5 Streaming 238
8.5.1 初识结构化Streaming 238
8.5.2 结构化Streaming编程模型 239
8.5.3 结果输出 240
8.6 依赖、打包 242
8.7 本章小结 242
展开