Spark内核设计的艺术:架构设计与实现

Spark内核设计的艺术:架构设计与实现

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

细化到方法级,提炼出多个流程图,立体呈现架构、环境、调度、存储、计算、部署、API七大核心设计。

内容简介

本书对Spark内部高度抽象的数据结构RDD、分布式DAG调度器/驱动器,以及高效的基于Non-blocking IO分布式计算框架Akka/Netty等内核设计进行了深度剖析,不可多得,是适合大型分布式计算架构师和资深开源贡献者阅读的参考书。

作者简介

作者耿嘉安,10余年IT行业相关经验。先后就职于阿里巴巴、艺龙、360,专注于开源和大数据领域。在大量的工作实践中,对J2EE、JVM、Tomcat、Spring、Hadoop、Spark、MySQL、Redis都有深入研究,尤其喜欢剖析开源项目的源码实现。早期从事J2EE企业级应用开发,对Java相关技术有独到见解。著有《深入理解Spark:核心思想与源码分析》一书。

章节目录

版权信息

本书赞誉

前言

第1章 环境准备

1.1 运行环境准备

1.1.1 安装JDK

1.1.2 安装Scala

1.1.3 安装Spark

1.2 Spark初体验

1.2.1 运行spark-shell

1.2.2 执行word count

1.2.3 剖析spark-shell

1.3 阅读环境准备

1.3.1 安装SBT

1.3.2 安装Git

1.3.3 安装Eclipse Scala IDE插件

1.4 Spark源码编译与调试

1.5 小结

第2章 设计理念与基本架构

2.1 初识Spark

2.1.1 Hadoop MRv1的局限

2.1.2 Spark的特点

2.1.3 Spark使用场景

2.2 Spark基础知识

2.3 Spark基本设计思想

2.3.1 Spark模块设计

2.3.2 Spark模型设计

2.4 Spark基本架构

2.5 小结

第3章 Spark基础设施

3.1 Spark配置

3.1.1 系统属性中的配置

3.1.2 使用SparkConf配置的API

3.1.3 克隆SparkConf配置

3.2 Spark内置RPC框架

3.2.1 RPC配置TransportConf

3.2.2 RPC客户端工厂TransportClientFactory

3.2.3 RPC服务端TransportServer

3.2.4 管道初始化

3.2.5 TransportChannelHandler详解

3.2.6 服务端RpcHandler详解

3.2.7 服务端引导程序TransportServerBootstrap

3.2.8 客户端TransportClient详解

3.3 事件总线

3.3.1 ListenerBus的继承体系

3.3.2 SparkListenerBus详解

3.3.3 LiveListenerBus详解

3.4 度量系统

3.4.1 Source继承体系

3.4.2 Sink继承体系

3.5 小结

第4章 SparkContext的初始化

4.1 SparkContext概述

4.2 创建Spark环境

4.3 SparkUI的实现

4.3.1 SparkUI概述

4.3.2 WebUI框架体系

4.3.3 创建SparkUI

4.4 创建心跳接收器

4.5 创建和启动调度系统

4.6 初始化块管理器BlockManager

4.7 启动度量系统

4.8 创建事件日志监听器

4.9 创建和启动ExecutorAllocationManager

4.10 ContextCleaner的创建与启动

4.10.1 创建ContextCleaner

4.10.2 启动ContextCleaner

4.11 额外的SparkListener与启动事件总线

4.12 Spark环境更新

4.13 SparkContext初始化的收尾

4.14 SparkContext提供的常用方法

4.15 SparkContext的伴生对象

4.16 小结

第5章 Spark执行环境

5.1 SparkEnv概述

5.2 安全管理器SecurityManager

5.3 RPC环境

5.3.1 RPC端点RpcEndpoint

5.3.2 RPC端点引用RpcEndpointRef

5.3.3 创建传输上下文TransportConf

5.3.4 消息调度器Dispatcher

5.3.5 创建传输上下文TransportContext

5.3.6 创建传输客户端工厂TransportClientFactory

5.3.7 创建TransportServer

5.3.8 客户端请求发送

5.3.9 NettyRpcEnv中的常用方法

5.4 序列化管理器SerializerManager

5.5 广播管理器BroadcastManager

5.6 map任务输出跟踪器

5.6.1 MapOutputTracker的实现

5.6.2 MapOutputTrackerMaster的实现原理

5.7 构建存储体系

5.8 创建度量系统

5.8.1 MetricsConfig详解

5.8.2 MetricsSystem中的常用方法

5.8.3 启动MetricsSystem

5.9 输出提交协调器

5.9.1 OutputCommitCoordinatorEndpoint的实现

5.9.2 OutputCommitCoordinator的实现

5.9.3 OutputCommitCoordinator的工作原理

5.10 创建SparkEnv

5.11 小结

第6章 存储体系

6.1 存储体系概述

6.1.1 存储体系架构

6.1.2 基本概念

6.2 Block信息管理器

6.2.1 Block锁的基本概念

6.2.2 Block锁的实现

6.3 磁盘Block管理器

6.3.1 本地目录结构

6.3.2 DiskBlockManager提供的方法

6.4 磁盘存储DiskStore

