Yarn的调度器, Spark的任务调度, DAGSchedule, TaskSchedule, worder 13

1. 复习, Yarn三种调度器

1.1 什么是调度器

主要是用于研究一个任务提交之后,下一个任务又来了改怎么执行. 绝对我们任务如何进行执行.

1.2 Yarn当中的调度器主要有三种

  • 第一种:队列调度器FIFO: 第一个任务提交,先执行.然后第二个任务提交,等着第一个任务执行完毕之后再执行第二个任务.
    第一个任务: 大任务, 需要运行4个小时
    第二个任务: 小任务, 需要运行3分钟.
    在这里插入图片描述
    这种调度器没人用了,不管是apache软件的版本,还是CDH软件的版本.
    hadoop1.x使用的是这种版本的调度器
  • 第二种调度器: capacity Scheduler容量调度器, apache的版本默认使用的调度器.
    • 优点: 将整个资源,换分为好多块.
      根据我们提交的任务需要资源的大小,将我们的任务,划分到不听的资源队列里面去,可以允许多个任务并行的快速的执行
    • 缺点: 将资源给划散了.
      在这里插入图片描述
  • 第三种调度器: Fair Scheduler公平调度器, CDH的软件默认使用的调度器.
    第一个任务提交: 将所有的资源全部分配给第一个任务,保证第一个任务最快的完成.
    第二个任务提交: 从第一个任务当中划分一部分资源出来, 给第二个任务进行执行.
    • 优点: 可以快速的执行我们的一些大任务
    • 缺点: 造成资源频繁的分配.
      在这里插入图片描述

2. Spark任务调度

Spark任务调度模式是FIFO

各个RDD之间存在着依赖关系,这些依赖关系就形成有向无环图DAG,DAGScheduler对这些依赖关系形成的DAG进行Stage划分,划分的规则很简单,从后往前回溯,遇到窄依赖加入本stage,遇见宽依赖进行Stage切分。完成了Stage的划分。DAGScheduler基于每个Stage生成TaskSet,并将TaskSet提交给TaskScheduler。TaskScheduler 负责具体的task调度,最后在Worker节点上启动task。
在这里插入图片描述

  • 首先,RDD Objects划分成DAG(有向无环图)
    各个RDD之间存在着依赖关系, 这些依赖关系就形成有向无环图DAG.
  • DAG Scheduler 职能如下
    • 划分DAG成多个stage, 每个stage会形成一个taskSet.
    • 记录缓存的RDD血统.
    • 提交taskSet到Task Scheduler(不同模式有不听的底层任务调度器)
      a. Spark-Cluster模式下是TaskScheduler
      b. Yarn-Cluster模式下是YarnClusterScheduler
      c. Yarn-Client模式下是YarnClientClusterScheduler
    • 重新提交丢失的stage到TaskScheduler
  • Task Scheduler(不知道stage是哪一部分RDD的数据)
    • 每个TaskSet(Stage)生成一个taskManager
    • 决定task任务执行的最佳位置
    • 推测执行,哪些任务执行慢,就停止这些任务重新到新节点上执行
    • 提交一组taskSet(tasks) + 参数
    • 将丢失的taskSet重新提交给DAG Scheduler ==> 队列FIFO的原则执行推过来的stage.
  • worker 是真正的执行任务的节点
    • 每个分区开启一个进程(executor)
    • 每个executor中, 开启一组线程, 执行一组taskSet, 每个task就是一个线程
    • 实时报告metrics给老大
    • 将计算结果返回给driver.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值