摘要:
问题的提出 本篇文章将回答如下问题: 1. spark任务在执行的时候,其内存是如何管理的? 2. 堆内内存的寻址是如何设计的?是如何避免由于JVM的GC的存在引起的内存地址变化的?其内部的内存缓存池回收机制是如何设计的? 3. 堆外和堆内内存分别是通过什么来分配的?其数据的偏移量是如何计算的? 4 阅读全文
摘要:
引言 在上两篇文章 spark 源码分析之十九 -- DAG的生成和Stage的划分 和 spark 源码分析之二十 -- Stage的提交 中剖析了Spark的DAG的生成,Stage的划分以及Stage转换为TaskSet后的提交。 如下图,我们在前两篇文章中剖析了DAG的构建,Stage的划分 阅读全文
摘要:
如下,是 spark 相关系列的一些文章汇总,持续更新中...... Spark RPC spark 源码分析之五--Spark RPC剖析之创建NettyRpcEnv spark 源码分析之六--Spark RPC剖析之Dispatcher和Inbox、Outbox剖析 spark 源码分析之七- 阅读全文
摘要:
引言 上篇 spark 源码分析之十九 -- DAG的生成和Stage的划分 中,主要介绍了下图中的前两个阶段DAG的构建和Stage的划分。 本篇文章主要剖析,Stage是如何提交的。 rdd的依赖关系构成了DAG,DAGScheduler根据shuffle依赖关系将DAG图划分为一个一个小的st 阅读全文
摘要:
上篇文章 spark 源码分析之十八 -- Spark存储体系剖析 重点剖析了 Spark的存储体系。从本篇文章开始,剖析Spark作业的调度和计算体系。 在说DAG之前,先简单说一下RDD。 对RDD的整体概括 文档说明如下: RDD全称Resilient Distributed Dataset, 阅读全文
摘要:
本篇文章主要剖析BlockManager相关的类以及总结Spark底层存储体系。 总述 先看 BlockManager相关类之间的关系如下: 我们从NettyRpcEnv 开始,做一下简单说明。 NettyRpcEnv是Spark 的默认的RpcEnv实现,它提供了个Spark 集群各个节点的底层通 阅读全文
摘要:
上篇文章 spark 源码分析之十六 -- Spark内存存储剖析 主要剖析了Spark 的内存存储。本篇文章主要剖析磁盘存储。 总述 磁盘存储相对比较简单,相关的类关系图如下: 我们先从依赖类 DiskBlockManager 剖析。 DiskBlockManager 文档说明如下: 创建并维护逻 阅读全文
摘要:
上篇spark 源码分析之十五 -- Spark内存管理剖析 讲解了Spark的内存管理机制,主要是MemoryManager的内容。跟Spark的内存管理机制最密切相关的就是内存存储,本篇文章主要介绍Spark内存存储。 总述 跟内存存储的相关类的关系如下: MemoryStore是负责内存存储的 阅读全文
摘要:
本篇文章主要剖析Spark的内存管理体系。 在上篇文章 spark 源码分析之十四 -- broadcast 是如何实现的?中对存储相关的内容没有做过多的剖析,下面计划先剖析Spark的内存机制,进而进入内存存储,最后再剖析磁盘存储。本篇文章主要剖析内存管理机制。 整体介绍 Spark内存管理相关类 阅读全文
摘要:
本篇文章主要剖析broadcast 的实现机制。 BroadcastManager初始化 BroadcastManager初始化方法源码如下: TorrentBroadcastFactory的继承关系如下: BroadcastFactory An interface for all the broa 阅读全文