Spark的TaskScheduler和DagSchedulerITeye - 凯时娱乐

Spark的TaskScheduler和DagSchedulerITeye

2019-01-12 09:46:41 | 作者: 易蓉 | 标签: 调度,一个,失利 | 浏览: 3041

开端研讨奇特的spark。会连续将研讨的心得放上来。 

在Spark中一个中心的是模块便是调度器(Scheduler),在spark中Scheduler有两种TaskScheduler(是初级的调度器接口),DagScheduler(是高档的调度) 

咱们在创立SparkContext目标的时分,sparkcontext内部就会创立TaskScheduler和DagScheduler,奇观从此就发生了。 

其间TaskScheduler和DagScheduler的联系。 
DagScheduler:DagScheduler是一个高档的scheduler 层,他完结了依据stage的调度,他为每一个job都核算stage,盯梢哪一个rdd和stage的输出被物化(固化),以及寻找到履行job的最小的调度,然后他会将stage作为tasksets提交给底层的TaskScheduler,由TaskScheduler履行。 
除了核算stage的DAG图之外,这个调度器会决议运转task的最优的方位,这是依据当时的cache 状况,而且把这些状况传递给TaskScheduler。而且,他会在shuffle的输出呈现过错(比方输出文件丢掉)的时分处理失利,这时,之前老的stage就需要被重做。关于并不是因为shuffle file的丢掉而形成的stage的失利,这中失利由TaskScheduler,此刻TaskScheduler会在撤销整个stage之前重试几回task,若重试的几回都失利了,那就会撤销stage。 
TaskScheduler:每一个taskScheduler只为一个独自的SparkContext进行调度组织tasks,DAGScheduler会为每一个stage向TaskScheduler提交Tasksets(也便是说TaskSets是在DAGScheduler完结拼装),TaskScheduler会担任向cluster发送tasks,而且调用backend来运转task。而且在tasks失利的时分,重试,然后会将运转task,重试task的事情回来给DAGScheduler。 
     所以要研讨Spark的使命调度,以及履行,需要从DagScheduler-- TaskScheduler进行研讨。 

在Spark内部TaskScheduler的品种: 
1.TaskSchedulerImpl(该调度器,完结依据moses、local、local-cluster、simr的调度)。该类还支撑发动speculative task 
2.YarnClientClusterScheduler 
3.YarnClusterScheduler 
其间YarnClientClusterScheduler和YarnClusterScheduler便是依据Yarn资源调度。 

TaskScheduler中实践履行task时会调用Backend.reviveOffers,在spark内有多个不同的backend: 
1.LocalBackend 
2.SparkDeploySchedulerBackend 
3.CoarseGrainedSchedulerBackend 
4.MesosSchedulerBackend 
5.YarnClientSchedulerBackend 
6.SimrSchedulerBackend 

 

 

http://yangyoupeng-cn-fujitsu-com.iteye.com/blog/2040748

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯时娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章