提交一个 jar 到 sequenceiq docker-spark 容器

Submitting a jar to sequenceiq docker-spark container

所以我从未使用过 Spark 或 Docker,但我必须将它用于一个项目。 我试图了解这是如何工作的。所以我在 Eclipse 中构建了一个 fat jar,并希望将其提交到我的 docker 容器,我使用本指南设置了该容器:https://github.com/sequenceiq/docker-spark

现在,我真的不明白我是如何将我的 jar 从我的本地系统获取到我的 docker 容器然后 运行 它。

我想我不知道这一切是如何真正协同工作的,但也许有人可以解决这个问题。

非常感谢!

据我所知有两种可能性:

1,扩展sequenceiq图像并创建自己的docker图像*

我认为最好的方法是 "extend" sequenceiq spark docker 图像和 COPY 你的 spark 应用程序在图像的构建阶段。

因此您的 Dockerfile 应该类似于:

FROM sequenceiq/spark:1.6.0
COPY sparkapplication.jar sparkapplication.jar
COPY bootstrap.sh /etc/bootstrap.sh
ENTRYPOINT ["/etc/bootstrap.sh"]

并且您需要使用 spark-submit 命令 create/edit bootstrap.sh(入口点):

您可以使用 Their bootstrap.sh 并在此处添加您的 spark 提交命令(在此文件末尾的某处),例如:

$SPAKR_HOME/bin/spark-submit \
  --class MainClass \
  --master local[*] \
  /sparkapplication.jar

只需将 sparkapplication.jarbootstrap.sh 放在 Dockerfile 旁边(在同一文件夹中)。

2、手动复制spark应用到运行容器

第二个选项是使用他们的 docker 容器并将应用程序复制到容器:

docker cp sparkapplication.jar container:/sparkapplication.jar

然后 exec(附加)到容器 (docker exec -it container bash) 并手动执行 spark-submit