spark任务提交过程
2018-08-13 11:07:55 0 举报
spark 的提交流程
作者其他创作
大纲/内容
Driver(进程)
10、每执行到一个Action,就会创建一个Job,Job会提交给DAGScheduler
7、Executor启动之后会自己反向注册到TaskScheduler上去
SparkContent
5、当TaskScheduler构造出来之后,会通过它对应的一个后台进程,去连接Spark集群的Master,向Master注册Application
向Master注册Application
提交Task到executor执行
2、当使用standalone模式去提交的时候,首先会通过反射的方式,创建和构造一个DriverActor进程出来,这个就是我们说的Driver
3、这个Driver进程就会去执行我们自己编写的Application应用程序
反向注册到TaskScheduler
TaskScheduler(有自己的后台进程)
12、每个TaskSet会提交给TaskScheduler,TaskScheduler会把TaskSet里面的每一个Task提交到executor执行(Task分配算法)
14、所以,最后整个spark应用程序的执行,就是stage分批次作为taskset提交到executor执行,每个task针对RDD的一个partition,执行我们定义的算子和函数,以此类推,直到所有操作都执行完为止
DAGScheduler
4、执行应用程序,首先会去创建一个SparkContent,SparkContent初始化的时候最重要的就是构造DAGScheduler和TaskScheduler
Application(自己的程序)
1、写完代码之后打成jar包放在一台机器上使用spark-submit去提交这个任务
9、当所有Executor都反向注册到Driver上之后,Driver结束SparkContext初始化,会继续执行我们自己编写的代码
6、Master在接收到Application注册的请求之后,会使用自己的资源调度算法,在Spark集群的Worker上,为这个Application启动多个executor(Master的资源调度算法)
Spark-submit提交application
executor(进程)
WorkerWorker会为Application启动多个executor
Master
TaskRunner将我们编写的代码,也就是要执行的算子及函数,拷贝,反序列化,然后执行Task
提交spark程序的客户端机器
Spark集群
Master通知Worker启动Executor
13、Executor每接收到一个task,都会用TaskRunner来封装task,然后从线程池里取出一个线程,执行这个Task,以此类推,直到所有的task都执行完
11、DAGScheduler会将Job划分为多个stage,然后每个stage会创建一个TaskSet(Stage划分算法)
Application应用程序
收藏
收藏
0 条评论
回复 删除
下一页