spark从入门到放弃十一: 内核架构深度剖析之执行流程

122 篇文章 15 订阅
43 篇文章 1 订阅

文章地址:http://www.haha174.top/article/details/251403
前10篇主要介绍到了spark action,算子等一些简答的demo 操作。那么那些操作是怎么在spark 中运行的呢。下面将进行逐步的介绍。

图解:

这里写图片描述

说明:

1.首先会将编写的程序jar包上传到有spark 客户端的机器上通过spark-submit提交到集群上面取运行。这个jar 在spark 中有个专有名词叫Application.

2.通过spark-submit 提交的方式。之前的那种提交模式叫做standalone,其实会通过反射的方式,创建个构造出一个DriverActor进程出来.就叫他Driver.

3.Driver进程回去执行Application,也就是取执行我们编写的代码。回顾一下之前编写的spark 应用。先构造Sparkconf,在构造SparkContext.。 SparkContext在初始化的时候做的最重要的两件事就是构造出来DAGScheduler和TaskScheduler.

4.TaskScheduler 在构造TaskScheduler的时候,会去连接spark集群中的master节点。向master节点注册application.

5.master接受到application的注册请求后会使用自己的资源调度算法(后面会介绍)在spark集群的worker为这个application启动一个或者多个Executer.

6.worker会为了Application启动一个或者多个Executer。

7.Executer启动之后会自己反向注册到TaskScheduler上。这样TaskScheduler就知道服务于这个Application的Executer有那些了

8.所有当前Application 的Executer都反向注册到TaskScheduler上之后,Driver结束SparkContext的初始化,去执行编写的代码。

9.每执行到一个action操作时,就会创建一个job.job会提交给DAGScheduler

10.DAGScheduler 会将job划分成多个stage(Stage划分算法后面会介绍).然后为每一个stage创建一个TaskSet.

11.每一个TaskSet会提交给TaskScheduler。TaskScheduler会将TaskSet中每一个task提交到Executer中执行(task分配算法会在后面介绍)

12.Executer每接受到一个task.都会用TaskRunner来封装task.然后从线程池中取出一个线程来执行这个task.

13.TaskRunner将编写的代码,也就是要执行的算子以及函数,拷贝,反序列化。然后执行task.

14.Task 有两种一种是ShuffleMapTask和ResultTask.只有最后一个Stage是ResultTask其他都是ShuffleMapTask。

15.所以最后整个spark程序应用的执行。就是stage分批次作为tasker提交到Executer中执行,每个task针对RDD的一个partition.执行我们定义的算子和函数。

16依次类推知道所有操作执行完。

欢迎关注,更多福利

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值