《Spark内核机制解析及性能调优》PDF版

点击下载:
《Spark内核机制解析及性能调优》
这里写图片描述
内容简介 · · · · · ·
本书致力于Spark内核的深入解析,带领读者掌握Spark内核的各个关键知识点。具体内容由详细讲述RDD提供的功能以及内部实现的机制开始,通过源码引导读者深入理解Spark的集群部署的内部机制、Spark内部调度的机制、Executor的内部机制、Shuffle的内部机制,进而讲述Tungsten的内部机制,接着又进一步深入分析了SparkStreaming的内部机制。本书的后部分,是任何Spark应用者都非常关注的Spark性能调优的内容。本书可以使读者对Spark内核有更深入彻底的理解,从而实现对Spark系统深度调优、Spark生产环境下故障的定位和排除、Spark的二次开发和系统高级运维。本书的每章开篇均有重点介绍以引导读者有目的有重点的阅读或查阅。本书适合于对大数据开发有兴趣的在校学生。同时,对有分布式计算框架应用经验的人员,本书也可以作为Spark源码解析的参考书籍。
作者简介 · · · · · ·
王家林
中国著名的Spark培训专家,Apache Spark、Android 技术中国区布道师,DT大数据梦工厂创始人和首席专家,Android软硬件整合专家。深入研究了Spark从 0.5.0 到 2.2.1 中共31个版本的Spark源码,目前致力于开发优化的Spark中国版本。尤其擅长Spark在生产环境下各种类型和场景故障的排除和解决,痴迷于Spark在生产环境下任意类型(例如Shuffle和各种内存问题及数据倾斜问题等)的深度性能优化。
段智华
就职于中国电信股份有限公司上海分公司,系统架构师,CSDN博客专家。专注于Spark大数据技术研发及推广,跟随Spark核心源码技术的发展,深入研究Spark 2.1.1版本及Spark 2.2.1版本的源码优化,对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

猜你喜欢

转载自blog.csdn.net/wbp_03/article/details/81589208