5

我一直在尝试获得 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

我开始这样的火花流工作:(我后来添加的-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
4

2 回答 2

3

spark-submit命令行有两个问题:

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

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

  1. -D选项不会被 JVM 拾取,因为它们是在 Spark Streaming 应用程序之后给出的,并且实际上成为了它的命令行参数。将它们放在前面 project-1.0-SNAPSHOT.jar并重新开始(您必须先解决上述问题!)
于 2016-01-06T11:32:12.920 回答
1
spark-submit --conf "spark.driver.extraJavaOptions=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8090  -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"/path/example/src/main/python/pi.py 10000

注意:配置格式:--conf "params" 。在 spark 2.+ 下测试

于 2017-06-06T10:34:59.210 回答