spark集群模式:如何将配置传递给executor?

ezykj2lf  于 2021-06-26  发布在  Mesos
关注(0)|答案(1)|浏览(512)

我正在测试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奴隶没有安装spark,它失败了。
我在第一个spark submit中给出的spark conf在docker容器中启动时似乎没有传输到驱动程序提交的conf。我找到的唯一解决方法是修改docker映像,以便在其spark conf中定义 spark.mesos.executor.docker.image 财产。这样,我的执行者就可以很好地获得conf,并在mesos上的docker内部启动。这对我来说似乎有点复杂,我觉得传递给早期spark submit的配置应该传递给驱动程序submit。。。
所以我的问题是:
我做错什么了吗?
有没有更好的解决方案将spark配置从mesos调度器之前通过驱动程序传输到执行器?

exdqitrt

exdqitrt1#

https://issues.apache.org/jira/browse/spark-13258
:-)
我很快就会修好的。如jira中所述,解决方法是 SPARK_JAVA_OPTS 而不是 --conf .

相关问题