第十五章调度管理

2018-07-17  本文已影响0人  小小少年Boy

第十五章调度管理

常用的作业调度基本概念:

Job:作业,一次Action生成的一个或多个Stage组成的一次计算作业
Stage:调度阶段,不需要进行Shuffle的调度过程,一个任务及所对应的调度阶段
TaskSet:任务集,一组相互关联的,且没有Shuffle依赖关系的任务组成的集合
Task:任务,单个分区数据集上的最小处理单元

1 应用程序间的调度

静态资源分配
动态资源分配:资源分配策略

2 应用程序中的调度

公平调度池
配置调度池属性

3 调度器

1)简介

调度器

2)调度池

调度池

3)Job调度流程

Job调度流程

提交并运行一个Job的基本流程:
1、划分Job
2、生成Job,提交Stage
3、任务集的提交
4、任务作业完成状态的监控
5、任务结果的获取

4)调度模块

1、DAGScheduler

DAGScheduler是一个高级的Scheduler层,它实现了基于Stage的调度,为每一个Job都计算Stage,跟踪哪一个RDD和Stage的输出被固化,以及寻找到执行Job的最小的调度,然后将Stage作为TaskSets提交给底层的TaskScheduler,有TaskScheduler执行。
DAGScheduler的主要功能是接受用户提交的Job,将Job根据类型划分为不同的Stage,并在每一个Stage内产生一系列的Task,向TaskScheduler提交Task。

2、TaskSetManager

DAGScheduler负责将一组任务提交给TaskScheduler以后,这组任务的调度工作已经完成,接下来这组任务内部的调度逻辑,则是由TaskSetManager完成的。

3、TaskScheduler

每一个TaskScheduler只为一个单独的SparkContext进行调度安排的任务,DAGScheduler会为每一个阶段向TaskScheduler提交taskset(也就是说,taskset是在DAGScheduler完成组装),TaskScheduler会负责向集群发送任务,并且调用后台运行任务。同时,在任务失败时重试,然后会将运行任务,重试任务的事件返回给DAGScheduler。

TaskSchedulerListener:TaskSchedulerListener部分的主要功能是监听用户提交的工作,将工作分解为不同类型的舞台以及相应的任务,并向TaskScheduler提交任务。

TaskScheduler:TaskScheduler接收用户提交的任务并执行。
TaskScheduler根据部署的不同又分为三个子模块:ClusterScheduler,LocalScheduler,MesosScheduler,TaskScheduler会根据部署方式而选择不同的SchedulerBackend来处理。

在SparkContext.createTaskScheduler中,针对不同的部署方式会>有不同的TaskScheduler与SchedulerBackend进行组合:
Local模式:TaskSchedulerlmpl + LocalBackend;

Spark集群模式:TaskSchedulerlmpl + SparkDepolySchedulerBackend;

Yarn-Cluster模式:YarnClusterScheduler + CoarseGrainedSchedulerBackend;

Yarn-Client模式:YarnClientClusterScheduler + YarnClientSchedulerBackend

TaskScheduler类负责任务调度资源的分配,SchedulerBackend负责与主人,工人通信收集工人上分配给该应用使用的资源情况。

4、Stage
根据RDD依赖关系的不同, Spark也将每一个Job分为不同的Stage,而Stage之间的依赖关系则形成DAG,

Spark通常将Shuffle操作定义为Stage的边界。

5)存储管理

1、Shuffle数据持久化
由于Shuffle涉及了磁盘的读写和网络的传输,因此Shuffle性能的高低直接影响到整个程序的运行效率。

2、存储层storage
在Storage模块中所有的操作都是和Block相关的,但是在RDD中所有的运算都是基于Partition的,那么Partition是如何与Block对应上的呢?

RDD的Transformation, Action和Block数据建立了联系,虽然抽象上我们的操作是在Partition层面上进行的,但是Partition最终还是被映射成为Block,因此实际上我们的所有操作都是对Block的存取和处理。

6)RDD分区和数据块关系

1)分区和数据块一一对应
2)分区和数据块的对应关系是通过名称上的约定进行的,每个RDD都有一个唯一的ID,每个分区都有唯一的索引,以ID+索引号作为数据块名便自然的建立起了分区与块的映射。


Boy-20180717

上一篇 下一篇

猜你喜欢

热点阅读