您的位置:首页 > 其它

五:spark作业调度与执行

2018-01-06 19:02 246 查看
一:spark调度管理的基本概念

1. Application

           基于Spark的应用程序,由一个或多个作业组成。每个应用程序的执行涉及Driver program和集群上的Executors两部分。
2.Job

        Job即作业,是包含多个Task的并行计算,其与Appliction中的执行操作一一对应,也就是说Application每提交一个执行操作Spark就对应生成一个Job。
3.Task

       Task即任务,是被送到Executor执行的工作单元。RDD中的每个分区都对应相应的Task,而每个Task对应于Executor中的一个线程。
4.Executor

      是worker上某个Application启动的一个进程,该进程负责执行任务并且负责将数据存储在内存或磁盘中。一个worker节点上可能有多个Executor,但是每个Executor中仅执行一个Application对应的任务。也就是说,不同的Application通过Executor无法共享数据。
5.Cluster Manager

      是在集群上获取资源的外部服务。在执行Spark Application过程中,集群上的资源如何调度,由Cluster Manager进行管理。

二:作业调度流程

   1.一个spark作业被逐步拆分成更小的调度单元,最终以任务的形式按照一定的逻辑依赖关系依次提交执行,并返回结果。

    2.在作业调度的相关类中,最重要的就是DAGScheduler和TaskScheduler。DAGScheduler是基于DAG的调度类,负责将作业拆分成不同的阶段具有依赖关系的多批任务组,在逻辑上实现对Spark作业的调度。TaskScheduler则根据不同的任务需求,负责调度和管理每个任务所需的资源,在物理层面实现对Spark作业的执行。





首先在RDD的转化过程中,父RDD与子RDD之间形成依赖关系,同时也确定了DAG;然后DAG图由DAGScheduler将DAG中划分成若个stage(stage中包含若干个RDD,这些RDD之间全部都是在依赖的关系)。DAGScheduler是面向stage的调度器,其调度的单位是stage。每个stage对应一个Taskset,因此DAGScheduler是以Taskset的形式向TaskScheduler提交每个stage(其中一个TaskScheduler只为yigesparkContext服务),这些Task被分布到集群节点上去运算。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: