本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正
Spark建立在抽象的RDD之上,要理解Spark,就
需要理解RDD。王家林、段智华等编著的《Spark内核
机制解析及性能调优》详细讲述了RDD的功能及内部
实现的机制,通过剖析源代码引导读者深入理解
Spark集群部署的内部机制、Spark内部调度机制、
Executor的内部机制和Shuffle的内部机制,进而讲
述了“钨丝计划”的内部机制。本书的*后一章是任
何Spark应用者都非常关注的Spark性能调优内容。通
过学习本书,可以使读者对Spark内核有*加深入的
理解,从而实现对Spark系统深度调优、Spark生产环
境下故障的定位和排除,以及Spark的二次开发和系
统**运维。
本书适合于对大数据开发有兴趣的在校学生。同
时,对于有分布式计算框架应用经验的人员,本书也
可以作为Spark源代码解析的参考书籍。
前言
**章 RDD功能解析
1.1 RDD产生的技术背景及功能
1.2 RDD的基本概念
1.2.1 RDD的定义
1.2.2 RDD五大特性
1.2.3 RDD弹性特性的7个方面
1.3 创建RDD的方式
1.3.1 通过已经存在的Scala集合创建RDD
1.3.2 通过HDFS和本地文件系统创建RDD
1.3.3 其他的RDD的转换
1.3.4 其他的RDD的创建
1.4 RDD算子
1.5 RDD的Transformation算子
1.5.1 Transformation的定义
1.5.2 Transformation在RDD中的角色定位及功能
1.5.3 Transformation操作的Lazy特性
1.5.4 通过实践说明Transformation的Lazy特性
1.6 RDD的Action算子
1.6.1 Action的定义
1.6.2 Action 在RDD中的角色定位及功能
1.7 小结
第2章 RDD的运行机制
2.1 RDD依赖关系
2.1.1 窄依赖(Narrow Dependency)
2.1.2 宽依赖(Shuffle Dependency)
2.2 有向无环图(Directed Acyclic Graph,DAG)
2.2.1 什么是DAG
2.2.2 DAG的生成机制
2.2.3 DAG的逻辑视图
2.3 RDD内部的计算机制
2.3.1 RDD的计算任务(Task)
2.3.2 RDD的计算过程
2.4 RDD中缓存的适用场景和工作机制
2.4.1 缓存的使用
2.4.2 缓存的适用场景
2.4.3 缓存工作机制解析
2.5 RDD的检查点(Checkpoint)的适用场景和工作机制
2.5.1 Checkpoint的触发
2.5.2 Checkpoint的适用场景
2.5.3 Checkpoint工作机制解析
2.6 RDD容错原理及其四大核心要点
2.6.1 RDD容错原理
2.6.2 RDD容错的四大核心要点
2.7 通过WordCount实践RDD内部机制
2.7.1 WordCount案例实践
2.7.2 解析RDD生成的内部机制
2.8 小结
第3章 部署模式(Deploy)解析
3.1 部署模式概述
3.2 应用程序的部署
3.2.1 应用程序部署的脚本解析
3.2.2 应用程序部署的源代码解析
3.3 Local与Local-Cluster部署
3.3.1 Local部署
3.3.2 Local[*]与Local[N]部署
3.3.3 Local[*,M]与Local[N,M]部署
3.3.4 Local-Cluster[S,C,M]部署
3.4 Spark Standalone部署
3.4.1 部署框架
3.4.2 应用程序的部署
3.4.3 Master的部署
3.4.4 Worker的部署
3.4.5 内部交互的消息机制
3.4.6 Master HA的部署
3.5 Spark on YARN的部署模型
3.5.1 部署框架
3.5.2 应用程序的部署
3.6 小结
第4章 Spark调度器(Scheduler)运行机制
4.1 Spark运行的核心概念
4.1.1 Spark运行的基本对象
4.1.2 Spark运行框架及各组件的基本运行原理
4.2 Spark Driver Program剖析
4.2.1 什么是Spark Driver Program
4.2.2 SparkContext原理剖析
4.2.3 SparkContext源代码解析
4.3 Spark Job的触发
4.3.1 Job的逻辑执行(General Logical Plan)
4.3.2 Job具体的物理执行
4.3.3 Job触发流程源代码解析
4.4 高层的DAG调度器(DAGScheduler)
4.4.1 DAG的定义
4.4.2 DAG的实例化
4.4.3 DAGScheduer划分Stage的原理
4.4.4 DAGScheduer划分Stage的具体算法
4.4.5 Stage内部Task获取*佳位置的算法
4.5 底层的Task调度器(TaskScheduler)
4.5.1 TaskScheduer原理剖析
4.5.2 TaskScheduer源代码解析
4.6 调度器的通信终端(SchedulerBackend)
4.6.1 SchedulerBackend原理
4.6.2 SchedulerBackend源代码解析
4.6.3 Spark程序的注册机制
4.6.4 Spark程序对计算资源Executor的管理
4.7 小结
第5章 执行器(Executor)
5.1 Executor的创建、分配、启动及异常处理
5.1.1 Executor的创建
5.1.2 Executor的资源分配
5.1.3 Executor的启动
5.1.4 Executor的异常处理
5.2 执行器的通信接口(ExecutorBackend)
5.2.1 ExecutorBackend接口与Executor的关系
5.2.2 ExecutorBackend的不同实现
5.2.3 ExecutorBackend中的通信
5.3 执行器(Executor)中任务的执行
5.3.1 Executor中任务的加载
5.3.2 Executor中的任务线程池
5.3.3 任务执行失败处理
5.3.4 剖析TaskRunner
5.4 小结
第6章 Spark的存储模块(Storage)
6.1 Storage概述
6.1.1 Storage的概念
6.1.2 Storage的设计模式
6.2 Storage模块整体架构
6.2.1 通信层
6.2.2 存储层
6.2.3 Partition与Block的对应关系
6.3 不同Storage Level对比
6.4 Executor内存模型
6.5 Tachyon
6.5.1 Tachyon简介
6.5.2 Tachyon API的使用
6.5.3 Tachyon在Spark中的使用
6.6 小结
第7章 Shuffle机制
7.1 Shuffle概述
7.2 Shuffle的框架
7.2.1 Shuffle的框架演进
7.2.2 Shuffle的框架内核
7.2.3 Shuffle框架的源代码解析
7.2.4 Shuffle 的注册
7.2.5 Shuffle读写数据的源代码解析
7.3 基于Hash的Shuffle
7.3.1 基于Hash的Shuffle内核
7.3.2 基于Hash的Shuffle写数据的源代码解析
7.4 基于Sort的Shuffle
7.4.1 基于Sort的Shuffle内核
7.4.2 基于Sort的Shuffle写数据的源代码解析
7.5 基于Tungsten Sort的Shuffle
7.5.1 基于Tungsten Sort的Shuffle内核
7.5.2 基于Tungsten Sort的Shuffle写数据的源代码解析
7.6 小结
第8章 钨丝计划(Project Tungsten)
8.1 钨丝计划(Project Tungsten)概述
8.2 内存管理模型
8.2.1 现有内存管理的机制
8.2.2 Project Tungsten内存管理的模型及其源代码的解析
8.3 基于内存管理模型的Shuffle二进制数据处理
8.3.1 插入记录时二进制数据的处理
8.3.2 spill时二进制数据的处理
8.4 小结
第9章 性能优化
9.1 Spark的配置机制
9.1.1 通过SparkConf配置Spark
9.1.2 通过spark-submit配置Spark
9.1.3 通过配置文件配置Spark
9.1.4 Spark配置机制总结
9.2 性能诊断
9.2.1 WebUI的8080端口
9.2.2 WebUI的18080端口
9.2.3 WebUI的4040端口
9.2.4 WebUI的Jobs页面
9.2.5 WebUI的Stages页面
9.2.6 WebUI的Storage页面
9.2.7 WebUI的Environment页面
9.2.8 WebUI的Executors页面
9.2.9 Driver和Executor的日志
9.3 性能优化
9.3.1 程序编写准则
9.3.2 并行度
9.3.3 资源参数调优
9.3.4 序列化与压缩
9.3.5 内存调优
9.3.6 广播大变量
9.3.7 持久化与checkpoint
9.3.8 数据本地性
9.3.9 垃圾回收调优
9.3.10 Shuffle调优
9.4 小结