spark程序使用spark-submit方式提交,如果是standalone集群的话,会在提交任务的节点启动一个driver进程;
dirver进程启动以后,首先是构建sparkcontext,sparkcontext主要包含两部分:DAGScheduler和TaskScheduler
TaskScheduler会寻找Master节点,Master节点接收到Application的注册请求后,通过资源调度算法,在自己的集群的worker上启动Executor进程;启动的executor也会反向注册到TaskScheduler上

Executor进程内部会维护一个线程池,Executor每接收到一个task,都会用TaskRunner封装task,然后从线程池中取出一个线程去执行taskTaskRunner主要包含两种task:ShuffleMapTask和ResultTask,除了最后一个stage是ResultTask外,其他的stage都是ShuffleMapTaskExecutor注册到TaskScheduler后,driver进程会对程序进行划分,划分成一个或者多个action;每个action就是一个job;DAGScheduler通过stage划分算法对job进行划分;每个stage创建一个taskset;然后DAGScheduler将taskset提交给TaskScheduler去执行;
spark任务提交流程(standalone)

相关文章: