首页 > 解决方案 > Spark 指标接收器不公开执行者的指标

问题描述

我在 YARN 上使用 Spark

Docker 上的Ambari 2.7.4
HDP 独立 3.1.4
Spark 2.3.2
Hadoop 3.1.1
Graphitelatest

我试图按照本教程使用 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与全局火花指标道具一起添加,但这并没有帮助。

最后,我尝试了 conf inspark-submit和 java SparkConf

--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指标仍然不存在。

标签: apache-sparkmonitoringhadoop2metricsgraphite

解决方案


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

似乎执行者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选项指定度量的自定义文件位置。

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

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


推荐阅读