我试图分析一些 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 作业?