Worker原理剖析与源码分析
来源:互联网 发布:如何做一个数据分析师 编辑:程序博客网 时间:2024/06/06 12:42
- Master会让worker启动一个Driver Runnner线程,启动Driver线程(launchDriver)。
- Master让Worker启动一个ExecutorRunner,去启动Executor进程并向Driver反向注册(launchExecutor)。
case LaunchDriver(driverId, driverDesc) => { logInfo(s"Asked to launch driver $driverId") //创建一个Driver Runner,管理Driver 进程。 val driver = new DriverRunner( conf, driverId, workDir, sparkHome, driverDesc.copy(command = Worker.maybeUpdateSSLSettings(driverDesc.command, conf)), self, workerUri, securityMgr) drivers(driverId) = driver driver.start() coresUsed += driverDesc.cores memoryUsed += driverDesc.mem
Driver Runner机制
private[worker] def start() = {//这里创建了一个JAVA的线程 new Thread("DriverRunner for " + driverId) { override def run() { try { //创建一个Driver目录 val driverDir = createWorkingDirectory() //获取JOb需要的jar包 val localJarFilename = downloadUserJar(driverDir) def substituteVariables(argument: String): String = argument match { case "{{WORKER_URL}}" => workerUrl case "{{USER_JAR}}" => localJarFilename case other => other } // 构建了ProessBuilder //启动Driver,并为其分布资源 val builder = CommandUtils.buildProcessBuilder(driverDesc.command, securityManager, driverDesc.mem, sparkHome.getAbsolutePath, substituteVariables) //ProessBuilder启动Driver launchDriver(builder, driverDir, driverDesc.supervise) } catch { case e: Exception => finalException = Some(e) } val state = //对Driver的退出状态做一些处理 if (killed) { DriverState.KILLED } else if (finalException.isDefined) { DriverState.ERROR } else { finalExitCode match { case Some(0) => DriverState.FINISHED case _ => DriverState.FAILED } } finalState = Some(state) //Driver向worker发送一个DriverStateChanged事件 worker.send(DriverStateChanged(driverId, state, finalException)) } }.start() }
阅读全文
0 0
- Worker原理剖析与源码分析
- Spark Worker原理和源码剖析解密
- Spark2.2 Worker原理剖析图解及源码剖析
- Executor原理剖析与源码分析
- DAGScheduler原理剖析与源码分析
- TaskScheduler原理剖析与源码分析
- Shuffle原理剖析与源码分析
- CacheManager原理剖析与源码分析
- BlockManager原理剖析与源码分析
- Master原理剖析与源码分析:主备切换机制原理剖析与源码分析
- Master原理剖析与源码分析:注册机制原理剖析与源码分析
- Master原理剖析与源码分析:Master状态改变处理机制原理剖析与源码分析
- 33 Spark worker原理与源码
- 第32课:Spark Worker原理和源码剖析解密:Worker工作流程图、Worker启动Driver源码解密、Worker启动Executor源码解密等
- 6.job触发流程原理剖析与源码分析
- job触发流程原理剖析与源码分析
- Spark2.2 job触发流程原理剖析与源码分析
- Spark2.2 TaskScheduler原理剖析与源码分析
- 兄弟数
- 数据结构与算法学习笔记——数组
- 创刊纪: 数据科学家的进阶之路
- centos配置安装vnc
- Linux面试题汇总
- Worker原理剖析与源码分析
- binary search-二分法模板
- java多线程-synchronized对象和方法的区别
- Cortex-m3启动代码分析笔记及增添
- Linux锁机制
- windows10配置php7.1+apache2.4+mysql5.7
- 【算法】【Graph】Course Schedule
- 学习JavaScript数据结构与算法(八)——二叉树
- 计算机领域祖师爷——图灵 Turing