我正在尝试使用带有以下选项的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 ....
我看到很多人贴出了同样的问题,但我找不到答案。请让我知道如何解决这个问题。
1条答案
按热度按时间2lpgd9681#
我认为您需要从基于拉的监视切换到基于推的监视。对于像spark这样的工作,它更有意义,因为它们不是一直在运行。为此,你有一些选择:
Spark普罗米修斯沉没在他们的博客文章概述的版泽云
按照spark文档中的说明设置GraphiteLink,并将其指向https://github.com/prometheus/graphite_exporter,然后从该出口商处取消指标
初始答案:
不能让两个进程监听同一个端口,所以只需将prometheus从不同的作业绑定到不同的端口即可。端口是
jmx_prometheus_javaagent-0.3.1.jar=
,和之前:
性格-你的情况是53700
. 因此,您可以使用一个端口执行一个任务,而使用另一个端口(可能是53701
)对于第二个任务。。。