apache-spark - 为在同一台机器上运行的多个执行程序导出 spark 执行程序 jmx 指标

标签 apache-spark kubernetes prometheus metrics jmx-exporter

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

我看到很多人都发布了同样的问题,但我找不到答案。请告诉我如何解决此问题。

最佳答案

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


初始答案:

您不能让 2 个进程监听同一个端口,因此只需将 Prometheus 从不同的作业绑定(bind)到不同的端口即可。端口是 jmx_prometheus_javaagent-0.3.1.jar= 之后和 : 字符之前的数字 - 在您的例子中是 53700。因此,您可以将一个端口用于一项任务,将另一个端口(可能是 53701)用于第二项任务...

关于apache-spark - 为在同一台机器上运行的多个执行程序导出 spark 执行程序 jmx 指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62875302/

相关文章:

apache-spark - Hadoop 文件格式

kubernetes - 自定义 cloudwatch 指标 EKS CloudWatch 代理

kubernetes - 即使 servicemonitor 可用并出现在服务发现中,Gitlab 指标也不会被 prometheus 抓取

azure - 相互还是单独的 Kubernetes 集群?

azure - 使用 AzureAD 和 istio 内部负载均衡器进行 Grafana、Prometheus、Kiali 身份验证

grafana - 如何在 Prometheus 中每小时正确抓取和查询指标

java - 将 spark word2vec vector 转储到文件中

hadoop - Oozie 和 Spark 集成

java - 尝试获取 sbt 中的问题

kubernetes - 如何从特定命名空间的 pod 中的容器复制文件?