深入理解Spark:核心思想与源码分析

深入理解Spark:核心思想与源码分析 PDF 高清版

  • 大小:58.5 MB
  • 类型:Spark
  • 格式:PDF
  • 出版:机械工业出版社
  • 作者:耿嘉安
  • 更新:2020-07-07 09:51:52
vip 立即下载( 58.5 MB )
关注公众号免费下载
版权投诉 / 资源反馈(本资源由用户 聂正初 投稿)

为找资料的网友们整理了Spark相关的资料,由机械工业出版社出版,作者是耿嘉安,介绍了关于Spark、源码分析方面,格式为PDF,资源大小58.5 MB,目前在Spark类资源综合评分为:9.1分。

Spark资源推荐

书籍介绍

《深入理解SPARK:核心思想与源码分析》结合大量图和示例,对Spark的架构、部署模式和工作模块的设计理念、实现源码与使用技巧进行了深入的剖析与解读。

《深入理解SPARK:核心思想与源码分析》一书对Spark1.2.0版本的源代码进行了全面而深入的分析,旨在为Spark的优化、定制和扩展提供原理性的指导。阿里巴巴集团专家鼎力推荐、阿里巴巴资深Java开发和大数据专家撰写。

本书分为三篇:

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

核心设计篇(第3~7章),着重讲解SparkContext的初始化、存储体系、任务提交与执行、计算引擎及部署模式的原理和源码分析。通过这部分的内容,读者可以通过源码剖析更加深入理解Spark的核心设计与实现,以便在实际使用中能够快速解决线上问题并对性能进行调优。

扩展篇(第8~11章),主要讲解基于Spark核心的各种扩展及应用,包括SQL处理引擎、Hive处理、流式计算框架Spark Streaming、图计算框架GraphX、机器学习库MLlib等内容。通过阅读这部分内容,读者可以扩展实际项目中对Spark的应用场景,让Spark焕发活力。

