图解Spark内核架构

1. 假设现在有一台提交spark应用的机器,自己编写的应用程序在spark中称为Application,通过spark-submit结合shell提交Application。

2. 提交之后会在本地客户端启动一个进程叫做Driver,spark-submit使用standalone模式提交,会通过反射的方式,创建和构造一个DriverActor进程。

3. Driver进程会先构造SparkConf,再构造SparkContext。

4. SparkContext在初始化时,做的最重要的两件事就是构造DAGScheduler和TaskScheduler。

5. TaskScheduler会通过它对应的一个后台进程,去连接Master,然后向Master注册Application。

6. Master接收到Application注册的请求之后,会使用自己的资源调度算法,在Spark集群的Worker上,为这个Application启动多个Executor(进程)。

7. Executor启动之后,会自己反向注册到TaskScheduler上去。

8 所有的Executor都反向注册到Driver之后,Driver结束SparkContext初始化,会继续执行编写的代码。

9. 每执行一个action,就会创建一个job。

10. job会提交给DAGScheduler,DAGScheduler会将job划分为多个stage(使用stage算法),然后每个stage会创建一个TaskSet。

11. TaskScheduler会把taskset里面每一个task提交到Executor上执行(使用task分配算法)。

12. Executor每接收到一个task,都会用TaskRunner接收task,然后从线程池里取出一个线程执行这个task。 

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

14. Task有两种,ShuffleMapTask和ResultTask,之前的stage,都是ShuffleMapTask。

15. 所以,最后整个spark应用程序的执行,就是stage分批次作为taskset提交到Executor执行,每个task针对RDD的一个Partition,执行定义的算子和函数。依次类推,直到所有操作执行完为止。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值