6.5 内存管理器

6.5.1 内存池模型

6.5.2 StorageMemoryPool详解

6.5.3 MemoryManager模型

6.5.4 UnifiedMemoryManager详解

6.6 内存存储MemoryStore

6.6.1 MemoryStore的内存模型

6.6.2 MemoryStore提供的方法

6.7 块管理器BlockManager

6.7.1 BlockManager的初始化

6.7.2 BlockManager提供的方法

6.8 BlockManagerMaster对BlockManager的管理

6.8.1 BlockManagerMaster的职责

6.8.2 BlockManagerMasterEndpoint详解

6.8.3 BlockManagerSlaveEndpoint详解

6.9 Block传输服务

6.9.1 初始化NettyBlockTransferService

6.9.2 NettyBlockRpcServer详解

6.9.3 Shuffle客户端

6.10 DiskBlockObjectWriter详解

6.11 小结

第7章 调度系统

7.1 调度系统概述

7.2 RDD详解

7.2.1 为什么需要RDD

7.2.2 RDD实现的初次分析

7.2.3 RDD依赖

7.2.4 分区计算器Partitioner

7.2.5 RDDInfo

7.3 Stage详解

7.3.1 ResultStage的实现

7.3.2 ShuffleMapStage的实现

7.3.3 StageInfo

7.4 面向DAG的调度器DAGScheduler

7.4.1 JobListener与JobWaiter

7.4.2 ActiveJob详解

7.4.3 DAGSchedulerEventProcessLoop的简要介绍

7.4.4 DAGScheduler的组成

7.4.5 DAGScheduler提供的常用方法

7.4.6 DAGScheduler与Job的提交

7.4.7 构建Stage

7.4.8 提交ResultStage

7.4.9 提交还未计算的Task

7.4.10 DAGScheduler的调度流程

7.4.11 Task执行结果的处理

7.5 调度池Pool

7.5.1 调度算法

7.5.2 Pool的实现

7.5.3 调度池构建器

7.6 任务集合管理器TaskSetManager

7.6.1 Task集合

7.6.2 TaskSetManager的成员属性

7.6.3 调度池与推断执行

7.6.4 Task本地性

7.6.5 TaskSetManager的常用方法

7.7 运行器后端接口LauncherBackend

7.7.1 BackendConnection的实现

7.7.2 LauncherBackend的实现

7.8 调度后端接口SchedulerBackend

7.8.1 SchedulerBackend的定义

7.8.2 LocalSchedulerBackend的实现分析

7.9 任务结果获取器TaskResultGetter

7.9.1 处理成功的Task

7.9.2 处理失败的Task

7.10 任务调度器TaskScheduler

7.10.1 TaskSchedulerImpl的属性

7.10.2 TaskSchedulerImpl的初始化

7.10.3 TaskSchedulerImpl的启动

7.10.4 TaskSchedulerImpl与Task的提交

7.10.5 TaskSchedulerImpl与资源分配

7.10.6 TaskSchedulerImpl的调度流程

7.10.7 TaskSchedulerImpl对执行结果的处理

7.10.8 TaskSchedulerImpl的常用方法

7.11 小结

第8章 计算引擎

8.1 计算引擎概述

8.2 内存管理器与执行内存

8.2.1 ExecutionMemoryPool详解

8.2.2 MemoryManager模型与执行内存

8.2.3 UnifiedMemoryManager与执行内存

8.3 内存管理器与Tungsten

8.3.1 MemoryBlock详解

8.3.2 MemoryManager模型与Tungsten

8.3.3 Tungsten的内存分配器

8.4 任务内存管理器

8.4.1 TaskMemoryManager详解

8.4.2 内存消费者

8.4.3 执行内存整体架构

8.5 Task详解

8.5.1 任务上下文TaskContext

8.5.2 Task的定义

8.5.3 ShuffleMapTask的实现

8.5.4 ResultTask的实现

8.6 IndexShuffleBlockResolver详解

8.7 采样与估算

8.7.1 SizeTracker的实现分析

8.7.2 SizeTracker的工作原理

8.8 特质WritablePartitionedPairCollection

8.9 AppendOnlyMap的实现分析

8.9.1 AppendOnlyMap的容量增长

8.9.2 AppendOnlyMap的数据更新

8.9.3 AppendOnlyMap的缓存聚合算法

8.9.4 AppendOnlyMap的内置排序

8.9.5 AppendOnlyMap的扩展

8.10 PartitionedPairBuffer的实现分析

8.10.1 PartitionedPairBuffer的容量增长

8.10.2 PartitionedPairBuffer的插入

8.10.3 PartitionedPairBuffer的迭代器

8.11 外部排序器

8.11.1 ExternalSorter详解

8.11.2 ShuffleExternalSorter详解

8.12 Shuffle管理器

8.12.1 ShuffleWriter详解

8.12.2 ShuffleBlockFetcherIterator详解

8.12.3 BlockStoreShuffleReader详解

8.12.4 SortShuffleManager详解

8.13 map端与reduce端的Shuffle组合

8.14 小结

第9章 部署模式

9.1 心跳接收器HeartbeatReceiver

