0

我编写了一个使用 maven 编译并使用 spark-submit 运行它的 Spark 应用程序。我想监控我的应用程序并收集指标。因此,我使用了 Prometheus 容器,但我正在努力向它公开一个简单的指标。我试图按照这里的答案。但我不明白我应该如何处理 spark.yml 文件。

  • 我有一个计算一些东西的 Prometheus 客户端。
  • 我在 spark/conf/metrics.properties 中取消注释 *.sink.jmx.class=org.apache.spark.metrics.sink.JmxSink
  • 我将 JMX Prometheus Javaagent 添加到我的 pom.xml

这是我的 prometheus.yml:

    global:
  scrape_interval:     15s
  evaluation_interval: 15s

scrape_configs:
- job_name: prometheus
  static_configs:
  - targets: ['localhost:9090']

- job_name: spark-master
  static_configs:
  - targets: ['spark-master:8082']

当我查看 http://localhost:9090/targets 中的目标时,我可以看到 Prometheus 目标已启动而 Spark 已关闭

4

1 回答 1

1

我认为答案取决于您想要在 Spark 2.1 中监控的内容。

  1. 如果是 JVM 指标——我认为你做不到。原因很简单,您不知道将在 Spark 集群中的何处创建 JVM。如果我们知道在同一个节点上启动多个 JVM 是不可能的,因为每个 JMX 代理都需要一个动态分配的端口,而 Prometheus 服务器需要一个精确的抓取URL,这是不可能的。

  2. 如果要求是使用推送网关测量业务特定指标,那么可以这样做,因为 Prometheus 服务器将抓取特定的抓取url。

也许您需要查看支持 Prometheus 的更新版本的 Spark3.0。请点击此链接 - https://spark.apache.org/docs/latest/monitoring.html

于 2021-06-10T14:02:00.227 回答