深入理解spark核心思想及源码分析pdf完整版|百度网盘下载

编辑点评:深入理解spark核心思想及源码分析pdf

本书对 Spark 源代码进行了全面深入的分析,旨在为优化、定制和扩展 Spark 提供原则性指导。阿里巴巴集团专家极力推荐,由阿里巴巴资深Java开发人员和大数据专家撰写,Spark以其先进的设计理念迅速成为社区热门项目

相关内容部分预览

书籍介绍

本书对 Spark 源代码进行了全面深入的分析,旨在为优化、定制和扩展 Spark 提供原则性指导。阿里巴巴集团专家强烈推荐,由阿里巴巴资深Java开发人员和大数据专家撰写。

本书对Spark的核心模块、部署和协作模块的实现原理和使用技巧进行了深入的分析和解读。

本书分为三个部分:

准备(第1-2章),介绍Spark的环境搭建、设计理念和基本架构,帮助读者了解一些背景知识。

核心设计(第3-7章),重点介绍SparkContext初始化、存储系统、任务提交与执行、计算引擎与部署模式原理及源码分析。通过本节的内容,

读者可以通过源码分析更深入地了解Spark的核心设计和实现,从而在实际使用中快速解决线上问题并调优性能。

Extensions(第8-11章),主要讲解基于Spark核心的各种扩展和应用,包括SQL处理引擎、Hive处理、流计算框架Spark Streaming、图计算框架GraphX,

机器学习库MLlib等。通过阅读本部分,读者可以拓展Spark在实际项目中的应用场景,让Spark焕发新生。

图书目录

