为运行在同一台机器上的多个执行器导出spark executor jmx度量

webghufk  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(482)

我正在尝试使用带有以下选项的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 ....

我看到很多人贴出了同样的问题,但我找不到答案。请让我知道如何解决这个问题。

2lpgd968

2lpgd9681#

我认为您需要从基于拉的监视切换到基于推的监视。对于像spark这样的工作,它更有意义,因为它们不是一直在运行。为此,你有一些选择:
Spark普罗米修斯沉没在他们的博客文章概述的版泽云
按照spark文档中的说明设置GraphiteLink,并将其指向https://github.com/prometheus/graphite_exporter,然后从该出口商处取消指标
初始答案:
不能让两个进程监听同一个端口,所以只需将prometheus从不同的作业绑定到不同的端口即可。端口是 jmx_prometheus_javaagent-0.3.1.jar= ,和之前 : 性格-你的情况是 53700 . 因此,您可以使用一个端口执行一个任务,而使用另一个端口(可能是 53701 )对于第二个任务。。。

相关问题