美文网首页
第十五章调度管理

第十五章调度管理

作者: 小小少年Boy | 来源:发表于2018-07-17 15:29 被阅读0次

第十五章调度管理

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

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,

  • 对于NarrowDependency, Spark会尽量多地将RDD转换放在同一个Stage中;
  • 而对于WideDependency, 由于WideDependency通常意味着Shuffle操作,因此Spark会将此Stage定义ShuffleMapStage,以便于向MapOutputTracker注册Shuffle操作。

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

  • (1) ShuffleMapStage
    这种Stage是以Shuffle为输出边界,其输入边界可以是从外部获取数据,也可以是另一个ShuffleMapStage的输出,其输出可以是另一个Stage的开始。ShuffleMapStage的最后Task就是ShuffleMapTask,在一个Job里可能有该类型的Stage,也可能没有该类型的 Stage。
  • (2) ResultStage
    这种Stage是直接输出结果,其输入边界可以是从外部获取数据,也可以是另一个 ShuffleMapStage的输出。ResultStage的最后Task就是ResultTask,在一个Job里必定有该类,型的Stage,一个Job含有一个或多个Stage,但至少含有一个ResultStage.

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

相关文章

  • 第十五章调度管理

    第十五章调度管理 常用的作业调度基本概念: Job:作业,一次Action生成的一个或多个Stage组成的一次计算...

  • 大数据相关开源项目汇总

    调度与管理服务 **Azkaban **是一款基于Java编写的任务调度系统任务调度,来自LinkedIn公司,用...

  • 打通Framework与Kernel-谈谈我对进程管理的理解

    Kernel:Linux学习-进程管理与调度(一)-进程描述及其生命周期Linux学习-进程管理与调度(二)-进程...

  • Quartz 调度器

    一、简介 Quartz是一个开源作业调度框架,框架的核心是调度器,调度器负责管理Quartz应用运行时环境,调度器...

  • kernel

    kernel|-------BootLoader done|-------内存管理 doing|-------调度...

  • MES系统总体框架

    生产运行管理系统用于公司的日常生产调度管理,实现对生产成本的实时控制与分析、调度管理的综合分析和决策支持、工艺...

  • 操作系统笔记

    操作系统主要功能 进程管理(CPU管理) 进程控制:创建,暂停,唤醒,撤销 进程调度:调度策略,优先级 进程通信:...

  • 《分布式技术原理与算法解析》学习笔记Day11

    调度框架:两层调度 为什么会有两层调度? 单体调度的核心是所有节点的资源以及用户的任务均由中央服务器统一管理和调度...

  • 《分布式技术原理与算法解析》学习笔记Day10

    调度框架:单体调度 什么是调度? 分布式系统架构的目的是将多个服务器资源管理起来,对外提供服务。调度是指为用户任务...

  • 线程管理调度

    任务调度器和任务切换 调度器schedule并不仅仅由时钟中断函数来处理,他还有被其他函数调用的情况例如threa...

网友评论

      本文标题:第十五章调度管理

      本文链接:https://www.haomeiwen.com/subject/fxpwpftx.html