运行 Mesos 集群上的 spark-streaming 时缺少 java 系统属性

Missing java system properties when running spark-streaming on Mesos cluster

我向 mesos 集群提交了一个 spark 应用程序(运行ning 在集群模式下),并通过 "--drive-java-options=-Dkey=value -Dkey=value" 传递 java 系统 属性,但是这些系统属性是在 运行 时间不可用,似乎尚未设置。 --conf "spark.driver.extraJavaOptions=-Dkey=value" 也不行

更多详情: 命令是

bin/spark-submit --master mesos://10.3.101.119:7077 --deploy-mode cluster --class ${classname} --driver-java-options "-Dconfiguration.http=http://10.3.101.119:9090/application.conf" --conf "spark.executor.extraJavaOptions=-Dconfiguration.http=http://10.3.101.119:9090/application.conf" ${jar file}

我有一个双节点的 mesos 集群,一个节点既是 运行 的主节点又是从节点,另一个节点只是 运行 的从节点。我在主节点上提交 spark 应用程序。

在内部,应用程序希望从java系统属性"configuration.http"读取一个配置文件,如果属性不可用,应用程序将加载一个默认的从类路径的根文件。当我提交应用程序时,从日志中,我看到默认配置文件已加载。

运行 应用程序的实际命令是

"sh -c '/home/ubuntu/spark-1.6.0/bin/spark-submit --name ${appName} --master mesos://zk://10.3.101.184:2181/mesos/grant --driver-cores 1.0 --driver-memory 1024M --class ${classname} ./${jar file} '"

从这里你可以看到系统属性丢失了

您可以查看 this blog post,其中建议为此目的使用外部属性文件:

$ vi app.properties
spark.driver.extraJavaOptions   -Dconfiguration.http=http://10.3.101.119:9090/application.conf
spark.executor.extraJavaOptions –Dconfiguration.http=http://10.3.101.119:9090/application.conf

然后通过

尝试运行
bin/spark-submit --master mesos://10.3.101.119:7077 --deploy-mode cluster --class ${classname} —-properties-file app.properties ${jar file}

  • How to pass -D parameter or environment variable to Spark job?
  • Separate logs from Apache spark