spark任务调度流程

 

spark任务调度流程

 job中的RDD会形成有向无环图(DAG),然后这个DAG会提交给DAGScheduler对象(DAGScheduler是调度任务中的高层调度器,他是在创建sparkcontext也就是启动Driver的时候被创建出来的),它会将job中的RDD依赖关系,根据宽依赖划分成一个个的stage。然后这些被划分好的stage按照taskset的形式发送到TaskScheduler中(TaskScheduler是调度任务中低层调度器,他也是在创建sc的时候创建出来的),它遍历taskset,将task发送到worker的executor中去执行。在TaskScheduler有可能因为各种原因传输失败,他会有三次失败重连,如果还没传输成功,他会认为是stage有问题,就会推到DAGScheduler中尝试4次,如果还是失败,则application中的job就彻底失败,印象接下来的job,但不影响之前成功的job。