目录

  • 前言
  • 准 备 篇
  • 第1章 环境准备 2
  • 1.1 运行环境准备 2
  • 1.1.1 安装JDK 3
  • 1.1.2 安装Scala 3
  • 1.1.3 安装Spark 4
  • 1.2 Spark初体验 4
  • 1.2.1 运行spark-shell 4
  • 1.2.2 执行word count 5
  • 1.2.3 剖析spark-shell 7
  • 1.3 阅读环境准备 11
  • 1.4 Spark源码编译与调试 13
  • 1.5 小结 17
  • 第2章 Spark设计理念与基本架构 18
  • 2.1 初识Spark 18
  • 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 创建执行环境SparkEnv 30
  • 3.2.1 安全管理器SecurityManager 31
  • 3.2.2 基于Akka的分布式消息系统ActorSystem 31
  • 3.2.3 map任务输出跟踪器mapOutputTracker 32
  • 3.2.4 实例化ShuffleManager 34
  • 3.2.5 shuffle线程内存管理器ShuffleMemoryManager 34
  • 3.2.6 块传输服务BlockTransferService 35
  • 3.2.7 BlockManagerMaster介绍 35
  • 3.2.8 创建块管理器BlockManager 36
  • 3.2.9 创建广播管理器Broadcast-Manager 36
  • 3.2.10 创建缓存管理器CacheManager 37
  • 3.2.11 HTTP文件服务器HttpFile-Server 37
  • 3.2.12 创建测量系统MetricsSystem 39
  • 3.2.13 创建SparkEnv 40
  • 3.3 创建metadataCleaner 41
  • 3.4 SparkUI详解 42
  • 3.4.1 listenerBus详解 43
  • 3.4.2 构造JobProgressListener 46
  • 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 Executor环境变量 54
  • 3.6 创建任务调度器TaskScheduler 55
  • 3.6.1 创建TaskSchedulerImpl 55
  • 3.6.2 TaskSchedulerImpl的初始化 57
  • 3.7 创建和启动DAGScheduler 57
  • 3.8 TaskScheduler的启动 60
  • 3.8.1 创建LocalActor 60
  • 3.8.2 ExecutorSource的创建与注册 62
  • 3.8.3 ExecutorActor的构建与注册 64
  • 3.8.4 Spark自身ClassLoader的创建 64
  • 3.8.5 启动Executor的心跳线程 66
  • 3.9 启动测量系统MetricsSystem 69
  • 3.9.1 注册Sources 70
  • 3.9.2 注册Sinks 70
  • 3.9.3 给Sinks增加Jetty的Servlet-ContextHandler 71
  • 3.10 创建和启动ExecutorAllocation-Manager 72
  • 3.11 ContextCleaner的创建与启动 73
  • 3.12 Spark环境更新 74
  • 3.13 创建DAGSchedulerSource和BlockManagerSource 76
  • 3.14 将SparkContext标记为激活 77
  • 3.15 小结 78
  • 第4章 存储体系 79
  • 4.1 存储体系概述 79
  • 4.1.1 块管理器BlockManager的实现 79
  • 4.1.2 Spark存储体系架构 81
  • 4.2 shuffle服务与客户端 83
  • 4.2.1 Block的RPC服务 84
  • 4.2.2 构造传输上下文Transpor-tContext 85
  • 4.2.3 RPC客户端工厂Transport-ClientFactory 86
  • 4.2.4 Netty服务器TransportServer 87
  • 4.2.5 获取远程shuffle文件 88
  • 4.2.6 上传shuffle文件 89
  • 4.3 BlockManagerMaster对Block-Manager的管理 90
  • 4.3.1 BlockManagerMasterActor 90
  • 4.3.2 询问Driver并获取回复方法 92
  • 4.3.3 向BlockManagerMaster注册BlockManagerId 93
  • 4.4 磁盘块管理器DiskBlockManager 94
  • 4.4.1 DiskBlockManager的构造过程 94
  • 4.4.2 获取磁盘文件方法getFile 96
  • 4.4.3 创建临时Block方法create-TempShuffleBlock 96
  • 4.5 磁盘存储DiskStore 97
  • 4.5.1 NIO读取方法getBytes 97
  • 4.5.2 NIO写入方法putBytes 98
  • 4.5.3 数组写入方法putArray 98
  • 4.5.4 Iterator写入方法putIterator 98
  • 4.6 内存存储MemoryStore 99
  • 4.6.1 数据存储方法putBytes 101
  • 4.6.2 Iterator写入方法putIterator详解 101
  • 4.6.3 安全展开方法unrollSafely 102
  • 4.6.4 确认空闲内存方法ensureFreeSpace 105
  • 4.6.5 内存写入方法putArray 107
  • 4.6.6 尝试写入内存方法tryToPut 108
  • 4.6.7 获取内存数据方法getBytes 109
  • 4.6.8 获取数据方法getValues 110
  • 4.7 Tachyon存储TachyonStore 110
  • 4.7.1 Tachyon简介 111
  • 4.7.2 TachyonStore的使用 112
  • 4.7.3 写入Tachyon内存的方法putIntoTachyonStore 113
  • 4.7.4 获取序列化数据方法getBytes 113
  • 4.8 块管理器BlockManager 114
  • 4.8.1 移出内存方法dropFrom-Memory 114
  • 4.8.2 状态报告方法reportBlockStatus 116
  • 4.8.3 单对象块写入方法putSingle 117
  • 4.8.4 序列化字节块写入方法putBytes 118
  • 4.8.5 数据写入方法doPut 118
  • 4.8.6 数据块备份方法replicate 121
  • 4.8.7 创建DiskBlockObjectWriter的方法getDiskWriter 125
  • 4.8.8 获取本地Block数据方法getBlockData 125
  • 4.8.9 获取本地shuffle数据方法doGetLocal 126
  • 4.8.10 获取远程Block数据方法doGetRemote 127
  • 4.8.11 获取Block数据方法get 128
  • 4.8.12 数据流序列化方法dataSerializeStream 129
  • 4.9 metadataCleaner和broadcastCleaner 129
  • 4.10 缓存管理器CacheManager 130
  • 4.11 压缩算法 133
  • 4.12 磁盘写入实现DiskBlockObjectWriter 133
  • 4.13 块索引shuffle管理器IndexShuffleBlockManager 135
  • 4.14 shuffle内存管理器ShuffleMemoryManager 137
  • 4.15 小结 138
  • 第5章 任务提交与执行 139
  • 5.1 任务概述 139
  • 5.2 广播Hadoop的配置信息 142
  • 5.3 RDD转换及DAG构建 144
  • 5.3.1 为什么需要RDD 144
  • 5.3.2 RDD实现分析 146
  • 5.4 任务提交 152
  • 5.4.1 任务提交的准备 152
  • 5.4.2 finalStage的创建与Stage的划分 157
  • 5.4.3 创建Job 163
  • 5.4.4 提交Stage 164
  • 5.4.5 提交Task 165
  • 5.5 执行任务 176
  • 5.5.1 状态更新 176
  • 5.5.2 任务还原 177
  • 5.5.3 任务运行 178
  • 5.6 任务执行后续处理 179
  • 5.6.1 计量统计与执行结果序列化 179
  • 5.6.2 内存回收 180
  • 5.6.3 执行结果处理 181
  • 5.7 小结 187
  • 第6章 计算引擎 188
  • 6.1 迭代计算 188
  • 6.2 什么是shuffle 192
  • 6.3 map端计算结果缓存处理 194
  • 6.3.1 map端计算结果缓存聚合 195
  • 6.3.2 map端计算结果简单缓存 200
  • 6.3.3 容量限制 201
  • 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 划分本地与远程Block 215
  • 6.5.3 获取远程Block 217
  • 6.5.4 获取本地Block 218
  • 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
  • 6.7.2 在map端简单缓存、排序分组,在reduce端合并组合 222
  • 6.7.3 在map端缓存中聚合、排序分组,在reduce端组合 222
  • 6.8 小结 223
  • 第7章 部署模式 224
  • 7.1 local部署模式 225
  • 7.2 local-cluster部署模式 225
  • 7.2.1 LocalSparkCluster的启动 226
  • 7.2.2 CoarseGrainedSchedulerBackend的启动 236
  • 7.2.3 启动AppClient 237
  • 7.2.4 资源调度 242
  • 7.2.5 local-cluster模式的任务执行 253
  • 7.3 Standalone部署模式 255
  • 7.3.1 启动Standalone模式 255
  • 7.3.2 启动Master分析 257
  • 7.3.3 启动Worker分析 259
  • 7.3.4 启动Driver Application分析 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 YARN 277
  • 7.5.2 Mesos 280
  • 7.6 小结 282
  • 扩 展 篇
  • 第8章 Spark SQL 284
  • 8.1 Spark SQL总体设计 284
  • 8.1.1 传统关系型数据库SQL运行原理 285
  • 8.1.2 Spark SQL运行架构 286
  • 8.2 字典表Catalog 288
  • 8.3 Tree和TreeNode 289
  • 8.4 词法解析器Parser的设计与实现 293
  • 8.4.1 SQL语句解析的入口 294
  • 8.4.2 建表语句解析器DDLParser 295
  • 8.4.3 SQL语句解析器SqlParser 296
  • 8.4.4 Spark代理解析器SparkSQLParser 299
  • 8.5 Rule和RuleExecutor 300
  • 8.6 Analyzer与Optimizer的设计与实现 302
  • 8.6.1 语法分析器Analyzer 304
  • 8.6.2 优化器Optimizer 305
  • 8.7 生成物理执行计划 306
  • 8.8 执行物理执行计划 308
  • 8.9 Hive 311
  • 8.9.1 Hive SQL语法解析器 311
  • 8.9.2 Hive SQL元数据分析 313
  • 8.9.3 Hive SQL物理执行计划 314
  • 8.10 应用举例:JavaSparkSQL 314
  • 8.11 小结 320
  • 第9章 流式计算 321
  • 9.1 Spark Streaming总体设计 321
  • 9.2 StreamingContext初始化 323
  • 9.3 输入流接收器规范Receiver 324
  • 9.4 数据流抽象DStream 325
  • 9.4.1 Dstream的离散化 326
  • 9.4.2 数据源输入流InputDStream 327
  • 9.4.3 Dstream转换及构建DStream Graph 329
  • 9.5 流式计算执行过程分析 330
  • 9.5.1 流式计算例子CustomReceiver 331
  • 9.5.2 Spark Streaming执行环境构建 335
  • 9.5.3 任务生成过程 347
  • 9.6 窗口操作 355
  • 9.7 应用举例 357
  • 9.7.1 安装mosquitto 358
  • 9.7.2 启动mosquitto 358
  • 9.7.3 MQTTWordCount 359
  • 9.8 小结 361
  • 第10章 图计算 362
  • 10.1 Spark GraphX总体设计 362
  • 10.1.1 图计算模型 363
  • 10.1.2 属性图 365
  • 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 API 371
  • 10.3.1 Dijkstra算法 373
  • 10.3.2 Dijkstra的实现 376
  • 10.4 Graph的构建 377
  • 10.4.1 从边的列表加载Graph 377
  • 10.4.2 在Graph中创建图的方法 377
  • 10.5 顶点集合抽象VertexRDD 378
  • 10.6 边集合抽象EdgeRDD 379
  • 10.7 图分割 380
  • 10.8 常用算法 382
  • 10.8.1 网页排名 382
  • 10.8.2 Connected Components的应用 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
  • 11.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
  • 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-means 420
  • 11.12.2高斯混合 422
  • 11.12.3快速迭代聚类 422
  • 11.12.4latent Dirichlet allocation 422
  • 11.12.5流式K-means 423
  • 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.6Hadamard积 429
  • 11.15频繁模式挖掘 429
  • 11.16预言模型标记语言 430
  • 11.17管道 431
  • 11.17.1管道工作原理 432
  • 11.17.2管道API介绍 433
  • 11.17.3交叉验证 435
  • 11.18小结 436
  • 附录A Utils 437
  • 附录B Akka 446
  • 附录C Jetty 450
  • 附录D Metrics 453
  • 附录E Hadoop word count 456
  • 附录F CommandUtils 458
  • 附录G Netty 461
  • 附录H 源码编译错误 465

