Apache spark 如何从集群获取内存使用率和Cpu使用率

Apache spark 如何从集群获取内存使用率和Cpu使用率,apache-spark,amazon-emr,ganglia,Apache Spark,Amazon Emr,Ganglia,我们正在使用AWS EMR运行spark作业。从ganglia可以看出,与分配的内存相比,集群的内存利用率较低。cpu利用率也是如此 我们目前正在通过实现spark侦听器来报告spark度量。但我找不到如何从spark代码中获取ganglia度量。spark events中的任何位置都有此信息吗?您可以尝试sparklens(),首先为您的spark应用程序找到正确的执行器计数,然后相应地配置集群。集群利用率还取决于应用程序的可伸缩性特征 获取spark JMX度量 1) 在spark/conf

我们正在使用AWS EMR运行spark作业。从ganglia可以看出,与分配的内存相比,集群的内存利用率较低。cpu利用率也是如此

我们目前正在通过实现spark侦听器来报告spark度量。但我找不到如何从spark代码中获取ganglia度量。spark events中的任何位置都有此信息吗?

您可以尝试sparklens(),首先为您的spark应用程序找到正确的执行器计数,然后相应地配置集群。集群利用率还取决于应用程序的可伸缩性特征

获取spark JMX度量

1) 在spark/conf中创建metrics.properties文件/

*.sink.jmx.class=org.apache.spark.metrics.sink.JmxSink driver.source.jvm.class=org.apache.spark.metrics.source.JvmSource executor.source.jvm.class=org.apache.spark.metrics.source.JvmSource master.source.jvm.class=org.apache.spark.metrics.source.JvmSource worker.source.jvm.class=org.apache.spark.metrics.source.JvmSource

2) 将jolokai代理jar下载到集群中的某个位置。其他JMX代理也应该可以工作

3) 更新以下Spark覆盖:

spark.metrics.conf spark/conf/metrics.properties spark.driver.extraJavaOptions-Djava.net.preferIPv4Stack=true -Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port=8090-Dcom.sun.management.jmxremote.jmxremote.ssl=false-javaagent:/tmp/jolokia jvm.jar=port=8779,host=localhost spark.executor.extraJavaOptions-Djava.net.preferIPv4Stack=true -Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port=8091-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false-javaagent:/tmp/jolokia jvm.jar=port=8781,host=localhost”


4) 使用telegraph或其他监控工具从代理获取指标。

为什么不查看spark history server?