0

我试图分析一些 Spark 作业,并且我想从每个执行程序收集 Java Flight Recorder(JFR) 文件。我在具有多个节点的 YARN 集群上运行我的作业,因此我无法为每次运行手动收集 JRF 文件。我想编写一个脚本,它可以为给定的作业从集群中的每个节点收集 JFR 文件。

MR 提供了一种使用 taskId 命名每个任务生成的 JFR 文件的方法。它用 Java opts 中的 TaskId 替换了“@task@”。有了这个,我可以获得每个任务创建的 JFR 文件的唯一名称,并且由于 TaskId 也有 JobId,我可以解析它以区分不同 MR 作业生成的文件。

我想知道,如果 Spark 有类似的东西。Spark 是否提供了一种在 Java opts 中确定 executorId 的方法?有没有其他人尝试过类似的事情并找到了一种更好的方法来收集所有 JFR 文件以用于 Spark 作业?

4

2 回答 2

0

您不能在 opts 中设置 executor id,但您可以从 event log 中获取 executor Id,以及承载它的从节点。

但是,我相信您为 yarn master 和独立的 spark-submit 提供的选项对执行程序 JVM 具有相同的效果,所以您应该没问题!

于 2015-11-05T03:41:24.453 回答
0

您可以在 spark.executor.extraJavaOptions 参数中使用 {{EXECUTOR_ID}} 和 {{APP_ID}} 占位符。它们将被 Spark 分别替换为执行者 ID 和应用程序 ID。

于 2020-08-18T14:09:12.067 回答