Apache spark 有没有办法了解java/scala代码中的作业使用了哪些执行器?

Apache spark 有没有办法了解java/scala代码中的作业使用了哪些执行器?,apache-spark,Apache Spark,我无法在一个纱线簇的所有执行者之间均匀分配流式接收器。 我有一个有8个执行器的纱线集群,我创建了8个流式定制接收器,spark应该为每个执行器启动一个接收器。然而,这种情况并非总是发生,有时所有接收器都在同一个执行器上启动(以下是jira bug:)。 因此,我的想法是运行一个虚拟作业,获取参与该作业的执行者,如果我获取了所有执行者,则创建流式接收器。 无论如何,为了做到这一点,我需要了解是否有办法了解java/scala代码中的作业使用了哪些执行器。我相信通过访问Spark UI和Spark日

我无法在一个纱线簇的所有执行者之间均匀分配流式接收器。 我有一个有8个执行器的纱线集群,我创建了8个流式定制接收器,spark应该为每个执行器启动一个接收器。然而,这种情况并非总是发生,有时所有接收器都在同一个执行器上启动(以下是jira bug:)。 因此,我的想法是运行一个虚拟作业,获取参与该作业的执行者,如果我获取了所有执行者,则创建流式接收器。
无论如何,为了做到这一点,我需要了解是否有办法了解java/scala代码中的作业使用了哪些执行器。

我相信通过访问Spark UI和Spark日志可以查看哪些执行器在哪里执行哪些作业。从官方
1.5.0
文档():

默认情况下,每个SparkContext都会在端口4040上启动一个web UI,显示有关应用程序的有用信息。这包括:

  • 计划程序阶段和任务的列表
  • RDD大小和内存使用情况摘要
  • 环境信息
  • 有关正在运行的执行器的信息
在下面的屏幕中,您可以看到哪些执行器处于活动状态。如果存在未使用的核心/节点,您可以通过查看哪些核心/节点实际处于活动状态并正在运行来检测它们

此外,每个执行器都会显示有关正在其上运行的任务数的信息


这里有一个来自DataBriks的链接,它很好地解释了如何在Spark集群中遵循作业的生命周期,我需要在java/scala代码中这样做。我已将此详细信息添加到问题中。如果您在我之前的评论中查看databricks链接,它将帮助您了解如何使用Spark UI工具查看作业在集群中的处理方式以及涉及哪些执行者。