Master原理剖析与源码分析:资源调度机制源码分析(schedule(),两种资源调度算法)

来源:互联网 发布:mac pro2016充电器 编辑:程序博客网 时间:2024/06/06 04:58

1、主备切换机制原理剖析与源码分析
2、注册机制原理剖析与源码分析
3、状态改变处理机制源码分析

4、资源调度机制源码分析(schedule(),两种资源调度算法)

*

  • Driver的调度机制

*

//Master中的schedule()方法。  private def schedule(): Unit = {  //standby的Master是不会被调用的    if (state != RecoveryState.ALIVE) { return }    // 对注册的worker进行过滤,留下Alive的worker。    val shuffledWorkers = Random.shuffle(workers) // Randomization helps balance drivers    //Driver 的调度机制    //首先调度Driver。只有在Yarn—cluster的模式提交下,才会注册Driver。因为StandAlone和Yarn—client模式都会在本地直接启动Driver,不会注册Driver,当然也不可能让Master来调度Driver了。    //只要有活着的workeru没有被遍历到就继续遍历。    //这个driver还没有被启动。    for (worker <- shuffledWorkers if worker.state == WorkerState.ALIVE) {      for (driver <- waitingDrivers) {      //如果当前这个worker的内存空闲量/cpu大于等于Driver需要的内存空闲量/cpu。        if (worker.memoryFree >= driver.desc.mem && worker.coresFree >= driver.desc.cores) {        //启动Driver          launchDriver(worker, driver)          //将Driver从waitingDrivers中移除          waitingDrivers -= driver        }      }    }    startExecutorsOnWorkers()  }
//洗牌  def shuffle[T, CC[X] <: TraversableOnce[X]](xs: CC[T])(implicit bf: CanBuildFrom[CC[T], T, CC[T]]): CC[T] = {    val buf = new ArrayBuffer[T] ++= xs    def swap(i1: Int, i2: Int) {      val tmp = buf(i1)      buf(i1) = buf(i2)      buf(i2) = tmp    }//对集合的数据进行随机打乱    for (n <- buf.length to 2 by -1) {      val k = nextInt(n)      swap(n - 1, k)    }    (bf(xs) ++= buf).result
//在某一个work上启动Driver。  private def launchDriver(worker: WorkerInfo, driver: DriverInfo) {    logInfo("Launching driver " + driver.id + " on worker " + worker.id)    //将Driver加入到worker的缓存中    //将Worker需要的使用的CPU和内存都加入到Driver需要的CPU和内存中    worker.addDriver(driver)    // 同时也把Work加入到Driver的缓存结构了。    driver.worker = Some(worker)    //然后调用work儿的actor,把它发送LaunchDriver消息。让worker来启动Driver,并将Driver启动为Running。    worker.endpoint.send(LaunchDriver(driver.id, driver.desc))    driver.state = DriverState.RUNNING  }
  • Application的调度机制

这里写图片描述

这里写图片描述
这里写图片描述
这里写图片描述

这里写图片描述

阅读全文
0 0
原创粉丝点击