利用Docker可以很快的安装一个Hadoop集群,方便学习和尝试Hadoop。
检查你的Docker环境
如果你还没有安装Docker,你可以参考Docker官方网站(https://docs.docker.com/install/)或者这个网站(https://yeasy.gitbooks.io/docker_practice/install/)进行安装。
安装好了以后可以用下面的命令检查一下你的环境:
$ docker --version$ docker-compose --version$ docker-machine –version
可以通过下面的命令启动一个web服务器:
docker run -d -p 80:80 --name myserver nginx
启动起来以后可以用浏览器打开这个网页
http://localhost
这说明你的Docker环境好了。
用Docker安装Hadoop集群
首先你需要一个Docker Image,如果你安装了git, 你可以clone一个repo到本地:
$ git clone git@github.com:big-data-europe/docker-hadoop.git
如果你没有git,你也可以直接下载zip(https://github.com/big-data-europe/docker-hadoop/archive/master.zip)
然后你就可以进入这个目录,安装和启动一个Hadoop集群:
$ cd docker-hadoop$ docker-compose up -d
第一次运行,需要比较长的时间来下载docker的image。
这一个命令会帮你安装和启动一个Hadoop集群,其中包括:
- 1个 HDFS namenode
- 1个 HDFS datanode
- 1个 YARN resourcemanager
- 1个 historyserver
- 1个 nodemanager
通过下面的命令可以查看到Docker的进程列表:
$ docker ps
查看系统的信息
可以通过这个下面的地址查看系统的信息:
http://localhost:9870
试试你的集群
我们现在可以用经典的Hadoop实例WordCount来试运行一下。通过下面的命令进入到namenode的容器里:
$ docker exec -it namenode bash
首先我们准备一些文件:
$ mkdir data$ echo "Hello Docker World" > data/f1.txt$ echo "Hello toutiao" > data/f2.txt
在HDFS里面建一个文件夹data:
$ hadoop fs -mkdir -p data
把我们刚才准备的文件写到HDFS:
$ hdfs dfs -put ./data/* data
下载WordCount代码(https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-mapreduce-examples/2.7.1/hadoop-mapreduce-examples-2.7.1-sources.jar)
找到namenode的容器的ID
$ docker container ls
把刚下载的jar包复制到namenode:
$ docker cp ./hadoop-mapreduce-examples-2.7.1-sources.jar 2aa29deaaf80:hadoop-mapreduce-examples-2.7.1-sources.jar
运行WordCount
root@namenode:/# hadoop jar hadoop-mapreduce-examples-2.7.1-sources.jar org.apache.hadoop.examples.WordCount input output
打印出运行结果:
root@namenode:/# hdfs dfs -cat output/part-r-00000
Docker1Hello2World1toutiao1
这样我们就完成了集群的搭建。
安全的关闭集群
$ docker-compose down