使用docker部署hadoop集群
0. 写在前面
网上也已经有很多教程了,但是其中都有不少坑,在此记录一下自己安装的过程。
目标:使用docker搭建一个一主两从三台机器的hadoop2.7.7版本的集群
准备:
首先要有一台内存8G以上的centos7机器,我用的是阿里云主机。
其次将jdk和hadoop包上传到服务器中。
1. 步骤
大致分以下几步:
安装docker
基础环境准备
配置网络,并启动docker容器
配置host及ssh免密登录
安装配置hadoop
测试使用hadoop
1.1 安装docker
依次执行如下步骤安装docker。如果有docker环境的可以跳过。

1.2 基础环境准备
1.2.1 创建基础的centos7镜像
拉取官方centos7镜像
通过build Dockfile生成带ssh功能的centos镜像
创建Dockerfile文件
vi Dockerfile
将如下内容写入Dockerfile

上述内容大概意思是:以centos镜像为基础,设置密码为wqe123,安装ssh服务并启动
构建Dockerfile
docker build -t="centos7-ssh" .
将生成一个名为centos7-ssh的镜像,可以通过docker images查看
1.2.2 生成有hadoop和jdk环境的镜像
将准备好的包放在当前目录下。hadoop-2.7.7.tar.gz和jdk-8u202-linux-x64.tar.gz
通过build Dockfile生成带hadoop和jdk环境的centos镜像
刚才已经创建了一个Dockerfile了,先将他移开。mv Dockerfile Dockerfile.bak
创建Dockerfile
vi Dockerfile
将以下内容写入:

上述内容大概意思是:以上面生成的centos7-ssh为基础,将hadoop和jdk包放进去,然后配好环境变量。
构建Dockerfile
docker build -t="hadoop" .
将生成一个名为hadoop的镜像
1.3 配置网络,并启动docker容器
因为集群间必须要能网络连通,所以要先配置好网络。
创建网络
docker network create --driver bridge hadoop-br
以上命令创建了一个名为hadoop-br的bridge类型的网络
启动docker时指定网络

查看网络情况
docker network inspect hadoop-br
执行以上命令就可以看到对应的网络信息:

我们可以得知3台机器对应的ip:
172.18.0.2 hadoop1 172.18.0.3 hadoop2 172.18.0.4 hadoop3
登录docker容器,互相之间就可以ping通了。
docker exec -it hadoop1 bash
docker exec -it hadoop2 bash
docker exec -it hadoop3 bas
本文转载自博客园:
https://www.cnblogs.com/upupfeng/p/13616125.html