Spark的TaskScheduler和DagScheduler
来源:互联网 发布:linux 赋值 命令结果 编辑:程序博客网 时间:2024/05/22 02:16
转自http://yangyoupeng-cn-fujitsu-com.iteye.com/blog/2040748
在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
参考:
1.Spark官网:https://spark.apache.org/docs/0.9.0
2.Spark源代码
3.白硕:http://baishuo491.iteye.com/
4.http://jerryshao.me/architecture/2013/04/21/Spark%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E4%B9%8B-scheduler%E6%A8%A1%E5%9D%97/
0 0
- Spark的TaskScheduler和DagScheduler
- Spark的TaskScheduler和DagScheduler
- Spark的TaskScheduler和DagScheduler
- Spark TaskScheduler和DagScheduler介绍
- DAGScheduler 和 TaskScheduler 的关系
- Spark之SchedulerBackend、DAGScheduler和TaskScheduler
- Spark Core Runtime分析: DAGScheduler, TaskScheduler, SchedulerBackend
- Spark之任务调度(DagScheduler & TaskScheduler)
- Spark Core Runtime分析: DAGScheduler, TaskScheduler, SchedulerBackend
- Spark Core Runtime分析: DAGScheduler, TaskScheduler, SchedulerBackend
- Spark Core Runtime分析: DAGScheduler, TaskScheduler, SchedulerBackend
- Spark Core Runtime分析: DAGScheduler, TaskScheduler, SchedulerBackend
- spark调度分析: DAGScheduler, TaskScheduler, SchedulerBackend
- 7.DAGScheduler的stage算法划分和TaskScheduler的task算法划分
- spark dagscheduler
- Spark 源码解析:彻底理解TaskScheduler的任务提交和task最佳位置算法
- spark学习-63-源代码:schedulerBackend和taskScheduler的创建(1)-local
- spark学习-64-源代码:schedulerBackend和taskScheduler的创建(2)-StandLone
- 我的2015
- LEETCODE 125
- 630A. Again Twenty Five!
- 146.Evaluate the following SQL statement:
- IOS网络支持库AFNetworking(1)
- Spark的TaskScheduler和DagScheduler
- Jenkins + Git + fir 构建并分发 iOS 项目
- iOS 拖动手势
- Tomcat部署不到Web项目
- spring无法创建Bean
- Android editText 隐藏密码框
- 自写:二维码签到程序,功能咋能完善一些?
- Androidt调试汇总(二)极光推送,百度地图
- IOS事件传递机制