【Spark】电子书 - 深入理解Spark 核心思想与源码分析 耿嘉安著-后端电子书论坛-IT电子书-IT面试吧

【Spark】电子书 - 深入理解Spark 核心思想与源码分析 耿嘉安著

该帖子部分内容已隐藏
付费阅读
金币 3
此内容为付费阅读,请付费后查看

书籍封面

书籍目录

封面

书名

版权

前言

目录

第1章 环境准备

1.1 运行环境准备

1.1.1 安装JDK

1.1.2 安装Scala

1.1.3 安装Spark

1.2 Spark初体验

1.2.1 运行spark-shell

1.2.2 执行word count

1.2.3 剖析spark-shell

1.3 阅读环境准备

1.4 Spark源码编译与调试

1.5 小结

第2章 Spark设计理念与基本架构

2.1 初识Spark

2.1.1 Hadoop MRv1的局限

2.1.2 Spark使用场景

2.1.3 Spark的特点

2.2 Spark基础知识

2.3 Spark基本设计思想

2.3.1 Spark模块设计

2.3.2 Spark模型设计

2.4 Spark基本架构

2.5 小结

第3章 SparkContext的初始化

3.1 SparkContext概述

3.2 创建执行环境SparkEnv

3.2.1 安全管理器SecurityManager

3.2.2 基于Akka的分布式消息系统ActorSystem

3.2.3 map任务输出跟踪器mapOutputTracker

3.2.4 实例化ShuffleManager

3.2.5 shuffle线程内存管理器ShuffleMemoryManager

3.2.6 块传输服务BlockTransferService

3.2.7 BlockManagerMaster介绍

3.2.8 创建块管理器BlockManager

3.2.9 创建广播管理器Broadcast-Manager

3.2.10 创建缓存管理器CacheManager

3.2.11 HTTP文件服务器HttpFile-Server

3.2.12 创建测量系统MetricsSystem

3.2.13 创建SparkEnv

3.3 创建metadataCleaner

3.4 SparkUI详解

3.4.1 listenerBus详解

3.4.2 构造JobProgressListener

3.4.3 SparkUI的创建与初始化

3.4.4 Spark UI的页面布局与展示

3.4.5 SparkUI的启动

3.5 Hadoop相关配置及Executor环境变量

3.5.1 Hadoop相关配置信息

3.5.2 Executor环境变量

3.6 创建任务调度器TaskScheduler

3.6.1 创建TaskSchedulerImpl

3.6.2 TaskSchedulerImpl的初始化

3.7 创建和启动DAGScheduler

3.8 TaskScheduler的启动

3.8.1 创建LocalActor

3.8.2 ExecutorSource的创建与注册

3.8.3 ExecutorActor的构建与注册

3.8.4 Spark自身ClassLoader的创建

3.8.5 启动Executor的心跳线程

3.9 启动测量系统MetricsSystem

3.9.1 注册Sources

3.9.2 注册Sinks

3.9.3 给Sinks增加Jetty的Servlet-ContextHandler

3.10 创建和启动ExecutorAllocation-Manager

3.11 ContextCleaner的创建与启动

3.12 Spark环境更新

3.13 创建DAGSchedulerSource和BlockManagerSource

3.14 将SparkContext标记为激活

3.15 小结

第4章 存储体系

4.1 存储体系概述

4.1.1 块管理器BlockManager的实现

4.1.2 Spark存储体系架构

4.2 shuffle服务与客户端

4.2.1 Block的RPC服务

4.2.2 构造传输上下文Transpor-tContext

4.2.3 RPC客户端工厂Transport-ClientFactory

4.2.4 Netty服务器TransportServer

4.2.5 获取远程shuffle文件

4.2.6 上传shuffle文件

4.3 BlockManagerMaster对Block-Manager的管理

4.3.1 BlockManagerMasterActor

4.3.2 询问Driver并获取回复方法

4.3.3 向BlockManagerMaster注册BlockManagerId

4.4 磁盘块管理器DiskBlockManager

4.4.1 DiskBlockManager的构造过程

4.4.2 获取磁盘文件方法getFile

4.4.3 创建临时Block方法create-TempShuffleBlock

4.5 磁盘存储DiskStore

4.5.1 NIO读取方法getBytes

4.5.2 NIO写入方法putBytes

4.5.3 数组写入方法putArray

4.5.4 Iterator写入方法putIterator

4.6 内存存储MemoryStore

4.6.1 数据存储方法putBytes

4.6.2 Iterator写入方法putIterator详解

4.6.3 安全展开方法unrollSafely

4.6.4 确认空闲内存方法ensureFreeSpace

4.6.5 内存写入方法putArray

4.6.6 尝试写入内存方法tryToPut

4.6.7 获取内存数据方法getBytes

4.6.8 获取数据方法getValues

4.7 Tachyon存储TachyonStore

4.7.1 Tachyon简介

4.7.2 TachyonStore的使用

4.7.3 写入Tachyon内存的方法putIntoTachyonStore

4.7.4 获取序列化数据方法getBytes

4.8 块管理器BlockManager

4.8.1 移出内存方法dropFrom-Memory

4.8.2 状态报告方法reportBlockStatus

4.8.3 单对象块写入方法putSingle

4.8.4 序列化字节块写入方法putBytes

4.8.5 数据写入方法doPut

4.8.6 数据块备份方法replicate

4.8.7 创建DiskBlockObjectWriter的方法getDiskWriter

4.8.8 获取本地Block数据方法getBlockData

4.8.9 获取本地shuffle数据方法doGetLocal

4.8.10 获取远程Block数据方法doGetRemote

4.8.11 获取Block数据方法get

4.8.12 数据流序列化方法dataSerializeStream

4.9 metadataCleaner和broadcastCleaner

4.10 缓存管理器CacheManager

4.11 压缩算法

4.12 磁盘写入实现DiskBlockObjectWriter

4.13 块索引shuffle管理器IndexShuffleBlockManager

4.14 shuffle内存管理器ShuffleMemoryManager

4.15 小结

第5章 任务提交与执行

5.1 任务概述

5.2 广播Hadoop的配置信息

5.3 RDD转换及DAG构建

5.3.1 为什么需要RDD

5.3.2 RDD实现分析

5.4 任务提交

5.4.1 任务提交的准备

5.4.2 finalStage的创建与Stage的划分

5.4.3 创建Job

5.4.4 提交Stage

5.4.5 提交Task

5.5 执行任务

5.5.1 状态更新

5.5.2 任务还原

5.5.3 任务运行

5.6 任务执行后续处理

5.6.1 计量统计与执行结果序列化

5.6.2 内存回收

5.6.3 执行结果处理

5.7 小结

第6章 计算引擎

6.1 迭代计算

6.2 什么是shuffle

6.3 map端计算结果缓存处理

6.3.1 map端计算结果缓存聚合

6.3.2 map端计算结果简单缓存

6.3.3 容量限制

6.4 map端计算结果持久化

6.4.1 溢出分区文件

6.4.2 排序与分区分组

6.4.3 分区索引文件

6.5 reduce端读取中间计算结果

6.5.1 获取map任务状态

6.5.2 划分本地与远程Block

6.5.3 获取远程Block

6.5.4 获取本地Block

6.6 reduce端计算

6.6.1 如何同时处理多个map任务的中间结果

6.6.2 reduce端在缓存中对中间计算结果执行聚合和排序

6.7 map端与reduce端组合分析

6.7.1 在map端溢出分区文件,在reduce端合并组合

6.7.2 在map端简单缓存、排序分组,在reduce端合并组合

6.7.3 在map端缓存中聚合、排序分组,在reduce端组合

6.8 小结

第7章 部署模式

7.1 local部署模式

7.2 local-cluster部署模式

7.2.1 LocalSparkCluster的启动

7.2.2 CoarseGrainedSchedulerBackend的启动

7.2.3 启动AppClient

7.2.4 资源调度

7.2.5 local-cluster模式的任务执行

7.3 Standalone部署模式

7.3.1 启动Standalone模式

7.3.2 启动Master分析

7.3.3 启动Worker分析

7.3.4 启动Driver Application分析

7.3.5 Standalone模式的任务执行

7.3.6 资源回收

7.4 容错机制

7.4.1 Executor异常退出

7.4.2 Worker异常退出

7.4.3 Master异常退出

7.5 其他部署方案

7.5.1 YARN

7.5.2 Mesos

7.6 小结

第8章 Spark SQL

