前言
我们小组的做的内容是在Docker上搭建Hadoop,并统计文件指定字符数量,我在CentOS云服务器上进行这个实验,由于服务器资源有限,最后我在本地Macbook上完成了这个实验
服务器配置:CentOS 7.2 64 位
本地主机:MacBook Pro 13.3 MacOS 10.12
一、搭建Docker环境
1.1 安装Docker
首先安装Docker必要安装包,使用命令:
yum install -y yum-utils device-mapper-persistent-data lvm2
![](https://img.haomeiwen.com/i5845585/1fd0924bedb5cc64.png)
由于系统自带的yum没有Docker-CE,所以我们要先增加Docker repo仓库,使用命令:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
![](https://img.haomeiwen.com/i5845585/0c1813cedf8085be.png)
使用 yum 安装 Docker:
yum install -y docker-ce
![](https://img.haomeiwen.com/i5845585/2d9239fc98740800.png)
安装成功后,查看Docker版本
docker -v
启动Docker
service docker start
设置开机启动
chkconfig docker on
![](https://img.haomeiwen.com/i5845585/753e1df70660f2ba.png)
1.2 配置Docker
因为国内访问 Docker Hub 较慢, 所以我使用腾讯云提供的国内镜像源, 加速访问 Docker Hub,依次使用命令:
echo "OPTIONS='--registry-mirror=https://mirror.ccs.tencentyun.com'" >> /etc/sysconfig/docker
systemctl daemon-reload
service docker restart
1.3 测试Docker
拉取镜像到服务器本地
docker pull centos
下载好的镜像就会出现在镜像列表里
docker images
![](https://img.haomeiwen.com/i5845585/efd3d3fff609c189.png)
这时我们可以在刚才下载的 CentOS 镜像生成的容器内操作了。
生成一个 centos 镜像为模板的容器并使用 bash shell
docker run -it centos /bin/bash
这个时候可以看到命令行的前端已经变成了 [root@(一串 hash Id)] 的形式, 这说明我们已经成功进入了 CentOS 容器。
![](https://img.haomeiwen.com/i5845585/6bc6c1e2a0babb35.png)
在容器内执行任意命令, 不会影响到宿主机, 如下
mkdir -p /data/simple_docker
可以看到 /data 目录下已经创建成功了 simple_docker 文件夹,
ls /data
退出容器
exit
查看宿主机的 /data 目录, 并没有 simple_docker 文件夹, 说明容器内的操作不会影响到宿主机
ls /data
![](https://img.haomeiwen.com/i5845585/a59c89f4baf67583.png)
以上说明我的Docker可以正常工作;
二、使用Hadoop
2.1.拉取Hadoop集群镜像
镜像是 Docker 的核心,可以通过从远程拉取镜像即可配置好我们所需要的环境,我们这次需要的是 Hadoop 集群的镜像。我直接使用kiwenlau的 Hadoop 集群镜像以及其配置:
sudo docker pull kiwenlau/hadoop:1.0
拉取镜像完成
![](https://img.haomeiwen.com/i5845585/d76b270365a49387.png)
2.2 克隆仓库到当前文件夹
首先安装一下git工具:
yum install git
![](https://img.haomeiwen.com/i5845585/6a0076809f20b103.png)
安装完成
![](https://img.haomeiwen.com/i5845585/23880bafa40e0b27.png)
克隆仓库到当前文件夹:
git clone https://github.com/kiwenlau/hadoop-cluster-docker
克隆仓库完成:
![](https://img.haomeiwen.com/i5845585/9b52eb54e58c94cc.png)
2.3 桥接网络
sudo docker network create --driver=bridge hadoop
![](https://img.haomeiwen.com/i5845585/d84044ea99bc1be5.png)
2.4 运行容器
cd hadoop-cluster-docker
./start-container.sh
![](https://img.haomeiwen.com/i5845585/beb5e5dce02668e9.png)
我使用了一个主节点两个从节点
2.5 启动Hadoop
./start-hadoop.sh
![](https://img.haomeiwen.com/i5845585/cf1fc597ffc1aa5b.png)
2.6 测试Word Count
Word Count 是一个测试 Hadoop 的 Shell 脚本,即计算文本中的单词个数;
./run-wordcount.sh
![](https://img.haomeiwen.com/i5845585/e09506c6acbf3f48.png)
由于我的服务器内存资源不足,所以没有测试成功,于是我到本地来进行测试。
三、本地使用Docker
3.1 下载Docker
由于在Linux服务器上测试识别,于是我在我的Macbook Pro上本地测试,在Docker官网下载Mac版Docker安装包;
![](https://img.haomeiwen.com/i5845585/de17bd1ccfcfa53f.png)
![](https://img.haomeiwen.com/i5845585/16f0eeeca93fc936.png)
3.2 本地运行Docker
下载完成后安装、运行Docker,打开Terminal,输入docker
![](https://img.haomeiwen.com/i5845585/cbc12f8b185c18e2.png)
本地Docker安装成功,之后再和Linux服务器一样拉取镜像、克隆仓库、桥接网络、运行容器、启动Hadoop,最后测试Word Count,这次可以运算出结果了:
![](https://img.haomeiwen.com/i5845585/86e0dd4f4986aa1e.png)
![](https://img.haomeiwen.com/i5845585/da8f48cd3ac1fef2.png)
四、个人总结
在Docker环境下运行Hadoop,过程虽然有些繁琐,但最终还是解决了,所以经常有人说,开发项目环境配置要花将近一半的时间,果真如此啊,要学习的东西还有很多啊!
网友评论