我们正在使用AWS EMR运行Spark作业。从神经节来看,与分配的内存相比,群集的内存利用率较低。 CPU利用率也是如此。
我们目前正在通过实施Spark侦听器来报告Spark指标。但是我找不到如何从Spark代码中获取神经节指标的方法。在火花事件中的任何地方也可以使用此信息吗?
答案 0 :(得分:0)
您可以尝试使用sparklens(https://github.com/qubole/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.authenticate = false -Dcom.sun.management.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)使用电报或其他监视工具从代理获取指标。