9.2 Executor的实现分析

9.2.1 Executor的心跳报告

9.2.2 运行Task

9.3 local部署模式

9.4 持久化引擎PersistenceEngine

9.4.1 基于文件系统的持久化引擎

9.4.2 基于ZooKeeper的持久化引擎

9.5 领导选举代理

9.6 Master详解

9.6.1 启动Master

9.6.2 检查Worker超时

9.6.3 被选举为领导时的处理

9.6.4 一级资源调度

9.6.5 注册Worker

9.6.6 更新Worker的最新状态

9.6.7 处理Worker的心跳

9.6.8 注册Application

9.6.9 处理Executor的申请

9.6.10 处理Executor的状态变化

9.6.11 Master的常用方法

9.7 Worker详解

9.7.1 启动Worker

9.7.2 向Master注册Worker

9.7.3 向Master发送心跳

9.7.4 Worker与领导选举

9.7.5 运行Driver

9.7.6 运行Executor

9.7.7 处理Executor的状态变化

9.8 StandaloneAppClient实现

9.8.1 ClientEndpoint的实现分析

9.8.2 StandaloneAppClient的实现分析

9.9 StandaloneSchedulerBackend的实现分析

9.9.1 StandaloneSchedulerBackend的属性

9.9.2 DriverEndpoint的实现分析

9.9.3 StandaloneSchedulerBackend的启动

9.9.4 StandaloneSchedulerBackend的停止

9.9.5 StandaloneSchedulerBackend与资源分配

9.10 CoarseGrainedExecutorBackend详解

9.10.1 CoarseGrainedExecutorBackend进程

9.10.2 CoarseGrainedExecutorBackend的功能分析

9.11 local-cluster部署模式

9.11.1 启动本地集群

9.11.2 local-cluster部署模式的启动过程

9.11.3 local-cluster部署模式下Executor的分配过程

9.11.4 local-cluster部署模式下的任务提交执行过程

9.12 Standalone部署模式

9.12.1 Standalone部署模式的启动过程

9.12.2 Standalone部署模式下Executor的分配过程

9.12.3 Standalone部署模式的资源回收

9.12.4 Standalone部署模式的容错机制

9.13 其他部署方案

9.13.1 YARN

9.13.2 Mesos

9.14 小结

第10章 Spark API

10.1 基本概念

10.2 数据源DataSource

10.2.1 DataSourceRegister详解

10.2.2 DataSource详解

10.3 检查点的实现

10.3.1 CheckpointRDD的实现

10.3.2 RDDCheckpointData的实现

10.3.3 ReliableRDDCheckpointData的实现

10.4 RDD的再次分析

10.4.1 转换API

10.4.2 动作API

10.4.3 检查点API的实现分析

10.4.4 迭代计算

10.5 数据集合Dataset

10.6 DataFrameReader详解

10.7 SparkSession详解

10.7.1 SparkSession的构建器Builder

10.7.2 SparkSession的API

10.8 word count例子

10.8.1 Job准备阶段

10.8.2 Job的提交与调度

10.9 小结

附录

Spark内核设计的艺术:架构设计与实现是2018年由机械工业出版社华章分社出版,作者耿嘉安。

得书感谢您对《Spark内核设计的艺术:架构设计与实现》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
股权激励与股权架构设计 电子书
本书内容涵盖股权激励与股权架构设计的各个模块,以实际场景和应对策略为背景,介绍股权激励与股权架构设计实施的原理、用到的工具、常见的问题和应用的方法等。
股权架构设计与股权激励 电子书
一本企业创办者面向资本市场的控制权安排与激励的操作手册。
系统架构设计 电子书
适读人群:立志向系统架构师转型的广大开发人员本书包含作者基于自身在传统以及互联网行业多年的技术与管理工作经历展开论述,结合方法论和工程实践,具有较强的针对性和适用性,能帮助读者了解并掌握迈向架构师所需的各种知识体系和实践技巧。本书在介绍技术以及过程管理的内容时,采用“思路à方法论à工程实践”的三段式模型,不光告诉读者可以怎么做,更重要的是提供了对问题的分析以及解决思路和方法论,并辅以相应的工程实践和案例分析。本书从“向架构师转型”的角度出发,关注于转型这个特定主题给出了作者自身的一些思考和总结,从内容上填补了市场上的这一空白。
Vue.js设计与实现 电子书
1.Vue.js官方团队成员霍春阳倾力打造;2.基于Vue.js3深入解析Vue.js设计细节;3.Vue.js作者尤雨溪作序推荐;4.本书提供源代码下载;5.业界大咖联袂推荐...
智能可穿戴设备的设计与实现 电子书
本书以智能可穿戴设备开发平台为依托,并结合编者的实际开发经验编写而成,内容包括:可穿戴设备的现状、平台简介和实验说明;IAR-EWARM软件的安装和使用方法,用AndroidStudio开发软件开发可穿戴设备APP;Android入门基础知识;编程实现让APP通过蓝牙和设备进行通信;可穿戴设备模块综合设计。  本书结构清晰,讲解细致,注重学生实践能力的培养。通过学习,读者可对智能可穿戴设备的设计与