提交一个 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.jar
和 bootstrap.sh
放在 Dockerfile
旁边(在同一文件夹中)。
2、手动复制spark应用到运行容器
第二个选项是使用他们的 docker 容器并将应用程序复制到容器:
docker cp sparkapplication.jar container:/sparkapplication.jar
然后 exec
(附加)到容器 (docker exec -it container bash
) 并手动执行 spark-submit
。
所以我从未使用过 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.jar
和 bootstrap.sh
放在 Dockerfile
旁边(在同一文件夹中)。
2、手动复制spark应用到运行容器
第二个选项是使用他们的 docker 容器并将应用程序复制到容器:
docker cp sparkapplication.jar container:/sparkapplication.jar
然后 exec
(附加)到容器 (docker exec -it container bash
) 并手动执行 spark-submit
。