这2个概念很容易混淆,需要写一遍文章梳理
spark的 DAGschedule & task schedule 区别以及相互联系
在我们的应用程序的mian 方法中我们定义了sparkcontext ,sparcontext 会帮我们生成这两个调度器 DAGschedule(高级调度器) & task schedule(低级调度器)
DagScheduler:DagScheduler是一个高级的scheduler 层,他实现了基于stage的调度,他为每一个job都计算stage,跟踪哪一个rdd和stage的输出被物化(固化),以及寻找到执行job的最小的调度,然后他会将stage作为tasksets提交给底层的TaskScheduler,由TaskScheduler执行。
TaskScheduler:每一个taskScheduler只为一个单独的SparkContext进行调度安排tasks,DAGScheduler会为每一个stage向TaskScheduler提交Tasksets(也就是说TaskSets是在DAGScheduler完成组装),TaskScheduler会负责向cluster发送tasks,并且调用backend来运行task。并且在tasks失败的时候,重试,然后会将运行task,重试task的事件返回给DAGScheduler。以上内容是这两个schedule 的主要区别 ,但不是全部 ,梳理中,,,,,