以上就是本次关于书籍资源的介绍和部分内容,我们还整理了以往更新的其它相关电子书资源内容,可以在下方直接下载,关于相关的资源我们在下方做了关联展示,需要的朋友们也可以参考下。

Spark相关资源

  • Spark大数据分析技术与实战

    Spark大数据分析技术与实战

    大数据技术新手阅读; 做为高等学校计算机相关技术专业的研究生学习参考文献; 全部想要对大数据技术有一定的掌握并要想将大数据技术运用于做好本职工作的阅读者阅读。 Spark做为下一代

    大小:145 MBSpark电子书

  • Hadoop+Spark生态系统操作与实战指南

    Hadoop+Spark生态系统操作与实战指南

    本书帮助读者快速上手Hadoop+Spark,全面解析Hadoop和Spark生态系统,通过实际操作,快速学习Hadoop+Spark大数据技术,使得读者了解当今互联网应用极为广泛的集群技术

    大小:114.9 MBHadoop电子书

  • 大数据Spark企业级实战

    大数据Spark企业级实战

    Spark是现如今互联网大数据行业最活跃性、最受欢迎、最高效率的互联网大数据通用性测算服务平台,是Apache手机软件慈善基金会下全部开源网站项目中几大*开源网站项目之首。 在OneStacktoru

    大小:139.6 MBSpark电子书

  • Spark高级数据分析

    Spark高级数据分析

    Spark高级数据分析 是使用Spark进行大规模数据分析的实战宝典,由大数据公司Cloudera的数据科学家撰写。四位作者首先结合数据科学和大数据分析的广阔背景讲解了Spark,然后介绍了用Spark和Sc

    大小:7.2 MBSpark电子书

  • Spark MLlib机器学习:算法、源码及实战详解

    Spark MLlib机器学习:算法、源码及实战详解

    《Spark MLlib机器学习:算法、源码及实战详解》以Spark 1.4.1版本源码为切入点,全面并且深入地解析Spark MLlib模块,着力于探索分布式机器学习的底层实现。 《Spark MLlib机器学习:算法、源码及

    大小:69.9 MB机器学习电子书

  • Spark技术内幕:深入解析Spark内核架构设计与实现原理

    Spark技术内幕:深入解析Spark内核架构设计与实现原理

    Spark是不断壮大的大数据分析解决方案家族中备受关注的新增成员。它不仅为分布式数据集的处理提供一个有效框架,而且以高效的方式处理分布式数据集。它支持实时处理、流处理和批处理,

    大小:30.6 MBSpark电子书

  • Spark大数据分析:核心概念、技术及实践

    Spark大数据分析:核心概念、技术及实践

    Spark大数据分析:核心概念、技术及实践 是关于大数据和Spark的一个简明手册。它将助你学习如何用Spark来完成很多大数据分析任务,其中覆盖了高效利用Spark所需要知道的重要主题:如何使用

    大小:88.3 MBSpark电子书

资源下载

Spark学习笔记

3小时23分钟前回答

Spark Streaming算子开发代码讲解

Spark Streaming算子开发实例 transform算子开发 transform操作应用在DStream上时,可以用于执行任意的RDD到RDD的转换操作,还可以用于实现DStream API中所没有提供的操作,比如说,DStreamAPI中并没有提供将一个DStream中的每个batch,与一个特定的RDD进行join的操作,DStream中的join算子只能join其他DStream,但是我们自己就可以使用transform操作来实现该功能。 实例:黑名单用户实时过滤 package Strea……

22小时1分钟前回答

pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例

代码如下,步骤流程在代码注释中可见: # -*- coding: utf-8 -*-import pandas as pdfrom pyspark.sql import SparkSessionfrom pyspark.sql import SQLContextfrom pyspark import SparkContext #初始化数据 #初始化pandas DataFramedf = pd.DataFrame([[1, 2, 3], [4, 5, 6]], index=['row1', 'row2'], columns=['c1', 'c2', 'c3']) #打印数据print df #初始化spark DataFramesc = SparkContext()if __name__ == "__main__": spark = SparkSession\ .builder\ .appName("testDataFrame")\ .getOrCreat……