描述
编辑推荐
源码入手分析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集合创建RDD1.3.2通过HDFS和本地文件系统创建RDD1.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什么是DAG2.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 Program4.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剖析TaskRunner5.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.5Tachyon6.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的Shuffle7.3.1基于Hash的Shuffle内核7.3.2基于Hash的Shuffle写数据的源代码解析7.4基于Sort的Shuffle7.4.1基于Sort的Shuffle内核7.4.2基于Sort的Shuffle写数据的源代码解析7.5基于Tungsten Sort的Shuffle7.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://weibocom/ilovepains/,欢迎大家在微博上与作者进行互动。由于时间仓促,书中难免存在不妥之处,请读者谅解,并提出宝贵意见。王家林2016.10.8日
评论
还没有评论。