Apache Spark的CoarseGrainedScheduler如何开始?

时间:2017-11-07 18:42:29

标签: java apache-spark appdynamics apm

我试图使用APM(应用程序性能管理系统)来测试Spark(v 1.6.1)应用程序。要使用选择的APM执行此操作,我必须使用-javaagent标记来检测JVM启动字符串,指向我的APM以及任何相关的APM选项(例如,unique-host-id)。

在Spark Master服务器上,我已成功完成此操作,并且在各种Spark Worker服务器上,我也成功地检测了spark worker进程。

但是,当我查看正在运行的Java进程时,我看到一个不包含我的启动字符串的其他进程:CoarseGrainedScheduler。 CoarseGrainedScheduler是实际的Spark执行器,它运行由Master提交给Worker的worker应用程序代码。

我无法确定调用CoarseGrainedScheduler的位置。

所以,对于更多上下文,这里是我如何检测Spark Worker启动字符串:在{SPARK_HOME}/conf/spark_env.sh中,我添加了以下环境变量:

SPARK_DAEMON_JAVA_OPTS="<java-agent-startup-string>"

这将最终调用{SPARK_HOME}/bin/spark-class,这是所有Spark调用的根;也就是说,{SPARK_HOME}/bin{SPARK_HOME}/sbin发出的所有spark命令最终都会委托给spark_class

然而,这似乎不是从CoarseGrainedScheduler调用的地方。但是,查看this document从哪里调用:

$ ./bin/spark-class org.apache.spark.executor.CoarseGrainedExecutorBackend <opts>

那么,为什么我的启动字符串没有被接收?根据通过spark-class调用CoarseGrainedExecutorBackend的假设/指令,我实际上编辑了该文件以在运行任何java命令时添加我的启动字符串,并且还无法将我的启动字符串添加到CoarseGrainedExecutorBackend,尽管它确实将其添加到Spark Worker进程本身。再说一遍,似乎CoarseGrainedExecutorBackend不是通过spark-class启动的,即使链接文档说它是。

任何人都可以帮我找到CoarseGrainedExecutorBackend进程的根目录以及它是如何被调用的吗?如果我可以提供任何其他详细信息,请告诉我。

0 个答案:

没有答案