小编Jar*_*ary的帖子

Spark on Yarn - 普罗米修斯发现

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

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

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

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

  • 我可以让 prometheus scrape Pushgateway,并在运行 Spark-Submit 时让我的应用程序向那里发送指标。我找到了一个可以做到这一点的定制水槽。然而pushgateway引入了它自己的问题,所以我们希望避免它。
  • 使用 Prometheus文件服务发现机制在其中添加目标。但是,如何自动执行此操作,而无需每次提交新作业时手动编辑 json 文件?我发现 prometheus 没有用于添加目标的 API,并且当我运行 Spark-submit 时编写一个可以远程更改 json 文件的作业感觉有点 hacky。

欢迎任何关于优雅解决方案的建议,谢谢!

hadoop-yarn apache-spark prometheus jmx-exporter prometheus-pushgateway

6
推荐指数
0
解决办法
886
查看次数