Use Spark in Docker on Mac
在Mac上安装Docker的过程是比较简单的,有详细的官方文档介绍, 本文主要记录我在Docker中使用Spark的一些笔记。
##1.下载docker-spark
我们需要的docker文件一般都是在Docker Hub上,它类似Github,
只是上面存放的都是一些docker文件。我们需要的是sequenceiq/spark这个库,
具体的下载命令类似git,是
docker pull sequenceiq/spark:1.6.0
,
接下来就是困扰了我很久的地方了,在这个库的文档中,
接下来就是用
docker build --rm -t sequenceiq/spark:1.6.0 .
来build了,
可是我尝试了很多次,每次都会报错
unable to prepare context: unable to evaluate symlinks in Dockerfile path:
lstat /Users/username/Dockerfile: no such file or directory
,
在网上找了很久也一直没有解决这个问题,直到搜到了作者的一个更老的版本的博客,
里面关于build是这样说的,
Alternatively you can always build your own container based on our Dockerfile.
Alternatively!!!这不是坑爹嘛!!!为啥在1.6里面就没有这个关键的字眼了呢! 尤其是对我这种docker新手来说!!!不过话说回来, 主要也是我没理解了docker build的含义:
Build a new image from the source code at PATH.
Build是用来依据Dockerfile重新创建一个image的,而我们其实在第一步的pull中就已经获得了一个image,
可以通过命令docker images
来查看你已经有的images。
##2.启动docker-spark
当通过pull获得了image或者通过build得到了image之后,接下来就可以启动了,
docker run -it -p 4040:4040 -h sandbox sequenceiq/spark:1.6.0 bash
具体的run命令的各个参数,可以参考具体的文档。
这个时候,你就已经进入了包含了spark的一个bash环境,然后就可以使用spark了。
理论上讲到这里就应该结束了,但是并不能,因为我在实际操作时发展,每次我在spark里做的改动,
当我下一次重新用上面的命令启动时,全部都丢失了,又一次需要重新开始。
在SO上找到这个问答,
才明白原来run命令运行一次就可以了,run命令其实是启动了一个container,每次run的时候,
都是重新启动一个全新的container,所以如果要接着上次的工作进行的话,可以使用
docker attach f357e2faab77
(注意最后一个是container的id,用docker ps -a
可以查看)。
好了,这样的话一个基本的使用场景就搞定了,以后如果有新的发现再来记录。
blog comments powered by Disqus