
这里是SparkContext.createTaskScheduler(),匹配模式,创建TaskScheduler,创建SparkSchedulerBackend,然后 TaskSchedulerImpl调用initialize方法,此方法会将SparkSchedulerBackend对象传进去,填充TaskSchedulerImpl的backend对象。并且会创建pools(资源调度池),该池是为提交task到excutor而实现的。资源调度算法有fifo和fair两种。 SparkContext创建完TaskScheduler以后,会先创建DAGSchduler,然后调用taskScheduler的start方法(taskScheduler是个trait,他的实现是taskSchdulerImpl),该方法会启动backend




下图是:sparkSchedulerBackend的start方法首先进行各种参数的填充,最后会创建Appclient(),创建Applicent前创建ApplicationDescription,它会把我们设置的什么应用名称啊,多少内存啊,几个核啊,这些资源信息整合起来。然后放到Applicent里面。

Appclient去连接master

下图是DAGschduler的功能
本文详细解析了Spark中任务调度的流程,从SparkContext创建TaskScheduler开始,介绍如何初始化TaskSchedulerImpl并设置资源调度算法(FIFO或Fair)。进一步探讨了DAGScheduler的作用及与TaskScheduler的关系,以及SparkSchedulerBackend如何整合应用资源信息并启动AppClient连接Master。

2917

被折叠的 条评论
为什么被折叠?



