Spark内核架构剖析

 

1(图中流程标号):当我们在strandalone模式下提交我们的spark应用时,会创建和构造一个DriverActor进程出来,这个进程会执行我们的Application应用程序。。。

2写过spark应用程序的都知道,第一步需要构造SparkConf然后创建一个SC(SparkContext),重点来了,SparkContext在初始化的时候最重要的是干两件事:就是构造DAGScheduler和TaskScheDuler。

3:然后,TaskScheduler会负责,通过他的一个后台进程,去连接Master,向Master注册Application.

4:Master接收到TaskScheduler的注册请求后,会使用自己的资源调度算法,在Spark集群的Worker上为Application申请多个Executor,并且通知Worker启动相应的Executor。(实际中有许多的Worker和Executor,这里只用一个来画图展示)

5:Worker会为Application启动相应的Executor。

6:Executor启动后会把自己反向注册到Taskscheduler上面去,至此SparkContext的初始化结束,Driver继续执行我们的程序。

7:每当执行到一个action操作(例如:foreach...)的时候,就会创建一个job,并将job提交给DAGSheduler,DAGScheduler会将job划分为多个stage(按照宽依赖进行划分),然后每个stage创建一个TaskSet,并将TaskSet交给TaskSheduler。

8:TaskSheduler会将每一个TaskSet中的每一个task提交到executor上执行(task分配算法)。

9:Executor每接收到一个task,就会用TaskRunner来封装task,然后丢入线程池进行执行。

总结:spark应用程序的执行,就是stage分批次的作为task提交到executor执行,每一个task针对RDD的partition,执行我们的算子和函数,以此类推,直到所有的操作执行完为止。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值