基于Docker的Hadoop集群环境搭建
准备基础环境
- 首先在系统中安装docker的相关软件,本文基于系统
ubuntu 18.04
版本构建,docker version 17.12
- 安装docker,网上很多文章不载赘述
编写基础镜像文件
基于
ubuntu 18.04
的官方镜像base/Dockerfile
base/jdk.tar.gz
base/hadoop.tar.gz
base/workers
base/init.sh
base/Dockerfile
1 | FROM ubuntu:18.04 |
将jdk的tar.gz存放与路经base/jdk.tar.gz
将Hadoop的tgz存放与路经base/hadoop.tar.gz
构建基础镜像
构建命令:
1
sudo docker build -t dean1943/hadoop3 .
编写master
基于Base的基础镜像
master/instance.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14sudo docker run -it -h=master -p 8088:8088 -p 9870:9870 -p 9864:9864 -p 19888:19888 -p 8042:8042 -p 8888:8888 --name master -d dean1943/hadoop3 /bin/bash
sudo docker run -it -h=hadoop3 -p 8088:8088 -p 9870:9870 -p 9864:9864 -p 19888:19888 -p 8042:8042 -p 8888:8888 --name hadoop3 -d dean1943/hadoop3 /bin/bash
sudo docker exec -it master /bin/bash rm -f ~/.ssh/known_hosts
sudo docker exec -it master /bin/bash /init.sh
sudo docker exec -it master /bin/bash /etc/init.d/ssh start
sudo docker exec -it master /bin/bash /opt/hadoop/bin/hadoop namenode -format
sudo docker exec -it hadoop3 /bin/bash /etc/init.d/ssh start
sudo docker exec -it master /bin/bash /opt/hadoop/sbin/start-dfs.sh
sudo docker exec -it master /bin/bash /opt/hadoop/sbin/stop-dfs.sh
sudo docker exec -it master /bin/bash /opt/hadoop/sbin/start-yarn.sh
sudo docker exec -it master /bin/bash /opt/hadoop/sbin/stop-yarn.sh构建命令:
1
sudo sh instance.sh
编写worker镜像文件
基于Base的基础镜像
worker/instance.sh
1
2
3
4sudo docker run -it -h=master -p 8088:8088 -p 9870:9870 -p 9864:9864 -p 19888:19888 -p 8042:8042 -p 8888:8888 --name master -d dean1943/hadoop3 /bin/bash
sudo docker run -it -h=hadoop3 -p 8088:8088 -p 9870:9870 -p 9864:9864 -p 19888:19888 -p 8042:8042 -p 8888:8888 --name hadoop3 -d dean1943/hadoop3 /bin/bash
sudo docker exec -it master /bin/bash rm -f ~/.ssh/known_hosts
sudo docker exec -it master /bin/bash /init.sh构建命令:
1
sudo sh instance.sh
Hadoop配置文件
workers
1
2worker1
worker2init.sh
1
2
3
4
5echo "172.17.0.2 master" >> /etc/hosts
echo "172.17.0.3 worker1" >> /etc/hosts
echo "172.17.0.4 worker2" >> /etc/hosts
/bin/bash /etc/init.d/ssh start
构建命令
启动命令
start-all.sh
1
2
3
4
5
6
7
8
9sudo docker run -d -p 50001:6066 -p 50002:7077 -p 50003:8080 --name master -h master dean1943/hadoop3
sudo docker run -d -p 50004:8081 --name worker1 -h worker1 dean1943/hadoop3
sudo docker run -d -p 50005:8081 --name worker2 -h worker2 dean1943/hadoop3
sudo docker exec -it worker1 /bin/bash /init.sh
sudo docker exec -it worker2 /bin/bash /init.sh
sudo docker exec -it master /bin/bash /init.sh
sudo docker exec -it master /bin/bash /opt/hadoop/sbin/start-all.sh停止命令
1
sudo docker stop master worker1 worker2