apache-spark - Spark 流式传输:公开 spark_streaming_* 指标
问题描述
我们在 kubernetes(使用 SparkOperator)和 Prometheus 上使用 spark 来公开应用程序的指标。该应用程序是一个火花流应用程序(非结构化流)。该应用程序用于在具有 spark 版本 2.4.7 的映像上运行,后来迁移到 spark 3.1.2。由于这种迁移,所有spark_streaming_*
指标都消失了,例如spark_streaming_driver_totalreceivedrecords
(如此处定义的https://github.com/apache/spark/blob/master/streaming/src/main/scala/org/apache/spark/streaming/StreamingSource.scala#L53 )
一般来说,Prometheus 设置似乎有效,因为当您 curl prometheus 端口时,您仍然可以看到一堆其他指标 - 只是看不到火花流指标。spark-image 包含 prometheus-java 代理,在 stream-app 的 helm 图表中,监控规范配置为使用它
monitoring:
exposeDriverMetrics: true
exposeExecutorMetrics: true
prometheus:
jmxExporterJar: "/prometheus/jmx_prometheus_javaagent-0.11.0.jar"
port: 8888
如 spark-operator https://github.com/GoogleCloudPlatform/spark-on-k8s-operator/blob/master/docs/user-guide.md#monitoring的文档中所述。这也是用于使用 spark 2.4.7 的设置的方式
这个指标在 spark3 中消失了吗?或者我们可能只是缺少一些配置?另一个旁注:当您检查指标时,<spark-driver>:<ui-port>/metrics/json
您可以看到所需的指标
解决方案
好的,目前 spark-operator 似乎无法与 Spark3 中的当前指标一起正常工作。该问题可以通过使用固定的 prometheus 配置文件配置 spark-image 来解决,然后在您的 helm 图表中使用它
monitoring:
exposeDriverMetrics: true
exposeExecutorMetrics: true
prometheus:
jmxExporterJar: "/prometheus/jmx_prometheus_javaagent-0.11.0.jar"
port: 8888
configFile: PATH_TO_THE_CONFIG
更多信息和工作 prometheus 配置可以在这里找到:https ://github.com/GoogleCloudPlatform/spark-on-k8s-operator/issues/1117
推荐阅读
- c++ - 我可以使用 Flutter FFI 获得 Flutter 表面纹理吗?
- wiremock - Wiremock 删除附加数据(元数据)作为响应
- javascript - 如何使用 MERN 堆栈显示论坛的详细信息页面?
- selenium - “System.TypeLoadException:'访问被拒绝:'OpenQA.Selenium.Remote.DesiredCapabilities'。'”
- python - 使用 Locust 获取响应数据的问题
- mongodb - UpdateOne 在 mongo shell 上工作,但不在 mongoose 上
- oracle - 如何使用oracle sql select语句将价格列与另一个总列相加?
- django - 为什么尝试在 django 过滤器中除外?
- javascript - 带有把手的nodemailer没有正确显示样式
- python - 在python中附加到列表外部函数而不更改列表