如何从EC2上的Spark Streaming向VisualVM报告JMX?

Hav*_*nar 5 jmx visualvm amazon-ec2 apache-spark spark-streaming

我一直在尝试获取Spark Streaming作业,在EC2实例上运行以使用JMX向VisualVM报告.

截至目前,我有以下配置文件:

火花/ conf目录/ metrics.properties:

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

worker.source.jvm.class=org.apache.spark.metrics.source.JvmSource

driver.source.jvm.class=org.apache.spark.metrics.source.JvmSource

executor.source.jvm.class=org.apache.spark.metrics.source.JvmSource
Run Code Online (Sandbox Code Playgroud)

我开始像这样的火花流工作:(之后添加的-D位希望远程访问ec2的jmx)

终端:

spark/bin/spark-submit --class my.class.StarterApp --master local --deploy-mode client \
  project-1.0-SNAPSHOT.jar \
    -Dcom.sun.management.jmxremote \
    -Dcom.sun.management.jmxremote.port=54321 \
    -Dcom.sun.management.jmxremote.authenticate=false \
    -Dcom.sun.management.jmxremote.ssl=false
Run Code Online (Sandbox Code Playgroud)

Jac*_*ski 3

命令行有两个问题spark-submit

  1. local- 您不能使用localURL 运行 Spark Standalone,因为不会有线程来运行您的计算(作业),并且您有两个线程,即一个用于接收器,另一个用于驱动程序。您应该在日志中看到以下警告:

WARN StreamingContext:如果有接收器获取数据,spark.master 应设置为 local[n],本地模式下 n > 1,否则 Spark 作业将无法获取资源来处理接收到的数据。

  1. -D选项不会被 JVM 获取,因为它们是在 Spark Streaming 应用程序之后给出的,并且实际上成为了它的命令行参数。将它们放在前面 project-1.0-SNAPSHOT.jar并重新开始(您必须先解决上述问题!)