如何启用 Spark mesos docker 执行器?

How to enable Spark mesos docker executor?

我正在研究 Mesos 和 Spark 之间的集成。现在,我可以在 docker 中启动 SlaveMesosDispatcher;我也喜欢 运行 Mesos 中的 Spark 执行器 docker。我为它做了以下配置,但是我得到了一个错误;有什么建议吗?

配置:

Spark:conf/spark-defaults.conf

spark.mesos.executor.docker.image        ubuntu
spark.mesos.executor.docker.volumes      /usr/bin:/usr/bin,/usr/local/lib:/usr/local/lib,/usr/lib:/usr/lib,/lib:/lib,/home/test/workshop/spark:/root/spark
spark.mesos.executor.home                /root/spark
#spark.executorEnv.SPARK_HOME             /root/spark
spark.executorEnv.MESOS_NATIVE_LIBRARY   /usr/local/lib

注意:spark 安装在 /home/test/workshop/spark 中,并且所有依赖项都已安装。

将SparkPi提交给dispatcher后,driver job启动失败。错误乱七八糟的是:

I1015 11:10:29.488456 18697 exec.cpp:134] Version: 0.26.0
I1015 11:10:29.506619 18699 exec.cpp:208] Executor registered on slave b7e24114-7585-40bc-879b-6a1188cb65b6-S1
WARNING: Your kernel does not support swap limit capabilities, memory limited without swap.
/bin/sh: 1: ./bin/spark-submit: not found

有人知道如何在 docker 中为这种情况 map/set 点火回家吗?

我认为您在这里看到的问题是因为容器的当前工作目录不是 Spark 的安装目录。当您为 Spark 指定 docker 图像以与 Mesos 一起使用时,它期望容器的默认工作目录位于 $SPARK_HOME 内,它可以在其中找到 ./bin/spark-submit.

You can see that logic here.

您似乎无法通过 Spark 配置本身来配置工作目录,这意味着您需要在 ubuntu 之上构建一个自定义映像,它只需执行 WORKDIR /root/spark.