apache-spark - 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
指标仍然不存在。
解决方案
发布到一个过时的问题,但也许它会有所帮助。
似乎执行者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
推荐阅读
- c# - 在泛型方法中获取对象参数的类型
- java - 如何更正以下错误: 无法解析绝对 uri: http://www.springsource.org/tags/form
- python - numpy.dot 的意外结果
- php - 在 php 文件的对话框流中显示查询结果
- python - 如何在python中计算具有初始值的列
- python - 比较时间戳和日期时间
- excel - Excel: how ensure cells contain numbers 1-6 or comma separated numbers 1-6?
- rust - 在 rust 中开发基板运行时是否需要使用宏?
- vega - 如何在 Vega 中包含一个范围滑块来转换数据?
- algorithm - 如何改变离散随机发生器的范围?