第一部分Spark概述 1
第1章 初识Spark 3
1.1 大数据和Spark 3
1.1.1 大数据的由来 4
1.1.2 大数据的分析 4
1.1.3 Hadoop 5
1.1.4 Spark简介 6
1.2 与Spark的第一次亲密接触 7
1.2.1 环境准备 7
1.2.2 下载安装Spark 8
1.2.3 Spark下的WordCount 8
第二部分Spark核心概念 13
第2章 Spark整体框架 15
2.1 编程模型 15
2.1.1 RDD 17
2.1.2 Operation 17
2.2 运行框架 18
2.2.1 作业提交 18
2.2.2 集群的节点构成 18
2.2.3 容错处理 19
2.2.4 为什么是Scala 19
2.3 源码阅读环境准备 19
2.3.1 源码下载及编译 19
2.3.2 源码目录结构 21
2.3.3 源码阅读工具 21
2.3.4 本章小结 22
第3章 SparkContext初始化 23
3.1 spark-shell 23
3.2 SparkContext的初始化综述 27
3.3 Spark Repl综述 30
3.3.1 Scala Repl执行过程 31
3.3.2 Spark Repl 32
第4章 Spark作业提交 33
4.1 作业提交 33
4.2 作业执行 38
4.2.1 依赖性分析及Stage划分 39
4.2.2 Actor Model和Akka 46
4.2.3 任务的创建和分发 47
4.2.4 任务执行 53
4.2.5 Checkpoint和Cache 62
4.2.6 WebUI和Metrics 62
4.3 存储机制 71
4.3.1 Shuffle结果的写入和读取 71
4.3.2 Memory Store 80
4.3.3 存储子模块启动过程分析 81
4.3.4 数据写入过程分析 82
4.3.5 数据读取过程分析 84
4.3.6 TachyonStore 88
第5章 部署方式分析 91
5.1 部署模型 91
5.2 单机模式local 92
5.3 伪集群部署local-cluster 93
5.4 原生集群Standalone Cluster 95
5.4.1 启动Master 96
5.4.2 启动Worker 97
5.4.3 运行spark-shell 102
5.4.4 容错性分析 106
5.5 Spark On YARN 112
5.5.1 YARN的编程模型 112
5.5.2 YARN中的作业提交 112
5.5.3 Spark On YARN实现详解 113
5.5.4 Sparkpi on YARN 122
第三部分Spark Lib 129
第6章 Spark Streaming 131
6.1 Spark Streaming整体架构 131
6.1.1 DStream 132
6.1.2 编程接口 133
6.1.3 Streaming WordCount 134
6.2 Spark Streaming执行过程 135
6.2.1 StreamingContext初始化过程 136
6.2.2 数据接收 141
6.2.3 数据处理 146
6.2.4 BlockRDD 155
6.3 窗口操作 158
6.4 容错性分析 159
6.5 Spark Streaming vs.Storm 165
6.5.1 Storm简介 165
6.5.2 Storm和Spark Streaming对比 168
6.6 应用举例 168
6.6.1 搭建Kafka Cluster 168
6.6.2 KafkaWordCount 169
第7章 SQL 173
7.1 SQL语句的通用执行过程分析 175
7.2 SQL On Spark的实现分析 178
7.2.1 SqlParser 178
7.2.2 Analyzer 184
7.2.3 Optimizer 191
7.2.4 SparkPlan 192
7.3 Parquet文件和JSON数据集 196
7.4 Hive简介 197
7.4.1 Hive架构 197
7.4.2 HiveQL On MapReduce执行过程分析 199
7.5 HiveQL On Spark详解 200
7.5.1 Hive On Spark环境搭建 206
7.5.2 编译支持Hadoop 2.x的Spark 211
7.5.3 运行Hive On Spark测试用例 213
第8章 GraphX 215
8.1 GraphX简介 215
8.1.1 主要特点 216
8.1.2 版本演化 216
8.1.3 应用场景 217
8.2 分布式图计算处理技术介绍 218
8.2.1 属性图 218
8.2.2 图数据的存储与分割 219
8.3 Pregel计算模型 220
8.3.1 BSP 220
8.3.2 像顶点一样思考 220
8.4 GraphX图计算框架实现分析 223
8.4.1 基本概念 223
8.4.2 图的加载与构建 226
8.4.3 图数据存储与分割 227
8.4.4 操作接口 228
8.4.5 Pregel在GraphX中的源码实现 230
8.5 PageRank 235
8.5.1 什么是PageRank 235
8.5.2 PageRank核心思想 235
第9章 MLLib 239
9.1 线性回归 239
9.1.1 数据和估计 240
9.1.2 线性回归参数求解方法 240
9.1.3 正则化 245
9.2 线性回归的代码实现 246
9.2.1 简单示例 246
9.2.2 入口函数train 247
9.2.3 最优化算法optimizer 249
9.2.4 权重更新update 256
9.2.5 结果预测predict 257
9.3 分类算法 257
9.3.1 逻辑回归 258
9.3.2 支持向量机 260
9.4 拟牛顿法 261
9.4.1 数学原理 261
9.4.2 代码实现 265
9.5 MLLib与其他应用模块间的整合 268
第四部分 附录 271
附录A Spark源码调试 273
附录B源码阅读技巧 283