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

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

现在,我并不真正了解如何从我的本地系统中将我的jar包发送到docker容器,然后运行它。

我想我错过了这一切真的一起工作,但也许有人可以清除它。

我会非常感谢!

据我所知有两个可能性:

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

我认为最好的方法是“扩展”sequenceiq spark docker镜像,并在图像的构build阶段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命令创build/编辑bootstrap.sh(入口点):

你可以使用他们的bootstrap.sh并在这里添加你的spark提交命令(在这个文件的末尾的某处),如下所示:

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

只需将您的sparkapplication.jar nad bootstrap.sh放在sparkapplication.jar旁边(在相同的文件夹中)。

2,手动将spark应用程序复制到运行容器

第二个select是使用他们的docker容器和复制应用程序到容器:

docker cp sparkapplication.jar container:/sparkapplication.jar

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