所有分类
  • 所有分类
  • 机械工业
  • 人民邮电
  • 清华大学
  • 电子工业

Spark核心源码分析与开发实战

Spark核心源码分析与开发实战插图

Spark核心源码分析与开发实战封面

本书是一本全面介绍Spark以及Spark生态系统相关技术的书籍。主要内容包括Spark系统概述、Spark安装和集群的部署、RDD的编程实践、Spark的运行模式、Spark的运行机制以及Spark的四大子框架(Spark SQL、Spark Streaming、Spark GraphX、MLlib)的详细讲解。本书通过理论和实践相结合的方式对Spark的核心框架和生态圈做了详细的解读,不仅对Spark的原理进行详细阐述,还结合Spark的源码和案例操作展示了Spark框架的所具有的优雅和丰富的表现力。本书适合大数据从业者、Spark技术爱好者阅读。相信通过学习本书,读者能够熟悉和掌握Spark这一当前流行的大数据计算框架,并将其投入到实践中去。

目 录
前言
第 1章 Spark系统概述 ………………………………………………………………………… 1
1.1 Spark是什么…………………………………………………………………………… 2
1.2 Spark生态系统 BDAS………………………………………………………………… 5
1.2.1 SparkCore………………………………………………………………………… 5
1.2.2 SparkSQL………………………………………………………………………… 6
1.2.3 SparkStreaming…………………………………………………………………… 6
1.2.4 SparkGraphX……………………………………………………………………… 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 通过 SparkShell测试 Spark集群 ………………………………………………… 27
思考题 ……………………………………………………………………………………… 29
第 3章 SparkRDD与 SparkAPI编程实践………………………………………………… 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 SparkShell下的 SparkAPI编程实践 ……………………………………………… 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 基于 IntelliJIDEA使用 SparkAPI开发应用程序 ………………………………… 54
3.4.1 搭建和设置 IntelliJIDEA开发环境 ……………………………………………… 55
3.4.2 在 IntelliJIDEA下开发并部署 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 Yarn-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 SparkApplication提交…………………………………………………………… 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章 SparkSQL ………………………………………………………………………… 223
6.1 SparkSQL原理和实现……………………………………………………………… 224
6.1.1 SparkSQL简介 ………………………………………………………………… 224
6.1.2 SparkSQL运行架构 …………………………………………………………… 225
6.1.3 Hive在 Spark上的使用 ………………………………………………………… 229
6.1.4 源码解析 SQL语句和 HiveQL语句的执行过程…………………………………… 232
6.2 SparkSQL的操作实例……………………………………………………………… 251
6.2.1 文本文件操作以及 DSL操作 …………………………………………………… 251
6.2.2 Parquet文件以及 JSON文件操作………………………………………………… 255
6.2.3 Hive数据操作演示 (订单交易数据操作) ……………………………………… 258
6.2.4 SparkSQL处理交通数据实战 …………………………………………………… 268

思考题……………………………………………………………………………………… 272
第 7章 SparkStreaming …………………………………………………………………… 273
7.1 SparkStreaming运行原理 ………………………………………………………… 274
7.1.1 SparkStreaming简介 …………………………………………………………… 274
7.1.2 编程模型 DStream ……………………………………………………………… 275
7.1.3 容错和持久化 ………………………………………………………………… 283
7.1.4 性能调优 ……………………………………………………………………… 285
7.1.5 监控应用 ……………………………………………………………………… 287
7.2 源码解析 SparkStreaming的运行过程 …………………………………………… 288
7.2.1 StreamingContext初始化并启动 ………………………………………………… 289
7.2.2 数据接收 ……………………………………………………………………… 296
7.2.3 数据处理 ……………………………………………………………………… 307
7.3 SparkStreaming操作实例演示 …………………………………………………… 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章 SparkGraphX ……………………………………………………………………… 343
8.1 图的定义和应用 …………………………………………………………………… 344
8.1.1 图的定义 ……………………………………………………………………… 344
8.1.2 图的应用 ……………………………………………………………………… 345
8.2 SparkGraphX简介 ………………………………………………………………… 346
8.2.1 弹性分布式属性图 ……………………………………………………………… 346
8.2.2 SparkGraphX图的切分和存储策略 ……………………………………………… 348
8.2.3 SparkGraphX图的操作 ………………………………………………………… 350
8.3 SparkGraphX架构 ………………………………………………………………… 358
8.3.1 Pregel图计算框架 ……………………………………………………………… 359
8.3.2 SparkGraphX的实现 …………………………………………………………… 363
8.3.3 SparkGraphX图算法的实现方法 ………………………………………………… 369
8.4 SparkGraphX图操作实例 ………………………………………………………… 373
8.4.1 基于 SparkGraphX的属性图的操作实例 ………………………………………… 373
8.4.2 SparkGraphX图算法操作实例…………………………………………………… 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
思考题……………………………………………………………………………………… 43

0

评论0

请先

显示验证码
没有账号? 注册  忘记密码?

社交账号快速登录

微信扫一扫关注
如已关注,请回复“登录”二字获取验证码