摘要:
Spark是现在很流行的一个基于内存的分布式计算框架,既然是基于内存,那么自然而然的,内存的管理就是Spark存储管理的重中之重了。那么,Spark究竟采用什么样的内存管理模型呢?本文就为大家揭开Spark内存管理模型的神秘面纱。 我们在《Spark源码分析之七:Task运行(一)》 阅读全文
摘要:
在《Spark源码分析之七:Task运行(一)》一文中,我们详细叙述了Task运行的整体流程,最终Task被传输到Executor上,启动一个对应的TaskRunner线程,并且在线程池中被调度执行。继而,我们对TaskRunner的run()方法进行了详细的分析,总结出了其内Task执行的三个主要 阅读全文
摘要:
在Task调度相关的两篇文章《Spark源码分析之五:Task调度(一)》与《Spark源码分析之六:Task调度(二)》中,我们大致了解了Task调度相关的主要逻辑,并且在Task调度逻辑的最后,CoarseGrainedSchedulerBackend的内部类DriverEndpoint中的ma 阅读全文
摘要:
话说在《Spark源码分析之五:Task调度(一)》一文中,我们对Task调度分析到了DriverEndpoint的makeOffers()方法。这个方法针对接收到的ReviveOffers事件进行处理。代码如下: 代码逻辑很简单,一共分为三步: 第一,从ex 阅读全文
摘要:
在前四篇博文中,我们分析了Job提交运行总流程的第一阶段Stage划分与提交,它又被细化为三个分阶段: 1、Job的调度模型与运行反馈; 2、Stage划分; 3、Stage提交:对应TaskSet的生成。 Stage划分与提交阶段主要 阅读全文
摘要:
各位看官,上一篇《Spark源码分析之Stage划分》详细讲述了Spark中Stage的划分,下面,我们进入第三个阶段--Stage提交。 Stage提交阶段的主要目的就一个,就是将每个Stage生成一组Task,即TaskSet,其处理流程如下图所示: 与Stag 阅读全文
摘要:
继上篇《Spark源码分析之Job的调度模型与运行反馈》之后,我们继续来看第二阶段--Stage划分。 Stage划分的大体流程如下图所示: 前面提到,对于JobSubmitted事件,我们通过调用DAGScheduler的handleJobSubmitted()方法 阅读全文
摘要:
在《Spark源码分析之Job提交运行总流程概述》一文中,我们提到了,Job提交与运行的第一阶段Stage划分与提交,可以分为三个阶段: 1、Job的调度模型与运行反馈; 2、Stage划分; 3、Stage提交:对应TaskSet的生成。 阅读全文
摘要:
Spark是一个基于内存的分布式计算框架,运行在其上的应用程序,按照Action被划分为一个个Job,而Job提交运行的总流程,大致分为两个阶段: 1、Stage划分与提交 (1)Job按照RDD之间的依赖关系是否为宽依赖,由DAGScheduler划分为一个个Sta 阅读全文