详解spark提交流程(一)
1.spark应用程序的机器
2.shell中spark-submit脚本提交程序
3.根据选择的提交方式决定driver进程所启动节点
4.spark-submit方式为spark standalone方式,其实会通过反射的方式创建和构造一个driverActor进程
5.创建sparkContext对象
6.sparkContext再初始化的时候,其主要为创建DAGschedular以及创建TaskScheduler
7.DAGScheduler-->job的切分--->创建TaskSet
8.TaskScheduler-->TaskSet被打散
9.TaskScheduler实际上是负责通过它对应的一个后台进程,去链接Master注册这个Application
10.Master接收到Application注册过来的请求之后,会用资源调度的算法,在spark集群worker上启动多个excutor
11.excutor启动之后会反向注册到Driver上之后,Driver结束SparkContext初始化,会继续执行我们自己写的代码
12.TaskScheduler会把TaskSet里的每个task提交到右边的excutor上去执行 此处为分配算法 后续会详解
13.taskRunner-->每个线程来运行一个taskRunner
14.总结,最后整个这个spark应用程序的执行是stage分批次的作为taskSet提交到executor里面执行,每个Task针对Rdd的一个partition执行我们的算子和函数。