2016-02-26 27 views
1

我正在测试使用Docker在MESOS上执行Spark算法。我设法使用Docker内部的执行程序在客户端模式下执行Spark,但我希望进一步,并让我的Driver运行到Docker容器中。在这里,我遇到了一个我不确定是否正常的行为,让我试着解释一下。Mesos上的Spark集群模式:如何将配置传递给执行器?

我通过MesosClusterDispatcher提交我的火花应用程序中使用如下命令:

$ ./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 

我的司机运行良好,它的搬运工容器内,但执行者失败:

"sh: /some/spark/home/bin/spark-class: No such file or directory" 

看好MESOS奴隶日志,我认为执行者不会在docker中运行:“docker.cpp:775] No container info found, skipping launch”。由于我的Mesos奴隶没有安装火花,它失败了。

似乎我在第一次spark-submit时给出的spark配置文件在Docker容器中启动时没有传递给Driver提交的conf。我发现唯一的解决方法是修改我的Docker镜像,以便在其spark属性中定义spark.mesos.executor.docker.image属性。通过这种方式,我的执行人员可以很好地完成工作,并在Mesos的docker中启动。这似乎有点复杂,对我来说,我觉得通过早期配置火花提交应传达给驾驶者提交...

所以我的问题是:

  • 我是不是做错了什么?
  • 有没有更好的解决方案,通过驱动程序将mesos-dispatcher之前的火花配置传递给执行程序?

回答

相关问题