有了Docker,一分钟就可以在你的笔记本上快速部署Spark集群

3 篇文章 0 订阅
2 篇文章 0 订阅

原文: https://amplab.cs.berkeley.edu/2013/10/23/got-a-minute-spin-up-a-spark-cluster-on-your-laptop-with-docker/

1, 初次翻译还望指正;2,目前没有亲测是否成功;3, 有些链接需要翻墙。


Apache Spark 和 Shark 让数据分析更快地进行写操作,更快地在集群上运行。这篇文章就教你怎样使用Docker快速并自动地安装、配置和部署Spark与Shark。有多快呢?我们记了一下时,发现只需要42秒就能够在笔记本上启动一个预配置好的含有几个woker的集群。你可以使用我们的Docker镜像去创建一个非常接近分布式部署的本地开发或测试环境。

Docker为创建和运行自给自足的Linux容器提供了一个简单的方式,并且这些Linux容器可以被用于打包任何应用。它的主要优势就是在你笔记本上运行的容器几乎可以不做修改地直接运行在生产集群上。事实上,Apache Mesos最近增加了对Docker的支持,可以让你在计算节点上运行Docker容器。

Docker可以运行在任何使用最近内核的64位Linux发行版。不过,你也可以在包括Mac OS在内的其他系统上安装,方法是通过增加一层虚拟层。入门请看Docker Hello World! 

在Docker中运行Spark

下一步是克隆包含启动脚本的git仓库。

$ git clone -b blogpost git@github.com:amplab/docker-scripts.git
这个仓库包含部署脚本和Docker镜像文件。我们很容易修改它们。(来自社区的贡献是值得欢迎的)


加快进度:在笔记本上部署虚拟集群

启动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:

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

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

*** 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
***********************************************************************

一旦,Spark Shell 启动好了,你就可以运行一些小的例子了:

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容器。

注意:

如果你通过vagrant在Mac OS上运行Docker,必须要分配至少2GB的内存给虚拟机。

还会有更多的东西

除了能够通过LXC在容器内为worker的进程提供一个轻量级的独立的运行环境之外,Docker也能为容器镜像提供类似结合的git和github。更多更新,请关注 AMPLab Docker account 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值