Spark指标接收器不公开执行者的指标

时间:2019-11-03 17:50:01

标签: apache-spark monitoring hadoop2 metrics graphite

我在YARN上使用Spark

Ambari 2.7.4
HDP独立版3.1.4
Spark 2.3.2
Hadoop 3.1.1
Docker latest上的石墨

我试图在this tutorial之后使用Graphite sink获取Spark指标。

Ambari中的高级spark2-metrics-properties是:

driver.sink.graphite.class=org.apache.spark.metrics.sink.GraphiteSink
executor.sink.graphite.class=org.apache.spark.metrics.sink.GraphiteSink
worker.sink.graphite.class=org.apache.spark.metrics.sink.GraphiteSink
master.sink.graphite.class=org.apache.spark.metrics.sink.GraphiteSink
*.sink.graphite.host=ap-test-m.c.gcp-ps.internal
*.sink.graphite.port=2003
*.sink.graphite.protocol=tcp
*.sink.graphite.period=10
*.sink.graphite.unit=seconds
*.sink.graphite.prefix=app-test
*.source.jvm.class=org.apache.spark.metrics.source.JvmSource

火花提交:

export HADOOP_CONF_DIR=/usr/hdp/3.1.4.0-315/hadoop/conf/; spark-submit --class com.Main --master yarn --deploy-mode client --driver-memory 1g --executor-memory 10g --num-executors 2 --executor-cores 2 spark-app.jar /data

结果,我只获得driver个指标。

我还试图将metrics.properties与全局星火指标道具一起添加到spark-submit命令中,但这没有帮助。

最后,我在spark-submit和Java SparkConf中尝试了conf:

--conf "spark.metrics.conf.driver.sink.graphite.class"="org.apache.spark.metrics.sink.GraphiteSink" 
--conf "spark.metrics.conf.executor.sink.graphite.class"="org.apache.spark.metrics.sink.GraphiteSink" 
--conf "worker.sink.graphite.class"="org.apache.spark.metrics.sink.GraphiteSink"
--conf "master.sink.graphite.class"="org.apache.spark.metrics.sink.GraphiteSink"
--conf "spark.metrics.conf.*.sink.graphite.host"="host" 
--conf "spark.metrics.conf.*.sink.graphite.port"=2003 
--conf "spark.metrics.conf.*.sink.graphite.period"=10 
--conf "spark.metrics.conf.*.sink.graphite.unit"=seconds 
--conf "spark.metrics.conf.*.sink.graphite.prefix"="app-test" 
--conf "spark.metrics.conf.*.source.jvm.class"="org.apache.spark.metrics.source.JvmSource"

但是那也没有帮助。

CSVSink还仅提供驱动程序指标。

UPD

当我以cluster模式提交工作时-我得到的指标与Spark History Server相同。但是jvm指标仍然不存在。

1 个答案:

答案 0 :(得分:0)

发布一个过时的问题,但也许会有所帮助。

似乎执行程序在他们的文件系统上没有 metrics.properties 文件。 确认这一点的一种方法是查看执行程序日志:

2020-01-16 10:00:10 ERROR MetricsConfig:91 - Error loading configuration file metrics.properties
java.io.FileNotFoundException: metrics.properties (No such file or directory)
    at org.apache.spark.metrics.MetricsConfig.loadPropertiesFromFile(MetricsConfig.scala:132)
    at org.apache.spark.metrics.MetricsConfig.initialize(MetricsConfig.scala:55)
    at org.apache.spark.metrics.MetricsSystem.<init>(MetricsSystem.scala:95)
    at org.apache.spark.metrics.MetricsSystem$.createMetricsSystem(MetricsSystem.scala:233)

要在纱线上解决此问题,请向 spark-submit 传递两个参数:

$ spark-submit \
    --files metrics.properties \
    --conf spark.metrics.conf=metrics.properties

--files 选项确保该选项中指定的文件将共享给执行程序。

spark.metrics.conf 选项指定指标的自定义文件位置。

解决此问题的另一种方法是在开始作业之前将 metrics.properties 文件放入驱动程序和执行程序的 $SPARK_HOME/conf/metrics.properties 中。

此处有更多关于指标的信息:https://spark.apache.org/docs/latest/monitoring.html