spark的worker收到任务时,在执行fetchAndRunExecutor方式中,执行了ExecutorRunner方法,代码如下:
new ExecutorRunner(
appId,
execId,
appDesc.copy(command = Worker.maybeUpdateSSLSettings(appDesc.command, conf)),
cores_,
memory_,
self,
workerId,
host,
webUi.boundPort,
publicAddress,
sparkHome,
executorDir,
workerUri,
conf,
appLocalDirs, ExecutorState.RUNNING)
CoarseGrainedExecutorBackend 就是在appDesc.copy(command = Worker.maybeUpdateSSLSettings(appDesc.command, conf))这行的appDesc中包含,
在sparkcontext初始化的时候,如果是Standalone模式,在初始化 val backend = new StandaloneSchedulerBackend(scheduler, sc, masterUrls)对象,StandaloneSchedulerBackend对象中command包含了创建CoarseGrainedExecutorBackend的命令。
val command = Command("org.apache.spark.executor.CoarseGrainedExecutorBackend",
args, sc.executorEnvs, classPathEntries ++ testingClassPath, libraryPathEntries, javaOpts)
本文详细解析了Apache Spark中Worker节点接收到任务后的执行过程,特别是如何通过ExecutorRunner方法启动并执行任务,以及Standalone模式下CoarseGrainedExecutorBackend的创建流程。

被折叠的 条评论
为什么被折叠?



