Mesos上的Spark集群模式:如何将configuration传递给执行器?
我正在testing使用Docker在MESOS上执行Sparkalgorithm。 我设法在客户端模式下执行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奴隶日志,我认为执行者不会在docker.cpp:775] No container info found, skipping launch
运行:“ docker.cpp:775] No container info found, skipping launch
”。 由于我的Mesos奴隶没有安装火花,它失败了。
看起来,我在第一次提交spark-submit时的sparkconfiguration文件,在Docker容器中启动时,并不会传递给Driver提交的conf文件。 我发现唯一的解决方法是修改我的Docker图像,以便在其spark属性中定义spark.mesos.executor.docker.image
属性。 这样一来,我的执行者就可以很好地运行,并在Mesos的Docker中启动。 这似乎有点复杂,我觉得configuration传递给早期的spark-submit应该传递给Driver提交…
所以我的问题是:
- 难道我做错了什么?
- 有没有更好的解决scheme,通过驱动程序将mesos-dispatcher之前的火花configuration传递给执行程序?
https://issues.apache.org/jira/browse/SPARK-13258
🙂
我会很快解决这个问题的。 JIRA中描述的解决方法是使用SPARK_JAVA_OPTS
而不是--conf
。
- 用纱线进行火花聚类
- boot2docker:port forwording通过Mac OS上的Web UI来pipe理火花工作者
- 当部署模式是群集时,spark-submit代理主机/端口configuration不受尊重
- Windows中的Neo4j Mazerunner的逐步安装指南
- 使用Docker容器在独立群集上Spark SPARK_PUBLIC_DNS和SPARK_LOCAL_IP
- 如何在Docker中从python连接到远程Spark群集
- spark-submit job.py不能使用sparkConf传递configuration参数
- 缓冲区/caching耗尽Docker容器内的Spark独立
- 火花提交到docker集装箱