目录
前言
准备工作
第一章环境准备2
1.1运行环境准备2
1.1.1安装JDK3
1.1.2安装Scala3
1.1. 3 安装Spark4
1.2 Spark初体验4
1.2.1 运行spark-shell4
1.2.2 执行字数5
1.2.3 分析spark-shell7
1.3 读取环境准备11
1.4 Spark源码编译与调试13
1.5总结17
第2章Spark设计理念及基本架构18
2.1初识Spark18
2.1.1 Hadoop MRv1的局限性18
2.1 .2 Spark 使用场景 20
2.1.3 Spark 特性 20
2.2 Spark 基础知识 20
2.3 Spark 基本设计思路 22
2.3.1 Spark 模块设计 22
2.3.2 Spark 模型设计24
2.4 Spark 基本架构 25
2.5 总结 26
核心设计
第 3 章 SparkContext 初始化 28
3.1 SparkContext 概述 28
3.2 创建执行环境 SparkEnv30
3.2.1 安全Manager SecurityManager31
3.2.2 Akka-基于分布式消息系统 ActorSystem31
3.2.3 映射任务输出跟踪器 mapOutputTracker32
3.2.4 实例化 ShuffleManager34
3.2.5 Shuffle 线程内存管理器 ShuffleMemoryManager34
3.2.6 块传输服务 BlockTransferService35
3.2. 7 BlockManagerMaster35 简介
3.2.8 创建块管理器 BlockManager36
3.2.9 创建广播管理器 Broadcast-Manager36< br>3.2.10 创建缓存管理器 CacheManager37
3.2.11 HTTP 文件服务器 HttpFile-Server37
3.2.12 创建测量系统 MetricsSystem39
3.2.13 创建 SparkEnv40
3.3 创建 metadataCleaner41
3.4 SparkUI 详细 42
3.4.1 listenerBus 详细 43
3.4.2 构造 JobProgressListener46
3.4 .3 SparkUI的创建和初始化 47
3.4.4 Spark UI页面布局和显示 49
3.4.5 SparkUI启动 54
3.5 Hadoop相关配置和Executor环境变量 54
3.5.1 Hadoop相关配置资料 54
3.5.2 执行器环境变量 54
3.6创建任务调度器 TaskScheduler55
3.6.1 创建 TaskSchedulerImpl55
3.6.2 初始化 TaskSchedulerImpl 57
3.7 创建并启动 DAGScheduler57
3.8 启动 TaskScheduler 60
3.8.1 创建 LocalActor60
3.8 .2 ExecutorSource 62的创建和注册
3.8.3 ExecutorActor 64的构建和注册
3.8.4 Spark自己的ClassLoader的创建64
3.8.5 启动Executor的心跳线程66
3.9 启动测量系统MetricsSystem69
3.9.1 注册 Sources70
3.9.2 注册 Sinks70
3.9.3 将 Jetty 的 Servlet-ContextHandler71 添加到 Sinks
3.10 创建并启动 ExecutorAllocation-Manager72
3.11 ContextCleaner 创建和启动 73< br>3.12 Spark 环境更新 74
3.13 创建 DAGSchedulerSource 和 BlockManagerSource76
3.14 标记 SparkContext Active77
3.15 总结 78
第 4 章存储架构 79
4.1 存储架构概述 79
4.1.1块管理器 BlockManager 的实现 79
4.1.2 Spark Storage A架构 81
4.2 Shuffle 服务和客户端 83
4.2.1 Block 的 RPC 服务 84
4.2 .2 构造传输上下文 Tran sport-tContext85
4.2.3 RPC 客户端工厂 Transport-ClientFactory86
4.2.4 Netty 服务器 TransportServer87
4.2.5 获取远程 shuffle 文件 88
4.2.6 上传 shuffle 文件 89
4.3 BlockManagerMaster 对 Block-Manager90 的管理
4.3.1 BlockManagerMasterActor90
4.3.2询问Driver并获得回复方法92
4.3.3 向BlockManagerMaster注册BlockManagerId93
4.4 磁盘块管理器DiskBlockManager94
4.4.1 DiskBlockManager 94的构造过程
4.4.2 获取磁盘文件方法getFile96
4.4.3 创建临时 Block 方法 create-TempShuffleBlock96
4.5 磁盘存储 DiskStore97
4.5.1 NIO 读取方法 getBytes97
4.5.2 NIO 写入方法 putBytes98
4.5.3 数组写入方法 putArray98
4.5.4 迭代器写入方法 putIterator98
4.6 内存存储 MemoryStore99
4.6.1 数据存储方法 putBytes101
4.6.2 It erator 写入方法 putIterator 详情 101
4.6.3 安全展开方法 unrollSafely102
4.6.4 确认空闲内存方法 ensureFreeSpace105
4.6.5 内存写入方法 putArray107
4.6. 6 尝试写入内存方法 tryToPut108
4.6.7 获取内存数据方法 getBytes109
4.6.8 获取数据方法 getValues110
4.7 Tachyon store TachyonStore110
4.7.1 Tachyon 111介绍
4.7 .2 TachyonStore 112的使用
4.7.3 Tachyon内存写入方法putIntoTachyonStore113
4.7.4 序列化数据getBytes113的获取方法
4.8 Block Manager BlockManager114
4.8.1 从内存中取出方法 dropFrom-Memory114
4.8.2 状态报告方法 reportBlockStatus116
4.8.3 单对象块写入方法 putSingle117
4.8.4 序列化字节块写入方法 putBytes118
4.8.5 数据写入方法 doPut118
4.8.6 数据块备份方法replicate121
4.8.7 创建DiskBlockObjectWriter 方法getDiskWriter125
4.8.8 获取本地块数据方法getBlockData125
4.8.9 获取本地shuffle 数据方法doGetLocal126
4.8.10 获取远程 Block 数据方法 doGetRemote127
4.8.11 获取 Block 数据方法 get128
4.8.12 数据流系列alization 方法 dataSerializeStream129< br>4.9 metadataCleaner 和 broadcastCleaner129
4.10 缓存管理器 CacheManager130
4.11 压缩算法 133
4.12 磁盘写入实现 DiskBlockObjectWriter133
4.13 块索引 Shuffle Manager IndexShuffleBlockManager135
4.14 Shuffle Memory Manager ShuffleMemoryManager137 br>4.15 总结 138
第五章 任务提交与执行 139
5.1 任务概述 139
5.2 广播Hadoop配置信息 142
5.3 RDD转换与DAG构建 144
5.3.1 为什么需要RDD144
5.3.2 RDD 实现分析 146
5.4 任务提交 152
5.4.1 任务提交准备 152
5.4.2 FinalStage 创建和阶段划分 157
5.4.3 创建Job163
5.4.4 提交 Stage164
5.4.5 提交 Task165
5.5 执行任务 176
5.5.1 状态更新 176
5.5.2 任务恢复 177
5.5.3 任务运行 178
5.6 任务执行的后续处理 179
5.6.1 度量统计和执行结果lt 序列化 179
5.6.2 内存回收 180
5.6.3 执行结果处理 181
5.7 总结 187
第六章计算引擎 188
6.1 迭代计算 188
6.2 什么是shuffle192
6.3 Map 端计算结果缓存处理 194
6.3.1 Map 端计算结果缓存聚合 195
6.3.2 Map 端计算结果简单缓存 200
6.3.3 容量限制 201< br>6.4 Map 端计算结果持久性 204
6.4.1 溢出分区文件 205
6.4.2 排序和分区分组 207
6.4. 3 分区索引文件 209
6.5 reduce端读取中间计算结果 210
6.5.1 获取map任务状态 213
6.5.2 划分本地和远程Block215
6.5.3 获取远程Block217
6.5.4 获取本地block218
6.6 Reduce端计算219
6.6.1 如何同时处理多个map任务的中间结果219
6.6.2 reduce端对缓存中的中间计算结果进行聚合和求和排序 220
6.7 Map 端和 reduce 端组合分析 221
6.7.1 map 端溢出分区文件,reduce 端合并和组合 221< br>6.7.2 map 端的简单缓存、排序和分组,reduce 端的分组 End-merge 和组合 222
6.7.3 map 端缓存中的聚合和排序组,并在 reduce 上组合-side 222
6.8 总结 223
第 7 章部署模式 224
7.1 本地部署模式 225
7.2 本地集群部署模式 225
7.2.1 S LocalSparkCluster 226 的启动
7.2.2 CoarseGrainedSchedulerBackend 236 的启动
7.2.3 启动 AppClient237
7.2.4 资源调度 242
7.2. 5 本地集群模式下的任务执行 253
7.3 单机部署模式 255
7.3.1 启动单机模式 255
7.3.2 启动 Master 分析 257
7.3.3 启动 Worker 分析 259
7.3.4 启动 Driver A 应用分析 261
7.3.5 Standalone模式下的任务执行 263
7.3.6 资源回收 263
7.4 容错机制 266
7.4.1 Executor异常退出 266
7.4.2 Worker 异常退出 268
7.4.3 Master 异常退出 269
7.5 其他部署方案 276
7.5.1 YARN277
7.5.2 Mesos280
7.6 总结282
扩展
第8章 Spark SQL284
8.1 Spark SQL整体设计284
8.1.1传统关系型数据库SQL操作原理285
8.1.2 Spark SQL操作架构286
8.2字典表目录288
8.3 Tree 和 TreeNode289
8.4 词法解析器 Parser 的设计与实现 293
8.4.1 SQL 语句解析入口 294
8.4.2 建表语句解析器 DDLParser295
8.4.3方位L 语句解析器 SqlParser296
8.4.4 Spark 代理解析器 SparkSQLParser299
8.5 Rule 和 RuleExecutor300
8.6 Analyzer 和 Optimizer 302 的设计与实现
8.6.1 Syntax Analyzer304
8.6.2 Optimizer Optimizer305
br> 8.7 生成物理执行计划 306
8.8 执行物理执行计划 308
8.9 Hive311
8.9.1 Hive SQL Parser 311
8.9.2 Hive SQL 元数据分析 313
8.9.3 Hive SQL 物理执行计划 314
8.10 应用示例:JavaSparkSQL314
8.11 总结 320
第 9 章流计算 321
9.1 Spark Streaming 总体设计 321
9.2 StreamingContext 初始化 323
9.3 输入流接收器规范 Receiver324
9.4 数据流抽象 DStream325
9.4.1 Dstream 326 离散化
9.4.2 数据源输入流 InputDStream327
9.4.3 Dstream 转换并构建 DStream Graph329
9.5 流计算执行流程分析 330
9.5.1 流计算示例 CustomReceiver331
9.5 .2 Spark Streaming 执行环境搭建 335
9.5.3 任务生成过程 347
9.6 窗口操作 355
9.7 应用示例 357
9.7.1 安装mosquitto358
9.7.2 启动mosquitto358
9.7.3 MQTTWordCount359
9.8总结361
第10章图计算362
10.1 Spark GraphX整体设计362
10.1.1图计算模型363
10.1.2属性图365< br>10.1.3 GraphX类继承系统367
10.2图操作368
10.2.1属性操作368
10.2.2结构操作368
10.2.3连接操作369
10.2 .4 聚合操作 370
10.3 Pregel API371
10.3.1 Dijkstra 算法 373
10.3.2 Dijkstra 实现 376
10.4 图构造 377
10.4.1 从边列表加载图377
10.4.2 在图中创建图的方法 377
10.5 顶点集合抽象 VertexRDD378
10.6 边集抽象 EdgeRDD379
10.7 图分割 380
10.8 常用算法 38 2
10.8.1 页面排名 382
10.8.2 连通分量的应用 386
10.8.3 三角关系统计 388
10.9 应用实例 390
10.10 总结 391
第 11 章机器学习 392
11.1 机器学习简介 392
11.2 Spark MLlib 总体设计 394
11.3 数据类型 394
11.3.1 局部向量 394
11.3.2 标记 395
11.3. 3 局部矩阵 396
11.3.4 分布矩阵 396
11.4 基本统计 398
11.4.1 汇总统计 398
11.4.2 相关统计 399
11.4.3 分层抽样 401
11.4.4 假设检验 401
1 1.4.5 随机数生成 402
11.5 分类和回归 405
11.5.1 数学公式 405
11.5.2 线性回归 407
11.5.3 分类407
11.5.4 回归 410
11.6 决策树 411
11.6.1 基本算法 411
11.6.2 使用示例 412
11.7 随机森林 413
11.7.1 基本算法 414
11.7.2 使用示例 414< br>11.8 渐变提升决策树 415
11.8.1 基本算法 415
11.8.2 使用示例 416
11.9 朴素贝叶斯 416
11.9.1 算法原理 416
11.9.2 使用示例 418
11.10 保序回归 418
11.10.1 算法原理 418
11.10.2 使用示例 419
11.11 协同过滤 419
11.12 聚类 420
11.12.1K-means420
11.12.2高斯混合 422
11.12.3 快速迭代聚类 422
11.12.4潜在狄利克雷分配 422
11.12.5 流式 K-means423
11.13 降维 424
11.13.1 奇异值分解 424
11.13.2 主成分分析 425
11.14 特征提取与变换 425
11.14.1 词频反演 425
11.14.2 词向量变换 426
11.14.3 标准尺度 427
11.14 .4 归一化尺度 428
11.14.5 卡方特征选择器 428
11.14.6 Hadamard 乘积 429
11.15 频繁模式挖掘 429
11.16 预测模型标记语言 430
11.17 管道es 431
11.17.1 管道如何工作 432
11.17.2 管道简介 API 433
11.17.3 交叉验证 435
11.18 总结 436
附录 A Utils437
附录 B Akka446
附录 C Jetty450
附录 D Metrics453
附录 E Hadoop 字数统计456
附录 F CommandUtils458
附录 G Netty461
附录 H 源代码编译错误 465

阅读剩余
THE END