您的位置:首页 > 运维架构 > Docker

使用Docker部署Spark集群

2015-08-25 21:55 801 查看

使用Docker部署Spark集群

克隆包含启动脚本的git仓库

启动Spark0.8.0集群并切换至Spark Shell环境

不带参数运行部署脚本

*运行一些小的例子

终止集群

克隆包含启动脚本的git仓库*

git clone -b blogpost git@github.com:amplab/docker-scripts.git


当然,在这之前你必须已经配置了Github的SSH密钥认证,如果没有配置,会提示Permission Denied。解决方法可以参照上一篇日志。

启动Spark0.8.0集群并切换至Spark Shell环境

sudo ./docker-scripts/deploy/deploy.sh -i amplab/spark:0.8.0 -c


运行完这行命令你就得到了这样一个Spark集群:* 包含两个woker节点;HDFS也已配好。在第一次运行的时候,Docker会自动地区全局仓库区取到容器镜像, 并且缓存到本地。*

不带参数运行部署脚本

不带参数运行部署脚本会输出命令行帮助信息:

$ sudo ./docker-scripts/deploy/deploy.sh
usage: ./docker-scripts/deploy/deploy.sh -i <image> [-w <#workers>] [-v <data_directory>] [-c]

image:    spark or shark image from:
amplab/spark:0.7.3  amplab/spark:0.8.0
amplab/shark:0.7.0  amplab/shark:0.8.0


这个脚本根据给定的worker节点的数量,要么启动一个独立的Spark集群,要么启动一个独立的Shark集群。Hadoop HDFS服务也会被启动。因为服务依赖于适当配置的DNS, 所以一个容器会自动带着一个DNS转发器启动。所有的容器也能够使用预配置的RSA Key通过ssh访问到。

如果你想让你的容器访问主机的目录 – 譬如说向Spark里面导入一些数据 – 你可以直接接上-v选项就可以了。这个目录就会被挂载到Master和Worker容器的/data目录。

Spark和Shark Shell都是启动在各自独立的容器中。你可以使用-c选项区启动shell容器,也可以稍后attach上去。

那么,现在我们就启动含有两个worker的Spark0.8.0,并连接上Spark Shell:

然后,你就可看到类似下面的输出:

*** Starting Spark 0.8.0 ***
...
***********************************************************************
connect to spark via:       sudo docker run -i -t -dns 10.0.3.89 amplab/spark-shell:0.8.0 10.0.3.90

visit Spark WebUI at:       http://10.0.3.90:8080/ visit Hadoop Namenode at:   http://10.0.3.90:50070 ***********************************************************************


运行一些小的例子

$ sudo ./docker-scripts/deploy/deploy.sh -i amplab/spark:0.8.0 -c


例如

scala> val textFile = sc.textFile("hdfs://master:9000/user/hdfs/test.txt")
scala> textFile.count()
scala> textFile.map({line => line}).collect()
#


终止集群

$ sudo docker-scripts/deploy/kill_all.sh spark
$ sudo docker-scripts/deploy/kill_all.sh nameserver


这两个命令会杀掉所有的Spark和nameserver容器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Docker Spark