spark内核揭秘-04-spark任务调度系统个人理解
2015-01-18 13:35
316 查看
spark的任务调度系统如下所示:
从上图中可以看出来由RDD Objects产生DAG,然后进入了DAGScheduler阶段,DAGScheduler是面向state的高层次的调度器,DAGScheduler把DAG拆分成很多的tasks,每组的tasks都是一个state,每当遇到shuffle就会产生新的state,可以看出上图一共有三个state;DAGScheduler需要记录那些RDD被存入磁盘等物化动作,同时需寻找task的最优化调度,例如数据本地性等;DAGScheduler还要监视因为shuffle输出导致的失败,如果发生这种失败,可能就需要重新提交该state:
DAGScheduler划分state后以TaskSet为单位把任务,把任务交给底层次的可插拔的调度器TaskScheduler来处理:
可以看出TaskScheduler是一个trait,在目前spark系统中TaskScheduler的实现类只有一个TaskSchedulerImpl:
一个TaskScheduler只为一个SparkContext实例服务,TaskScheduler接受来自DAGScheduler发送过来的分组的任务,DAGScheduler给TaskScheduler发送任务的时候是以Stage为单位来提交的,TaskScheduler收到任务后负责把任务分发到集群中Worker的Executor中去运行,如果某个task运行失败,TaskScheduler要负责重试;另外如果TaskScheduler发现某个Task一直未运行完,就可能启动同样的任务运行同一个Task,那个任务先运行完就用哪个任务的结果。
TaskScheduler发送的任务交给了Worker上的Executor以多线程的方式运行,每一个线程负责一个任务:
其中的存储系统的管理是BlockManager来负责的:
看一下TaskSet的源码:
从TaskSet源码的第一个参数tasks就可以看出其是一个Task的数组,包含一组Task。
从上图中可以看出来由RDD Objects产生DAG,然后进入了DAGScheduler阶段,DAGScheduler是面向state的高层次的调度器,DAGScheduler把DAG拆分成很多的tasks,每组的tasks都是一个state,每当遇到shuffle就会产生新的state,可以看出上图一共有三个state;DAGScheduler需要记录那些RDD被存入磁盘等物化动作,同时需寻找task的最优化调度,例如数据本地性等;DAGScheduler还要监视因为shuffle输出导致的失败,如果发生这种失败,可能就需要重新提交该state:
DAGScheduler划分state后以TaskSet为单位把任务,把任务交给底层次的可插拔的调度器TaskScheduler来处理:
可以看出TaskScheduler是一个trait,在目前spark系统中TaskScheduler的实现类只有一个TaskSchedulerImpl:
一个TaskScheduler只为一个SparkContext实例服务,TaskScheduler接受来自DAGScheduler发送过来的分组的任务,DAGScheduler给TaskScheduler发送任务的时候是以Stage为单位来提交的,TaskScheduler收到任务后负责把任务分发到集群中Worker的Executor中去运行,如果某个task运行失败,TaskScheduler要负责重试;另外如果TaskScheduler发现某个Task一直未运行完,就可能启动同样的任务运行同一个Task,那个任务先运行完就用哪个任务的结果。
TaskScheduler发送的任务交给了Worker上的Executor以多线程的方式运行,每一个线程负责一个任务:
其中的存储系统的管理是BlockManager来负责的:
看一下TaskSet的源码:
从TaskSet源码的第一个参数tasks就可以看出其是一个Task的数组,包含一组Task。
相关文章推荐
- spark内核揭秘-04-spark任务调度系统个人理解
- spark内核揭秘-spark任务调度系统
- 深入Spark内核:任务调度(1)-基本流程
- 谈谈对spark任务作业调度的一些理解
- 深入Spark内核:任务调度(3)-TaskScheduler
- spark调度系列------3. RDD依赖的建立以及RDD依赖在任务提交到调度系统的作用
- 深入Spark内核:任务调度(1)-基本流程
- 深入Spark内核:任务调度(2)-DAGScheduler
- 深入理解Linux内核个人小结10---系统调用
- 深入Spark内核:任务调度(4)-Task
- Linux 内核--任务0的调度切换
- 深入理解Linux内核个人小结5---内核同步
- 深入理解Linux内核个人小结2---内存寻址
- 深入理解Linux内核个人小结9---进程地址空间
- 深入理解Linux内核个人小结8---内存区管理
- ucos在s3c2410上运行过程整体剖析--创建任务到多任务调度及运行 分类: μc /os ii 系统有关知识 2012-03-13 21:38 1565人阅读 评论(1) 收藏
- 关于SOC系统的个人理解
- SOC系统任务调度
- Linux内核2.6的进程调度系统介绍
- 深入理解Linux内核个人小结12---虚拟文件系统