8.1 Spark SQL总体设计

8.1.1 传统关系型数据库SQL运行原理

8.1.2 Spark SQL运行架构

8.2 字典表Catalog

8.3 Tree和TreeNode

8.4 词法解析器Parser的设计与实现

8.4.1 SQL语句解析的入口

8.4.2 建表语句解析器DDLParser

8.4.3 SQL语句解析器SqlParser

8.4.4 Spark代理解析器SparkSQLParser

8.5 Rule和RuleExecutor

8.6 Analyzer与Optimizer的设计与实现

8.6.1 语法分析器Analyzer

8.6.2 优化器Optimizer

8.7 生成物理执行计划

8.8 执行物理执行计划

8.9 Hive

8.9.1 Hive SQL语法解析器

8.9.2 Hive SQL元数据分析

8.9.3 Hive SQL物理执行计划

8.10 应用举例:JavaSparkSQL

8.11 小结

第9章 流式计算

9.1 Spark Streaming总体设计

9.2 StreamingContext初始化

9.3 输入流接收器规范Receiver

9.4 数据流抽象DStream

9.4.1 Dstream的离散化

9.4.2 数据源输入流InputDStream

9.4.3 Dstream转换及构建DStream Graph

9.5 流式计算执行过程分析

9.5.1 流式计算例子CustomReceiver

9.5.2 Spark Streaming执行环境构建

9.5.3 任务生成过程

9.6 窗口操作

9.7 应用举例

9.7.1 安装mosquitto

9.7.2 启动mosquitto

9.7.3 MQTTWordCount

9.8 小结

第10章 图计算

10.1 Spark GraphX总体设计

10.1.1 图计算模型

10.1.2 属性图

10.1.3 GraphX的类继承体系

10.2 图操作

10.2.1 属性操作

10.2.2 结构操作

10.2.3 连接操作

10.2.4 聚合操作

10.3 Pregel API

10.3.1 Dijkstra算法

10.3.2 Dijkstra的实现

10.4 Graph的构建

10.4.1 从边的列表加载Graph

10.4.2 在Graph中创建图的方法

10.5 顶点集合抽象VertexRDD

10.6 边集合抽象EdgeRDD

10.7 图分割

10.8 常用算法

10.8.1 网页排名

10.8.2 Connected Components的应用

10.8.3 三角关系统计

10.9 应用举例

10.10 小结

第11章 机器学习

11.1 机器学习概论

11.2 Spark MLlib总体设计

11.3 数据类型

11.3.1 局部向量

11.3.2 标记点

11.3.3 局部矩阵

11.3.4 分布式矩阵

11.4 基础统计

11.4.1 摘要统计

11.4.2 相关统计

11.4.3 分层抽样

11.4.4 假设检验

11.4.5 随机数生成

11.5 分类和回归

11.5.1 数学公式

11.5.2 线性回归

11.5.3 分类

11.5.4 回归

11.6 决策树

11.6.1 基本算法

11.6.2 使用例子

11.7 随机森林

11.7.1 基本算法

11.7.2 使用例子

11.8 梯度提升决策树

11.8.1 基本算法

11.8.2 使用例子

11.9 朴素贝叶斯

11.9.1 算法原理

11.9.2 使用例子

11.10 保序回归

11.10.1 算法原理

11.10.2 使用例子

11.11 协同过滤

11.12 聚类

11.12.1 K-means

11.12.2 高斯混合

11.12.3 快速迭代聚类

11.12.4 latent Dirichlet allocation

11.12.5 流式K-means

11.13 维数减缩

11.13.1 奇异值分解

11.13.2 主成分分析

11.14 特征提取与转型

11.14.1 术语频率反转

11.14.2 单词向量转换

11.14.3 标准尺度

11.14.4 正规化尺度

11.14.5 卡方特征选择器

11.14.6 Hadamard积

11.15 频繁模式挖掘

11.16 预言模型标记语言

11.17 管道

11.17.1 管道工作原理

11.17.2 管道API介绍

11.17.3 交叉验证

11.18 小结

附录A Utils

附录B Akka

附录C Jetty

附录D Metrics

附录E Hadoop word count

附录F CommandUtils

附录G Netty

附录H 源码编译错误

封底

下载地址

请登录后发表评论

    没有回复内容