//
《深入理解Spark:核心思想与源码分析》 PDF 下载_Java知识分享网-免费Java资源下载
http://www.java1234.com/a/javabook/javaweb/2016/0521/6137.html
图书简介:本书对Spark源代码进行了全面而深入的分析,旨在为Spark的优化、定制和扩展提供原理性的指导。阿里巴巴集团专家鼎力推荐,阿里巴巴资深Java开发和大数据专家撰写。本书对Spark的核心模块、部署和协作模块的实现原理与使用技巧进行了深入的剖析与解读。
本书分为三篇:
准备篇(第1~2章),介绍了Spark的环境搭建、设计理念与基本架构,帮助读者了解一些背景知识。
核心设计篇(第3~7章),着重讲解SparkContext的初始化、存储体系、任务提交与执行、计算引擎及部署模式的原理和源码分析。通过这部分的内容,读者可以通过源码剖析更加深入理解Spark的核心设计与实现,以便在实际使用中能够快速解决线上问题并对性能进行调优。
扩展篇(第8~11章),主要讲解基于Spark核心的各种扩展及应用,包括SQL处理引擎、Hive处理、流式计算框架Spark Streaming、图计算框架GraphX、机器学习库MLlib等内容。通过阅读这部分内容,读者可以扩展实际项目中对Spark的应用场景,让Spark焕发活力。
相关截图:
图书目录:Contents 目录前言准 备 篇第1章 环境准备21.1 运行环境准备21.1.1 安装JDK31.1.2 安装Scala31.1.3 安装Spark41.2 Spark初体验41.2.1 运行spark-shell41.2.2 执行word count51.2.3 剖析spark-shell71.3 阅读环境准备111.4 Spark源码编译与调试131.5 小结17第2章 Spark设计理念与基本架构182.1 初识Spark182.1.1 Hadoop MRv1的局限182.1.2 Spark使用场景202.1.3 Spark的特点202.2 Spark基础知识202.3 Spark基本设计思想222.3.1 Spark模块设计222.3.2 Spark模型设计242.4 Spark基本架构252.5 小结26核心设计篇第3章 SparkContext的初始化283.1 SparkContext概述283.2 创建执行环境SparkEnv303.2.1 安全管理器SecurityManager313.2.2 基于Akka的分布式消息系统ActorSystem313.2.3 map任务输出跟踪器mapOutputTracker323.2.4 实例化ShuffleManager343.2.5 shuffle线程内存管理器ShuffleMemoryManager343.2.6 块传输服务BlockTransferService353.2.7 BlockManagerMaster介绍353.2.8 创建块管理器BlockManager363.2.9 创建广播管理器Broadcast-Manager363.2.10 创建缓存管理器CacheManager373.2.11 HTTP文件服务器HttpFile-Server373.2.12 创建测量系统MetricsSystem393.2.13 创建SparkEnv403.3 创建metadataCleaner413.4 SparkUI详解423.4.1 listenerBus详解433.4.2 构造JobProgressListener463.4.3 SparkUI的创建与初始化473.4.4 Spark UI的页面布局与展示493.4.5 SparkUI的启动543.5 Hadoop相关配置及Executor环境变量543.5.1 Hadoop相关配置信息543.5.2 Executor环境变量543.6 创建任务调度器TaskScheduler553.6.1 创建TaskSchedulerImpl553.6.2 TaskSchedulerImpl的初始化573.7 创建和启动DAGScheduler573.8 TaskScheduler的启动603.8.1 创建LocalActor603.8.2 ExecutorSource的创建与注册623.8.3 ExecutorActor的构建与注册643.8.4 Spark自身ClassLoader的创建643.8.5 启动Executor的心跳线程663.9 启动测量系统MetricsSystem693.9.1 注册Sources703.9.2 注册Sinks703.9.3 给Sinks增加Jetty的Servlet-ContextHandler713.10 创建和启动ExecutorAllocation-Manager723.11 ContextCleaner的创建与启动733.12 Spark环境更新743.13 创建DAGSchedulerSource和BlockManagerSource763.14 将SparkContext标记为激活773.15 小结78第4章 存储体系794.1 存储体系概述794.1.1 块管理器BlockManager的实现794.1.2 Spark存储体系架构814.2 shuffle服务与客户端834.2.1 Block的RPC服务844.2.2 构造传输上下文Transpor-tContext854.2.3 RPC客户端工厂Transport-ClientFactory864.2.4 Netty服务器TransportServer874.2.5 获取远程shuffle文件884.2.6 上传shuffle文件894.3 BlockManagerMaster对Block-Manager的管理904.3.1 BlockManagerMasterActor904.3.2 询问Driver并获取回复方法924.3.3 向BlockManagerMaster注册BlockManagerId934.4 磁盘块管理器DiskBlockManager944.4.1 DiskBlockManager的构造过程944.4.2 获取磁盘文件方法getFile964.4.3 创建临时Block方法create-TempShuffleBlock964.5 磁盘存储DiskStore974.5.1 NIO读取方法getBytes974.5.2 NIO写入方法putBytes984.5.3 数组写入方法putArray984.5.4 Iterator写入方法putIterator984.6 内存存储MemoryStore994.6.1 数据存储方法putBytes1014.6.2 Iterator写入方法putIterator详解1014.6.3 安全展开方法unrollSafely1024.6.4 确认空闲内存方法ensureFreeSpace1054.6.5 内存写入方法putArray1074.6.6 尝试写入内存方法tryToPut1084.6.7 获取内存数据方法getBytes1094.6.8 获取数据方法getValues1104.7 Tachyon存储TachyonStore1104.7.1 Tachyon简介1114.7.2 TachyonStore的使用1124.7.3 写入Tachyon内存的方法putIntoTachyonStore1134.7.4 获取序列化数据方法getBytes1134.8 块管理器BlockManager1144.8.1 移出内存方法dropFrom-Memory1144.8.2 状态报告方法reportBlockStatus1164.8.3 单对象块写入方法putSingle1174.8.4 序列化字节块写入方法putBytes1184.8.5 数据写入方法doPut1184.8.6 数据块备份方法replicate1214.8.7 创建DiskBlockObjectWriter的方法getDiskWriter1254.8.8 获取本地Block数据方法getBlockData1254.8.9 获取本地shuffle数据方法doGetLocal1264.8.10 获取远程Block数据方法doGetRemote1274.8.11 获取Block数据方法get1284.8.12 数据流序列化方法dataSerializeStream1294.9 metadataCleaner和broadcastCleaner1294.10 缓存管理器CacheManager1304.11 压缩算法1334.12 磁盘写入实现DiskBlockObjectWriter1334.13 块索引shuffle管理器IndexShuffleBlockManager1354.14 shuffle内存管理器ShuffleMemoryManager1374.15 小结138第5章 任务提交与执行1395.1 任务概述1395.2 广播Hadoop的配置信息1425.3 RDD转换及DAG构建1445.3.1 为什么需要RDD1445.3.2 RDD实现分析1465.4 任务提交1525.4.1 任务提交的准备1525.4.2 finalStage的创建与Stage的划分1575.4.3 创建Job1635.4.4 提交Stage1645.4.5 提交Task1655.5 执行任务1765.5.1 状态更新1765.5.2 任务还原1775.5.3 任务运行1785.6 任务执行后续处理1795.6.1 计量统计与执行结果序列化1795.6.2 内存回收1805.6.3 执行结果处理1815.7 小结187第6章 计算引擎1886.1 迭代计算1886.2 什么是shuffle1926.3 map端计算结果缓存处理1946.3.1 map端计算结果缓存聚合1956.3.2 map端计算结果简单缓存2006.3.3 容量限制2016.4 map端计算结果持久化2046.4.1 溢出分区文件2056.4.2排序与分区分组2076.4.3 分区索引文件2096.5 reduce端读取中间计算结果2106.5.1 获取map任务状态2136.5.2 划分本地与远程Block2156.5.3 获取远程Block2176.5.4 获取本地Block2186.6 reduce端计算2196.6.1 如何同时处理多个map任务的中间结果2196.6.2 reduce端在缓存中对中间计算结果执行聚合和排序2206.7 map端与reduce端组合分析2216.7.1 在map端溢出分区文件,在reduce端合并组合2216.7.2 在map端简单缓存、排序分组,在reduce端合并组合2226.7.3 在map端缓存中聚合、排序分组,在reduce端组合2226.8 小结223第7章 部署模式2247.1 local部署模式2257.2 local-cluster部署模式2257.2.1 LocalSparkCluster的启动2267.2.2 CoarseGrainedSchedulerBackend的启动2367.2.3 启动AppClient2377.2.4 资源调度2427.2.5 local-cluster模式的任务执行2537.3 Standalone部署模式2557.3.1 启动Standalone模式2557.3.2 启动Master分析2577.3.3 启动Worker分析2597.3.4 启动Driver Application分析2617.3.5 Standalone模式的任务执行2637.3.6 资源回收2637.4 容错机制2667.4.1 Executor异常退出2667.4.2 Worker异常退出2687.4.3 Master异常退出2697.5 其他部署方案2767.5.1 YARN2777.5.2 Mesos2807.6 小结282扩 展 篇第8章 Spark SQL2848.1 Spark SQL总体设计2848.1.1 传统关系型数据库SQL运行原理2858.1.2 Spark SQL运行架构2868.2 字典表Catalog2888.3 Tree和TreeNode2898.4 词法解析器Parser的设计与实现2938.4.1 SQL语句解析的入口2948.4.2 建表语句解析器DDLParser2958.4.3 SQL语句解析器SqlParser2968.4.4 Spark代理解析器SparkSQLParser2998.5 Rule和RuleExecutor3008.6 Analyzer与Optimizer的设计与实现3028.6.1 语法分析器Analyzer3048.6.2 优化器Optimizer3058.7 生成物理执行计划3068.8 执行物理执行计划3088.9 Hive3118.9.1 Hive SQL语法解析器3118.9.2 Hive SQL元数据分析3138.9.3 Hive SQL物理执行计划3148.10 应用举例:JavaSparkSQL3148.11 小结320第9章 流式计算3219.1 Spark Streaming总体设计3219.2 StreamingContext初始化3239.3 输入流接收器规范Receiver3249.4 数据流抽象DStream3259.4.1 Dstream的离散化3269.4.2 数据源输入流InputDStream3279.4.3 Dstream转换及构建DStream Graph3299.5 流式计算执行过程分析3309.5.1 流式计算例子CustomReceiver3319.5.2 Spark Streaming执行环境构建3359.5.3 任务生成过程3479.6 窗口操作3559.7 应用举例3579.7.1 安装mosquitto3589.7.2 启动mosquitto3589.7.3 MQTTWordCount3599.8 小结361第10章 图计算36210.1 Spark GraphX总体设计36210.1.1 图计算模型36310.1.2 属性图36510.1.3 GraphX的类继承体系36710.2 图操作36810.2.1 属性操作36810.2.2 结构操作36810.2.3 连接操作36910.2.4 聚合操作37010.3 Pregel API37110.3.1 Dijkstra算法37310.3.2 Dijkstra的实现37610.4 Graph的构建37710.4.1 从边的列表加载Graph37710.4.2 在Graph中创建图的方法37710.5 顶点集合抽象VertexRDD37810.6 边集合抽象EdgeRDD37910.7 图分割38010.8 常用算法38210.8.1 网页排名38210.8.2 Connected Components的应用38610.8.3 三角关系统计38810.9 应用举例39010.10 小结391第11章 机器学习39211.1机器学习概论39211.2 Spark MLlib总体设计39411.3 数据类型39411.3.1 局部向量39411.3.2标记点39511.3.3局部矩阵39611.3.4分布式矩阵39611.4基础统计39811.4.1摘要统计39811.4.2相关统计39911.4.3分层抽样40111.4.4假设检验40111.4.5随机数生成40211.5分类和回归40511.5.1数学公式40511.5.2线性回归40711.5.3分类40711.5.4回归41011.6决策树41111.6.1基本算法41111.6.2使用例子41211.7随机森林41311.7.1基本算法41411.7.2使用例子41411.8梯度提升决策树41511.8.1基本算法41511.8.2使用例子41611.9朴素贝叶斯41611.9.1算法原理41611.9.2使用例子41811.10保序回归41811.10.1算法原理41811.10.2使用例子41911.11协同过滤41911.12聚类42011.12.1K-means42011.12.2高斯混合42211.12.3快速迭代聚类42211.12.4latent Dirichlet allocation42211.12.5流式K-means42311.13维数减缩42411.13.1奇异值分解42411.13.2主成分分析42511.14特征提取与转型42511.14.1术语频率反转42511.14.2单词向量转换42611.14.3标准尺度42711.14.4正规化尺度42811.14.5卡方特征选择器42811.14.6Hadamard积42911.15频繁模式挖掘42911.16预言模型标记语言43011.17管道43111.17.1管道工作原理43211.17.2管道API介绍43311.17.3交叉验证43511.18小结436附录A Utils437附录B Akka446附录C Jetty450附录D Metrics453附录E Hadoop word count456附录F CommandUtils458附录G Netty461附录H 源码编译错误465