失效链接处理 |
Spark内核机制解析及性能调优 王家林 PDF 下载
下载地址:
版权归出版社和原作者所有,链接已删除,请购买正版
用户下载说明:
电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍:
http://product.dangdang.com/11183496815.html
相关截图: 资料简介: 本书致力于Spark内核的深入解析,带领读者掌握Spark内核的各个关键知识点。具体内容由详细讲述RDD提供的功能以及内部实现的机制开始,通过源码引导读者深入理解Spark的集群部署的内部机制、Spark内部调度的机制、Executor的内部机制、Shuffle的内部机制,进而讲述Tungsten的内部机制,接着又进一步深入分析了SparkStreaming的内部机制。本书的后部分,是任何Spark应用者都非常关注的Spark性能调优的内容。本书可以使读者对Spark内核有更深入的理解,从而实现对Spark系统深度调优、Spark生产环境下故障的定位和排除、Spark的二次开发和系统高级运维。本书的每章开篇均有重点介绍以引导读者有目的有重点的阅读或查阅。本书适合于对大数据开发有兴趣的在校学生。同时,对有分布式计算框架应用经验的人员,本书也可以作为Spark源码解析的参考书籍。 资料目录:
前言
章RDD功能解析
1.1RDD产生的技术背景及功能
1.2RDD的基本概念
1.2.1RDD的定义
1.2.2RDD五大特性
1.2.3RDD弹性特性的7个方面
1.3创建RDD的方式
1.3.1通过已经存在的Scala集合创建RDD
1.3.2通过HDFS和本地文件系统创建RDD
1.3.3其他的RDD的转换
1.3.4其他的RDD的创建
1.4RDD算子
1.5RDD的Transformation算子
1.5.1Transformation的定义
1.5.2Transformation在RDD中的角色定位及功能
1.5.3Transformation操作的Lazy特性
1.5.4通过实践说明Transformation的Lazy特性
1.6RDD的Action算子
1.6.1Action的定义
1.6.2Action在RDD中的角色定位及功能
1.7小结
第2章RDD的运行机制
2.1RDD依赖关系
2.1.1窄依赖(Narrow Dependency)
2.1.2宽依赖(Shuffle Dependency)
2.2有向无环图(Directed Acyclic Graph,DAG)
2.2.1什么是DAG
2.2.2DAG的生成机制
2.2.3DAG的逻辑视图
2.3RDD内部的计算机制
2.3.1RDD的计算任务(Task)
2.3.2RDD的计算过程
2.4RDD中缓存的适用场景和工作机制
2.4.1缓存的使用
2.4.2缓存的适用场景
2.4.3缓存工作机制解析
2.5RDD的检查点(Checkpoint)的适用场景和工作机制
2.5.1Checkpoint的触发
2.5.2Checkpoint的适用场景
2.5.3Checkpoint工作机制解析
2.6RDD容错原理及其四大核心要点
2.6.1RDD容错原理
2.6.2RDD容错的四大核心要点
2.7通过WordCount实践RDD内部机制
2.7.1WordCount案例实践
2.7.2解析RDD生成的内部机制
2.8小结
第3章部署模式(Deploy)解析
3.1部署模式概述
3.2应用程序的部署
3.2.1应用程序部署的脚本解析
3.2.2应用程序部署的源代码解析
3.3Local与Local—Cluster部署
3.3.1Local部署
3.3.2Local(*)与Local(N)部署
3.3.3Local(*,M)与Local(N,M)部署
3.3.4Local—Cluster(S,C,M)部署
3.4SparkStandalone部署
3.4.1部署框架
3.4.2应用程序的部署
3.4.3Master的部署
3.4.4Worker的部署
3.4.5内部交互的消息机制
3.4.6MasterHA的部署
3.5SparkonYARN的部署模型
3.5.1部署框架
3.5.2应用程序的部署
3.6小结
第4章Spark调度器(Scheduler)运行机制
4.1Spark运行的核心概念
4.1.1Spark运行的基本对象
4.1.2Spark运行框架及各组件的基本运行原理
4.2SparkDriverProgram剖析
4.2.1什么是SparkDriverProgram
4.2.2SparkContext原理剖析
4.2.3SparkContext源代码解析
4.3SparkJob的触发
4.3.1Job的逻辑执行(General Logical Plan)
4.3.2Job具体的物理执行
4.3.3Job触发流程源代码解析
4.4高层的DAG调度器(DAGScheduler)
4.4.1DAG的定义
4.4.2DAG的实例化
4.4.3DAGScheduer划分Stage的原理
4.4.4DAGScheduer划分Stage的具体算法
4.4.5Stage内部Task获取位置的算法
4.5底层的Task调度器(TaskScheduler)
4.5.1TaskScheduer原理剖析
4.5.2TaskScheduer源代码解析
4.6调度器的通信终端(SchedulerBackend)
4.6.1SchedulerBackend原理
4.6.2SchedulerBackend源代码解析
4.6.3Spark程序的注册机制
4.6.4Spark程序对计算资源Executor的管理
4.7小结
第5章执行器(Executor)
5.1Executor的创建、分配、启动及异常处理
5.1.1Executor的创建
5.1.2Executor的资源分配
5.1.3Executor的启动
5.1.4Executor的异常处理
5.2执行器的通信接口(ExecutorBackend)
5.2.1ExecutorBackend接口与Executor的关系
5.2.2ExecutorBackend的不同实现
5.2.3ExecutorBackend中的通信
5.3执行器(Executor)中任务的执行
5.3.1Executor中任务的加载
5.3.2Executor中的任务线程池
5.3.3任务执行失败处理
5.3.4剖析TaskRunner
5.4小结
第6章Spark的存储模块(Storage)
6.1Storage概述
6.1.1Storage的概念
6.1.2Storage的设计模式
6.2Storage模块整体架构
6.2.1通信层
6.2.2存储层
6.2.3Partition与Block的对应关系
6.3不同StorageLevel对比
6.4Executor内存模型
6.5Tachyon
6.5.1Tachyon简介
6.5.2TachyonAPI的使用
6.5.3Tachyon在Spark中的使用
6.6小结
第7章Shuffle机制
7.1Shuffle概述
7.2Shuffle的框架
7.2.1Shuffle的框架演进
7.2.2Shuffle的框架内核
7.2.3Shuffle框架的源代码解析
7.2.4Shuffle的注册
7.2.5Shuffle读写数据的源代码解析
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基于TungstenSort的Shuffle
7.5.1基于TungstenSort的Shuffle内核
7.5.2基于TungstenSort的Shuffle写数据的源代码解析
7.6小结
第8章钨丝计划(Project Tungsten)
8.1钨丝计划(Project Tungsten)概述
8.2内存管理模型
8.2.1现有内存管理的机制
8.2.2ProjectTungsten内存管理的模型及其源代码的解析
8.3基于内存管理模型的Shuffle二进制数据处理
8.3.1插入记录时二进制数据的处理
8.3.2spill时二进制数据的处理
8.4小结
第9章性能优化
9.1Spark的配置机制
9.1.1通过SparkConf配置Spark
9.1.2通过spark—submit配置spark
9.1.3通过配置文件配置Spark
9.1.4Spark配置机制总结
9.2性能诊断
9.2.1WebUI的8080端口
9.2.2WebUI的18080端口
9.2.3WebUI的4040端口
9.2.4WebUI的Jobs页面
9.2.5WebUI的Stages页面
9.2.6WebUI的Storage页面
9.2.7WebUI的Environment页面
9.2.8WebUI的Executors页面
9.2.9Driver和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.10Shuffle调优
9.4小结
|