第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 BIockManager中的通信 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 Memory Store类 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