脚本启动流程
1、在主节点启动start-all.sh 调用 start-master.sh 调用 start-daemon.sh org.apache.spark.deploy.master.Master 调用 spark-class (启动后面类的main方法)
2、start-slaves.sh 调用 start-slave.sh spark://hadoop01:7077
3、spark-deamon.sh 调用 spark-class 类名 调用org.apache.spark.launcher.Main
sparksubmit 关键源码
def main(args: Array[String]): Unit = {
val appArgs = new SparkSubmitArguments(args)
if (appArgs.verbose) {
printStream.println(appArgs)
}
appArgs.action match {
case SparkSubmitAction.SUBMIT => submit(appArgs)
case SparkSubmitAction.KILL => kill(appArgs)
case SparkSubmitAction.REQUEST_STATUS => requestStatus(appArgs)
}
}
submit方法中,
先解析参数 val (childArgs, childClasspath, sysProps, childMainClass) = prepareSubmitEnvironment(args)
再执行dorunmain方法里面主要是执行 runMain(childArgs, childClasspath, sysProps, childMainClass, args.verbose)
在runmain方法中
先通过反射拿到目标类 mainClass = Class.forName(childMainClass, true, loader)
拿到main方法 val mainMethod = mainClass.getMethod("main", new Array[String](0).getClass)
调用main方法 mainMethod.invoke(null, childArgs.toArray)
然后main方法中我们生成了 sparkconf 和sparkcontext
sparkcontext 任务的人口类
主要做件事
1、创建SparkEnv(内部启动Actor)
2、
3、
4、创建任务调度器TaskScheduler
5、
6、
7、创建DAGScheduler 切分Stage的
8、启动TaskScheduler
实现调用了creatSparkEnv 创建SparkEnv
private[spark] def createSparkEnv(
conf: SparkConf,
isLocal: Boolean,
listenerBus: LiveListenerBus): SparkEnv = {
SparkEnv.createDriverEnv(conf, isLocal, listenerBus)
}
private[spark] val env = createSparkEnv(conf, isLocal, listenerBus)
通过SparkEnv.createDriverEnv(conf, isLocal, listenerBus)
调用的是里面的creat方法
在creat方法中有 AkkaUtils.createActorSystem(actorSystemName, hostname, port, conf, securityManager)
也就是在creat方法中通过AkkaUtils来创建ActorSystem
private[spark] var (schedulerBackend, taskScheduler) =
SparkContext.createTaskScheduler(this, master)
在任务调度器中有多种启动模式,跟据传入的sparkurl来匹配模式
case SPARK_REGEX(sparkUrl) =>
val scheduler = new TaskSchedulerImpl(sc)
val masterUrls = sparkUrl.split(",").map("spark://" + _)
val backend = new SparkDeploySchedulerBackend(scheduler, sc, masterUrls)
scheduler.initialize(backend)
(backend, scheduler)
降龙18掌
- -- .... -- . ....
-
-->-->-->