Spark 流自定义指标

2024-03-08

我正在开发一个 Spark Streaming 程序,它检索 Kafka 流,对流进行非常基本的转换,然后将数据插入到数据库(如果相关,则为 voltdb)。 我正在尝试测量向数据库插入行的速率。我认为metrics http://metrics.dropwizard.io/3.1.0/manual/可能很有用(使用 JMX)。但是我找不到如何向 Spark 添加自定义指标。我查看了Spark的源代码,还发现这个线程 http://apache-spark-developers-list.1001551.n3.nabble.com/Registering-custom-metrics-td9030.html#a9968但它对我不起作用。我还在 conf.metrics 文件中启用了 JMX 接收器。不起作用的是我在 JConsole 中看不到我的自定义指标。

有人可以解释如何添加自定义指标(最好通过 JMX)来 Spark 流吗?或者如何测量我的数据库(特别是 VoltDB)的插入率? 我正在使用 Spark 和 Java 8。


好吧,深入挖掘之后源代码 https://github.com/apache/spark我找到了如何添加自己的自定义指标。它需要三件事:

  1. 创建我自己的定制source https://github.com/apache/spark/blob/3c0156899dc1ec1f7dfe6d7c8af47fa6dc7d00bf/core/src/main/scala/org/apache/spark/metrics/source/Source.scala。有点像this https://github.com/apache/spark/blob/3c0156899dc1ec1f7dfe6d7c8af47fa6dc7d00bf/streaming/src/main/scala/org/apache/spark/streaming/StreamingSource.scala
  2. 在 Sparkmetrics.properties 文件中启用 Jmx 接收器。我使用的具体线路是:*.sink.jmx.class=org.apache.spark.metrics.sink.JmxSink为所有实例启用 JmxSink
  3. 在 SparkEnv 指标系统中注册我的自定义源。可以看到一个如何做的例子here http://mail-archives.us.apache.org/mod_mbox/spark-user/201501.mbox/%3CCAE50=dq+6tdx9VNVM3ctBMWPLDPbUAacO3aN3L8x38zg=xb6VQ@mail.gmail.com%3E- 我实际上之前查看过此链接,但错过了注册部分,这使我无法在 JVisualVM 中实际看到我的自定义指标

我仍在努力解决如何实际计算 VoltDB 的插入数量,因为代码在执行器上运行,但这是另一个主题的主题:)

我希望这会帮助其他人

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark 流自定义指标 的相关文章

随机推荐