Apache spark Mesos上的火花簇模式:如何将配置传递给执行器?

Apache spark Mesos上的火花簇模式:如何将配置传递给执行器?,apache-spark,docker,mesos,Apache Spark,Docker,Mesos,我正在测试使用Docker在MESOS上执行Spark算法。我设法在客户端模式下使用Docker中的执行器执行Spark,但我想更进一步,让我的驱动程序运行到Docker容器中。在这里我遇到了一种我不确定是正常的行为,让我试着解释 我使用以下命令通过MesosClusterDispatcher提交spark应用程序: $ ./bin/spark-submit --class org.apache.spark.examples.SparkPi --master mesos://spark-mast

我正在测试使用Docker在MESOS上执行Spark算法。我设法在客户端模式下使用Docker中的执行器执行Spark,但我想更进一步,让我的驱动程序运行到Docker容器中。在这里我遇到了一种我不确定是正常的行为,让我试着解释

我使用以下命令通过MesosClusterDispatcher提交spark应用程序:

$ ./bin/spark-submit --class org.apache.spark.examples.SparkPi --master mesos://spark-master-1:7077 --deploy-mode cluster --conf spark.mesos.executor.docker.image=myuser/myimage:0.0.2 https://storage.googleapis.com/some-bucket/spark-examples-1.5.2-hadoop2.6.0.jar 10
我的驱动程序在docker容器中运行良好,但执行器失败:

"sh: /some/spark/home/bin/spark-class: No such file or directory"
查看MESOS slaves日志,我认为执行器没有在docker内部运行:“
docker.cpp:775]没有找到容器信息,跳过了启动过程。”。因为我的Mesos奴隶没有安装spark,所以它失败了

在docker容器中启动时,我在第一次spark submit中给出的spark conf似乎没有传输到驱动程序提交的conf。我找到的唯一解决方法是修改Docker映像,以便在其spark配置中定义
spark.mesos.executor.Docker.image
属性。这样,我的执行者就可以很好地获得conf,并在Mesos上的docker内部启动。这对我来说似乎有点复杂,我觉得传递给早期spark submit的配置应该传输给驱动程序submit

因此,我的问题是:

  • 我做错什么了吗
  • 是否有更好的解决方案将spark配置从mesos调度器之前通过驱动程序传输到执行器

:-)

我很快就会修好的。如JIRA中所述,解决方法是使用
SPARK\u JAVA\u OPTS
而不是
--conf