Spark深入解读(二)---- 工作流程

Spark工作流程

在这里插入图片描述

1.使用Spark-submit提交代码至服务器上

2.创建SparkContext,在SparkContext初始化的时候会创建DAGScheduler和TaskScheduler

3.TaskScheduler会启动一个后台进程去集群Master注册Application,申请任务资源,比如CPU,内存等等

4.Master接收注册请求后会利用自己的资源调度算法,在Spark集群的worker上,为Application启动多个Executor

5.worker会启动Executor,Executor会反向注册到Driver上,Driver结束SparkContext初始化,继续执行代码

6.每次执行到一个action算子,就会创建一个job,同时job会被提交到DAGScheduler

7.DAGScheduler会使用划分算法,将job划分成多个stage,然后每个stage都会创建一个TaskSet,划分stage依据是分区间有无数据交互,也就是Shuffle过程

8.TaskScheduler会把TaskSet中的task通过task分配算法提交到Executor上运行,遵循"计算向数据靠拢",TaskScheduler会根据节点上的数据,将对于的任务丢到该节点上。

9.Executor会创建线程池执行task,每个都会task被封装成TaskRunner.

10.Task有两种,ShuffleMapTask和ResultTask,只有最后一个stage使用resultTask,也就是触发action才会返回结果

11.Spark应用的执行就是stage分批次提交TaskSet到Executor,每个Task针对RDD的一个partition,执行定义的算子,直到所有问题完成

发布了428 篇原创文章 · 获赞 539 · 访问量 128万+

猜你喜欢

转载自blog.csdn.net/silentwolfyh/article/details/104453026