Spark on Yarn - Prometheus 发现

问题描述

我正在尝试将 spark 与 prometheus 集成。我们有 spark 2 和 spark 3。对于 spark 2,我知道我可以运行 jmx_exporter。 Spark 3 有一个新的内置 PrometheusServlet,非常棒。我们使用 YARN 而不是 k8s 在本地运行 spark。

我的问题是如何动态发现 prometheus 抓取目标。据我了解,没有静态的单个中央 Spark 服务器可以指向,而是每个应用程序都被打包到一个纱线容器中并有自己的指标。除非有一种方法可以聚合这些指标(例如在 Spark 历史服务器中)或每个作业都有一个静态的可预测地址?

当我提交一个长时间运行的火花流应用程序时,我希望它的指标开箱即用地显示在 Prometheus 中。我知道新的 PrometheusServlet 可以使用注释自动发现 k8s,我想为纱线实现类似的功能

到目前为止我发现了什么:

  • 我可以让 prometheus 抓取 pushgateway,并在运行 spark-submit 时让我的应用程序在那里发送指标。我发现了一个 custom sink 可以做到这一点。但是 pushgateway 引入了它自己的问题,所以希望避免它。
  • 使用 Prometheus file Service Discovery 机制在那里添加目标。但是如何自动执行此操作,而不必每次提交新作业时都手动编辑 json 文件?我发现 prometheus 没有用于添加目标的 API,并没有编写一个在我运行 spark-submit 时远程更改 json 文件的作业,感觉有点麻烦。

欢迎对优雅的解决方案提出任何建议,谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)