Mesos 上的 Spark 集群模式:如何将配置传递给执行程序?
Spark cluster mode on Mesos: how to pass configuration to executor?
我正在测试使用 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 从属日志,我认为执行者在 docker 中没有 运行:“docker.cpp:775] No container info found, skipping launch
”。由于我的 Mesos slaves 没有安装 spark,所以它失败了。
似乎我在第一个 spark-submit 中给出的 spark conf 在 docker 容器中启动时没有 t运行提交给驱动程序提交的 conf。我发现的唯一解决方法是修改我的 Docker 图像,以便在其 spark conf 中定义 spark.mesos.executor.docker.image
属性。这样,我的执行程序就可以很好地获得 conf 并在 Mesos 上的 docker 内启动。这对我来说似乎有点复杂,我觉得传递给早期 spark-submit 的配置应该 t运行smitted 到 Driver submit...
所以我的问题是:
- 我是不是做错了什么?
- 从mesos-dispatcher之前通过driver发送到executor的spark配置有没有更好的解决方案?运行
https://issues.apache.org/jira/browse/SPARK-13258
:-)
我会尽快解决这个问题。如 JIRA 中所述,解决方法是使用 SPARK_JAVA_OPTS
而不是 --conf
.
我正在测试使用 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 从属日志,我认为执行者在 docker 中没有 运行:“docker.cpp:775] No container info found, skipping launch
”。由于我的 Mesos slaves 没有安装 spark,所以它失败了。
似乎我在第一个 spark-submit 中给出的 spark conf 在 docker 容器中启动时没有 t运行提交给驱动程序提交的 conf。我发现的唯一解决方法是修改我的 Docker 图像,以便在其 spark conf 中定义 spark.mesos.executor.docker.image
属性。这样,我的执行程序就可以很好地获得 conf 并在 Mesos 上的 docker 内启动。这对我来说似乎有点复杂,我觉得传递给早期 spark-submit 的配置应该 t运行smitted 到 Driver submit...
所以我的问题是:
- 我是不是做错了什么?
- 从mesos-dispatcher之前通过driver发送到executor的spark配置有没有更好的解决方案?运行
https://issues.apache.org/jira/browse/SPARK-13258
:-)
我会尽快解决这个问题。如 JIRA 中所述,解决方法是使用 SPARK_JAVA_OPTS
而不是 --conf
.