在spark yarn中客户端模式下applicationmaster是如何工作的?

xn1cxnb4  于 2021-07-14  发布在  Spark
关注(0)|答案(1)|浏览(432)

我对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应用程序,它是如何运行的。

y4ekin9u

y4ekin9u1#

我设法弄清楚它是怎么工作的。在初始化taskscheduler时,它将在sparkcontext中初始化

相关问题