我对spark很陌生。目前,我正在寻找Spark代码,以更好地了解它是如何工作的。
据我所知,在spark客户端模式下, org.apache.spark.deploy.SparkSubmit
类启动由 Package 的用户类 org.apache.spark.deploy.JavaMainApplication
在这段代码中(如果我的类不扩展sparkapplication)
val app: SparkApplication = if (classOf[SparkApplication].isAssignableFrom(mainClass)) {
mainClass.getConstructor().newInstance().asInstanceOf[SparkApplication]
} else {
new JavaMainApplication(mainClass) //Here my class will be ran by this
}
...
app.start(childArgs.toArray, sparkConf)
但是用户应用程序没有任何启动applicationmaster逻辑。如果我的类没有实现,我不明白applicationmaster是如何在客户端模式下运行的 org.apache.spark.deploy.SparkApplication
.
我发现有一件事是 org.apache.spark.deploy.yarn.ExecutorLauncher
在spark-yarn包中,但我不知道如果用户不扩展spark应用程序,它是如何运行的。
1条答案
按热度按时间y4ekin9u1#
我设法弄清楚它是怎么工作的。在初始化taskscheduler时,它将在sparkcontext中初始化