编辑推荐
适读人群 :大数据开发者 源码入手分析spark核心机制
内容简介
本书致力于Spark内核的深入解析,带领读者掌握Spark内核的各个关键知识点。具体内容由详细讲述RDD提供的功能以及内部实现的机制开始,通过源码引导读者深入理解Spark的集群部署的内部机制、Spark内部调度的机制、Executor的内部机制、Shuffle的内部机制,进而讲述Tungsten的内部机制,接着又进一步深入分析了SparkStreaming的内部机制。本书的后部分,是任何Spark应用者都非常关注的Spark性能调优的内容。本书可以使读者对Spark内核有更深入彻底的理解,从而实现对Spark系统深度调优、Spark生产环境下故障的定位和排除、Spark的二次开发和系统高级运维。本书的每章开篇均有重点介绍以引导读者有目的有重点的阅读或查阅。本书适合于对大数据开发有兴趣的在校学生。同时,对有分布式计算框架应用经验的人员,本书也可以作为Spark源码解析的参考书籍。
目录
前言
第1章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.4Spark Standalone部署
3.4.1部署框架
3.4.2应用程序的部署
3.4.3Master的部署
3.4.4Worker的部署
3.4.5内部交互的消息机制
3.4.6Master HA的部署
3.5Spark on YARN的部署模型
3.5.1部署框架
3.5.2应用程序的部署
3.6小结
第4章Spark调度器(Scheduler)运行机制
4.1Spark运行的核心概念
4.1.1Spark运行的基本对象
4.1.2Spark运行框架及各组件的基本运行原理
4.2Spark Driver Program剖析
4.2.1什么是Spark Driver Program
4.2.2SparkContext原理剖析
4.2.3SparkContext源代码解析
4.3Spark Job的触发
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不同Storage Level对比
6.4Executor内存模型
6.5Tachyon
6.5.1Tachyon简介
6.5.2Tachyon API的使用
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基于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.2Project Tungsten内存管理的模型及其源代码的解析
8.3基于内存管理模型的Shuffle二进制数据处理
8.3.1插入记录时二进制数据的处理
8.3.2spill时二进制数据的处理
8.4小结
第9章性能优化
9.1Spark的配置机制
9.1.1
前言/序言
起源于美国加州大学伯克利分校AMP实验室的Spark是当今大数据领域最活跃、最热门的大数据计算处理框架,2009年Spark诞生于AMP实验室,2010年Spark正式成为开源项目,2013年Spark成为Apache基金项目,2014年Spark成为Apache基金的顶级项目。Spark成功构建了一体化、多元化的大数据处理体系,成功使用Spark SQL、Spark Streaming、MLlib、GraphX解决了大数据领域的Batch Processing、Stream Processing、Adhoc Query等核心问题,Spark SQL、Spark Streaming、Mllib、GraphX四个子框架和Spark核心库之间互相共享数据及相互操作,Spark生态系统强大的集成能力是其他大数据平台无可匹敌的。
本书主要面向的对象是广大的Spark爱好者和大数据开发者,以Spark内核解析及性能调优为主导,由浅入深,对Spark内核运行机制从源代码角度加以详细解析,全书共分9章,分别是:RDD的功能解析、RDD的运行机制、部署模式(Deploy)解析、Spark调度器(Scheduler)运行机制、执行器(Executor)、Spark的存储模块(Storage)、Shuffle机制、钨丝计划(Project Tungsten)以及性能优化。读者通过对这些内容的深入学习,将能够较为透彻地掌握Spark这一大数据计算框架的应用方法。
参与本书编写的有王家林、段智华、张敏等。
在本书阅读过程中,如发现任何纰漏或有任何疑问,可以加入本书的阅读群(QQ:284078981)提出问题,会有专人答疑。同时,该群也会提供本书所用案例源代码。
如果读者想要了解或者学习更多大数据相关技术,可以关注DT大数据梦工厂微信公众号DT_Spark及QQ群284078981,或者扫描下方二维码咨询,也可以通过YY客户端登录68917580永久频道直接体验。
王家林老师的新浪微博是http://weibo�眂om/ilovepains/,欢迎大家在微博上与作者进行互动。
由于时间仓促,书中难免存在不妥之处,请读者谅解,并提出宝贵意见。
王家林2016.10.8日
Spark内核机制解析及性能调优 电子书 下载 mobi epub pdf txt