spark 源码分析
基于 spark 2.1.1 的源码分析 spark 任务的启动流程。
stone-zhu
我的博客:http://zhuleiblog.com
我的github:https://github.com/Zzz468005600
展开
-
Spark 源码分析(九): Task 启动
前面已经分析到了 DAGScheduler 对 stage 划分,并对 Task 的最佳位置进行计算之后,通过调用 taskScheduler 的 submitTasks 方法,将每个 stage 的 taskSet 进行提交。在 taskScheduler 的 submitTasks 方法中会为每个 taskSet 创建一个 TaskSetManager,用于管理 taskSet。然后向调度池...原创 2019-07-08 17:01:07 · 458 阅读 · 0 评论 -
Spark 源码分析(八):DAGScheduler 源码分析2(task 最佳位置计算)
前面一篇文章已经讲了 DAGScheduler 中的 stage 划分算法。实际上就是每当执行到 RDD 的 action 算子时会去调用 DAGScheduler 的 handleJobSubmitted 方法,这个方法内部会根据当前的 RDD 创建一个 ResultStage,然后根据这个 ResultStage 对象创建一个 Job。再将这个 stage 对象传入 submitStage...原创 2019-07-03 23:40:07 · 621 阅读 · 0 评论 -
Spark 源码分析(七): DAGScheduler 源码分析1(stage 划分算法)
前面几篇文章已经说清楚了从 spark 任务提交到 driver 启动,然后执行 main 方法,初始化 SparkContext 对象。在初始化 SparkContext 对象的过程中创建了两个重要组件:一个是 TaskScheduler(实际上是他的实现类 TaskSchedulerImpl 对象),这个对象内部会持有一个 SchedulerBackend 对象,SchedulerBack...原创 2019-07-03 16:36:22 · 875 阅读 · 0 评论 -
Spark 源码分析(六): Executor 向 driver 进行注册
前一篇文章介绍了 Executor 进程的启动,最后启动的是 CoarseGrainedExecutorBackend,执行启动命令后会执行它的 main 方法,启动 CoarseGrainedExecutorBackend 进程。CoarseGrainedExecutorBackend 进程是 Executor 的守护进程,用户 Executor 的创建和维护。首先我们先看下 main 方法...原创 2019-07-02 18:24:32 · 786 阅读 · 0 评论 -
Spark 源码分析(五): Executor 启动
上一篇已经将 Application 注册到了 master 上了,在 master 收到注册消息后会进行一系列操作,最后调用 schedule 方法。这个 schedule 方法会去做两件事,一件事是给等待调度的 driver 分配资源,另一件事是给等待调度的 application 去分配资源启动 Executor。给 application 分配资源启动 Executor 的代码最终会调...原创 2019-07-02 17:39:21 · 629 阅读 · 0 评论 -
Spark 源码分析(四): Application 的注册
在前面一篇文章中分析到了 SparkContext 中的 TaskScheduler 创建及启动。在 StandaloneSchedulerBackend start 代码里除了创建了一个 DriverEndpoint 用于 standalone 模式下用来和 Executor 通信之外还会创建一个 AppClient。这个 AppClient 会向 Master 注册 Applicatio...原创 2019-07-02 16:02:57 · 529 阅读 · 0 评论 -
Spark 源码分析(三): SparkContext 初始化之 TaskScheduler 创建与启动
前面已经分析到了 driver 进程成功在某台 worker 上启动了,下面就开始执行我们写的那些代码了。以一个 wordcount 程序为例,代码如下: val conf = new SparkConf() .setAppName("WordCount") .setMaster("local") val sc = new SparkContext(conf) ...原创 2019-07-02 12:02:01 · 680 阅读 · 0 评论 -
Spark 源码分析(二): Driver 注册及启动
上一篇文章已经已经执行到 Client 向 masterEndpoint 发送了 RequestSubmitDriver 信息,下面就看看 master 怎么注册 driver 信息,并且怎么让 worker 去启动 driver 的。一,org.apache.spark.deploy.master.Master这个 Master 就是前面 Client 发送的对象,是一个 ThreadSaf...原创 2019-07-01 23:16:15 · 1116 阅读 · 0 评论 -
Spark 源码分析(一):Spark Submit 任务提交
研究 Spark 内部是怎么运行的,怎么将 Spark 的任务从开始运行到结束的,先从 spark-submit 这个 shell 脚本提交用户程序开始。我们一般提交 Spark 任务时,都会写一个如下的脚本,里面指定 spark-submit 脚本的位置,配置好一些参数,然后运行:./bin/spark-submit \ --class <main-class> \ --...原创 2019-07-01 17:17:09 · 889 阅读 · 0 评论 -
Spark 中的 RPC
Spark 是一个 通用的分布式计算系统,既然是分布式的,必然存在很多节点之间的通信,那么 Spark 不同组件之间就会通过 RPC(Remote Procedure Call)进行点对点通信。Spark 的 RPC 主要在两个模块中:1,spark-core 中,主要承载了更好的封装 server 和 client 的作用,以及和 scala 语言的融合,它依赖 spark-network-...原创 2019-07-01 11:49:43 · 875 阅读 · 0 评论 -
Spark 的一些名词术语
摘抄官网关于 Spark 中常用的一些名词术语:TermMeaningApplicationUser program built on Spark. Consists of a driver program and executors on the cluster.Application jarA jar containing the user’s Spark ap...原创 2019-06-28 14:47:19 · 675 阅读 · 0 评论