spark的作业调度分为3个级别:DAG调度器 ==>TaskScheduler(任务调度器)==> SchedulerBackend(后台调度器)
第一级作业调度:DAG调度器DAGScheduler
当我们写好应用程序,程序里面有sc.count()或sc.collect()时,或者我们在scalashell发出的命令中有sc.count()或sc.collect()时(这俩函数都是action类的函数)于是启动了作业提交流程。流程如下( ==> 符号表示进入下一步)
action函数调用sc.runjob() ==>
由DAG调度器把作业转换成事件(event), DAG调度器把事件添加到EventProcessLoop(这是一个事件处理队列)==>
线程EventThread会专门从EventProcessLoop队列中获取事件,交给DAGS