3

我正在尝试使用带有以下选项的 javaagent 来获取 spark 驱动程序和执行程序的指标。我在 kubernetes 集群中有 Prometheus,我在 kubernetes 集群之外运行这个 spark 应用程序。

spark.executor.extraJavaOptions=-javaagent:/opt/clkd/prometheus/jmx_prometheus_javaagent-0.3.1.jar=53700:executor_pattern.yaml

但我得到了以下异常,因为两个执行程序都在同一台机器上运行

Caused by: java.net.BindException: Address already in use .... 

我看到很多人发布了相同的问题,但我找不到答案。请让我知道如何解决此问题。

4

1 回答 1

1

我认为您需要从基于拉的监控切换到基于推送的监控。对于诸如 Spark 作业之类的事情,它更有意义,因为它们并非一直在运行。为此,您有一些选择:


初步答案:

您不能有 2 个进程在同一个端口上侦听,因此只需将 Prometheus 从不同的作业绑定到不同的端口。端口是字符之后jmx_prometheus_javaagent-0.3.1.jar=:字符之前的数字 - 在您的情况下是53700. 因此,您可以将一个端口用于一项任务,将另一个端口(也许53701)用于第二项任务......

于 2020-07-13T14:19:28.213 回答