Spark-yarn 客户端模式下的 ApplicationMaster 如何工作?
How ApplicationMaster in Client mode in Spark-yarn works?
我对 spark 很陌生。目前我正在查看 Spark 代码以更好地理解它是如何工作的。
据我了解,在 Spark Client 模式下,org.apache.spark.deploy.SparkSubmit
class 在此代码中启动由 org.apache.spark.deploy.JavaMainApplication
包装的用户 class(如果我的 class 不扩展 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 逻辑。如果我的 class 没有实现 org.apache.spark.deploy.SparkApplication
.
,我不明白 ApplicationMaster 如何在客户端模式下运行
我发现的一件事是 spark yarn 包中有 org.apache.spark.deploy.yarn.ExecutorLauncher
,但我不知道如果用户不扩展 SparkApplication 是怎么回事 运行。
我设法弄清楚它是如何工作的。 TaskScheduler初始化时在SparkContext中初始化
我对 spark 很陌生。目前我正在查看 Spark 代码以更好地理解它是如何工作的。
据我了解,在 Spark Client 模式下,org.apache.spark.deploy.SparkSubmit
class 在此代码中启动由 org.apache.spark.deploy.JavaMainApplication
包装的用户 class(如果我的 class 不扩展 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 逻辑。如果我的 class 没有实现 org.apache.spark.deploy.SparkApplication
.
我发现的一件事是 spark yarn 包中有 org.apache.spark.deploy.yarn.ExecutorLauncher
,但我不知道如果用户不扩展 SparkApplication 是怎么回事 运行。
我设法弄清楚它是如何工作的。 TaskScheduler初始化时在SparkContext中初始化