一、相关的组件以及名词
1、Application
2、spark-submit
3、Driver
4、DAGscheduler
5、taskscheduler
6、Master
7、worker
9、exector
10、task
11、shufflemaptask and resulttask
二、各个组件执行流程如下
1、我们通过spark-submit提交我们的Application。
2、在提交完成之后会在我们的本地启动Driver进程,这个进程会创建一个sparkContext对象,它在初始化的时候会初始化很多相关的配置,其中一个是DAGscheduler还有一个是taskscheduler
3、taskscheduler在初始化完成之后会用自己的后台进程去连接Master,向master注册application
4、Master在接收到taskscheduler的请求时候,会利用自己的资源调度算法,为application启动exector
5、Master通知worker启动exector,在worker启动之后会反向注册到taskscheduler上去,到此为止sparkContext初始化完成
6、开始执行我们的代码,按照我们的逻辑,在代码中每遇到一个action就会创建一个job
7、把job提交给DAGscheduler,DAGscheduler把job划分为不同的stage,每一个stage创建一个taskset把它提交给taskscheduler
8、taskscheduler接收到taskset之后,将每一个task提交到exector上去执行
9、exector收到task之后会用taskrunner来封装task,然后在线程池中取出一个线程来执行task,在执行过程中会出现shufflemaptask和resulttask,只有最后一个是resulttask其他都是shufflemaptask
三、示意图