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
- Master原理剖析与源码分析:资源调度机制源码分析(schedule(),两种资源调度算法)
- Spark源码分析之Master资源调度算法原理
- Spark资源调度机制源码分析--基于spreadOutApps及非spreadOutApps两种资源调度算法
- 4.master资源调度源码分析(Driver调度和Application调度(两种))
- 深入理解Spark 2.1 Core (六):资源调度的原理与源码分析
- Master原理剖析与源码分析:Master状态改变处理机制原理剖析与源码分析
- Zeppelin源码分析-调度和资源分析(1)
- Zeppelin源码分析-调度和资源分析(2)
- kubernetes1.8 源码分析之资源调度
- Master原理剖析与源码分析:主备切换机制原理剖析与源码分析
- Master原理剖析与源码分析:注册机制原理剖析与源码分析
- Spark内核源码深度剖析:Master主备切换机制原理剖析与源码分析
- Spark内核源码深度剖析:Master注册机制原理剖析与源码分析
- Spark1.6源码之资源调度机制
- Spark2.2 任务调度机制schedule()源码剖析
- GlusterFS:调度(Scheduler)算法源码分析
- spark源码学习(十一):资源的调度Schedule
- spark源码学习(二)---Master源码分析(3)-master对driver、executor的调度
- 数据库视频—总结
- 我是如何获取到全校同学的证件照?
- 【笔记+模板】 kmp算法 待更新
- 通过Jackson实现Java对象和json字符串的相互转换
- BaseServlet
- Master原理剖析与源码分析:资源调度机制源码分析(schedule(),两种资源调度算法)
- IDEA中Maven不导包
- 决策树简单解释
- Python 线程,生产者消费者模式(队列存放商品)
- Navicat下载_Navicat 64位_Navicat for mysql
- Python中字符串的方法
- hdu 3530(单调队列)
- 求出0~999之间的所有“水仙花数”并输出。“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。
- Java基础(集合)