第1章 Spark系统概述 1
1.1 Spark是什么 2
1.2 Spark生态系统BDAS 5
1.2.1 Spark Core 5
1.2.2 Spark SQL 6
1.2.3 Spark Streaming 6
1.2.4 Spark GraphX 7
1.2.5 MLlib 7
1.2.6 Tachyon 8
1.2.7 BlinkDB 8
思考题 8
第2章 Spark安装和集群部署 9
2.1 搭建Hadoop分布式集群 10
2.1.1 安装VMware虚拟机 10
2.1.2 安装Ubuntu的镜像文件 11
2.1.3 安装JDK 17
2.1.4 搭建另外两台Ubuntu系统并配置SSH免密码登录 17
2.1.5 安装Hadoop和搭建Hadoop分布式集群 19
2.2 Spark安装和集群部署 22
2.2.1 安装Scala 22
2.2.2 安装Spark和集群部署 22
2.3 测试Spark集群 26
2.3.1 通过Spark提供的示例LocalPi测试Spark集群 26
2.3.2 通过Spark Shell测试Spark集群 27
思考题 29
第3章 Spark R…DD与Spark API编程实践 30
3.1 RDD介绍 31
3.1.1 RDD是Spark的核心抽象 31
3.1.2 RDD的特征 31
3.2 RDD的操作分类 32
3.2.1 输入操作 33
3.2.2 转换操作 35
3.2.3 行动操作 40
3.2.4 控制操作 44
3.3 Spark Shell下的Spark API编程实践 44
3.3.1 Local模式下实践map、 filter和collect方法 45
3.3.2 集群模式下实践textFile、 sortByKey和saveAstextFile方法 45
3.3.3 集群模式下实践union、 join、 reduce和lookup方法 47
3.3.4 搜狗日志数据分析实践 50
3.4 基于IntelliJ IDEA使用Spark API开发应用程序 54
3.4.1 搭建和设置IntelliJ IDEA开发环境 55
3.4.2 在IntelliJ IDEA下开发并部署Spark应用程序 58
3.4.3 使用SBT编译Spark应用程序 65
3.4.4 使用Maven构建Spark应用程序 68
3.4.5 Spark工具 70
思考题 73
第4章 Spark的运行模式 74
4.1 Spark的运行模式概览 75
4.1.1 Spark的基本工作流程 76
4.1.2 Spark应用程序部署 77
4.2 Local模式 79
4.2.1 Local模式实例部署及运行演示 79
4.2.2 Local模式内部实现原理 81
4.3 Standalone模式 84
4.3.1 Standalone模式实例部署及运行演示 84
4.3.2 Standalone模式内部实现原理 92
4.4 Yarn-Cluster模式 121
4.4.1 Yarn-Cluster模式实例部署及运行演示 121
4.4.2 Yarn-Cluster模式内部实现原理 124
4.5 Yarn-Client模式 131
4.5.1 Yam-Client模式实例部署及运行演示 131
4.5.2 Yarn-Client模式内部实现原理 132
4.6 Mesos模式 134
4.6.1 Mesos模式实例部署及运行演示 134
4.6.2 Mesos模式内部实现原理 138
思考题 138
第5章 Spark的运行机制 139
5.1 Spark集群的架构 140
5.2 Spark的作业和任务调度 141
5.2.1 Spark Application提交 142
5.2.2 作业(Job)提交 157
5.2.3 DAGScheduler划分Stage并提交 159
5.2.4 TaskScheduler提交Task 166
5.2.5 Executor运行Task并返回结果 168
5.2.6 Driver的处理 172
5.3 容错机制 174
5.3.1 Lineage机制 174
5.3.2 Checkpoint机制 175
5.4 Storage存储模块 179
5.4.1 Storage模块整体架构 180
5.4.2 缓存实现原理 184
5.4.3 缓存策略 196
5.5 Spark的消息传递机制Akka 198
5.5.1 Akka架构解析 198
5.5.2 Akka驱动下的start-all. sh源码解析 200
5.6 Shuffle机制 207
5.6.1 Shuffle的原理 207
5.6.2 Shuffle的写操作 207
5.6.3 Shuffle的读操作 210
5.7 共享变量 211
5.7.1 广播变量 211
5.7.2 累加器 217
5.8 Spark性能调优 217
5.8.1 数据序列化 217
5.8.2 内存优化 218
5.8.3 其他优化方法 221
思考题 222
第6章 Spark SQL 223
6.1 Spark SQL原理和实现 224
6.1.1 Spark SQL简介 224
6.1.2 Spark SQL运行架构 225
6.1.3 Hive在Spark上的使用 229
6.1.4 源码解析SQL语句和HiveQL语句的执行过程 232
6.2 Spark SQL的操作实例 251
6.2.1 文本文件操作以及DSL操作 251
6.2.2 Parquet文件以及JSON文件操作 255
6.2.3 Hive数据操作演示(订单交易数据操作) 258
6.2.4 Spark SQL处理交通数据实战 268
思考题 272
第7章 Spark Streaming 273
7.1 Spark Streaming运行原理 274
7.1.1 Spark Streaming简介 274
7.1.2 编程模型DStream 275
7.1.3 容错和持久化 283
7.1.4 性能调优 285
7.1.5 监控应用 287
7.2 源码解析Spark Streaming的运行过程 288
7.2.1 StreamingContext初始化并启动 289
7.2.2 数据接收 296
7.2.3 数据处理 307
7.3 Spark Streaming操作实例演示 316
7.3.1 文本数据操作实例演示 316
7.3.2 网络数据操作实例——销售模拟器演示 319
7.3.3 有状态(Stateful)操作实例演示 328
7.3.4 Window操作实例演示 332
7.3.5 SparkStreaming处理多源数据实战 338
思考题 342
第8章 Spark GraphX 343
8.1 图的定义和应用 344
8.1.1 图的定义 344
8.1.2 图的应用 345
8.2.2 Spark GraphX简介 346
8.2.1 弹性分布式属性图 346
8.2.2 Spark GraphX图的切分和存储策略 348
8.2.3 Spark GraphX图的操作 350
8.3 Spark GraphX架构 358
8.3.1 Pregel图计算框架 359
8.3.2 Spark GraphX的实现 363
8.3.3 Spark GraphX图算法的实现方法 369
8.4 Spark GraphX图操作实例 373
8.4.1 基于Spark GraphX的属性图的操作实例 373
8.4.2 Spark GraphX图算法操作实例 396
思考题 402
第9章 MLlib 403
9.1 机器学习简介 404
9.1.1 机器学习的定义 404
9.1.2 机器学习的分类 405
9.1.3 机器学习的常用算法 406
9.2 MLlib的简介 408
9.2.1 什么是MLlib 408
9.2.2 MLlib的架构 409
9.2.3 MLlib的数据类型 410
9.2.4 MLlib的算法 414
9.3 MLlib常用算法操作实践 419
9.3.1 K-Means算法解析和实践 419
9.3.2 协同过滤算法分析和案例实践 423
思考题 432