目錄
- 1.拉鏡像
- 2.創建容器
- 1.創建hadoop內部網絡
- 2.創建master容器,開放端口
- 3.創建slave1容器,不開放端口
- 4.創建slave2容器,不開放端口
- 3.三臺主機都修改/etc/hosts文件
- 4.格式化hdfs
- 5.啟動hadoop
- 6.web訪問測試
1.拉鏡像
這里推薦第一個
docker pull registry.cn-hangzhou.aliyuncs.com/hadoop_test/hadoop_base
或者
docker pull qianiqan/hadoop_only
2.創建容器
三個容器的名稱分別是Master、Slave1、Slave2
1.創建hadoop內部網絡
目的是實現容器與容器之間的相互通信
docker network create --driver=bridge hadoop
hadoop:是創建的網絡名
2.創建master容器,開放端口
docker run -it --network hadoop -h Master --name Master -p 9870:9870 -p 8088:8088 registry.cn-hangzhou.aliyuncs.com/hadoop_test/hadoop_base bash
–network hadoop :指定該容器使用創建的hadoop網絡
–name Master :把該容器名稱命名為Master
-p 9870:9870 :將宿主機的9870端口號,映射到容器的9870端口
-p 8088:8088 : 將宿主機的8088端口號,映射到容器的8088端口
這兩個開放端口
3.創建slave1容器,不開放端口
docker run -it --network hadoop -h Slave1 --name Slave1 registry.cn-hangzhou.aliyuncs.com/hadoop_test/hadoop_base bash
不開端口,只有master容器開
4.創建slave2容器,不開放端口
docker run -it --network hadoop -h Slave2 --name Slave2 registry.cn-hangzhou.aliyuncs.com/hadoop_test/hadoop_base bash
不開端口,只有master容器開
3.三臺主機都修改/etc/hosts文件
分別進入三臺主機,然后修改他們的hosts文件
vim /etc/hosts **************添加下面內容************* 172.20.0.2 Master #(容器ip 容器主機名) 172.20.0.3 Slave1 172.20.0.4 Slave2
查看容器ip的方法
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器ID
4.格式化hdfs
在master容器內操作
進入hadoop的bin目錄格式化
可以看出hadoop的存放目錄為/usr/local/hadoop/
cd /usr/local/hadoop/bin - ./hadoop namenode -format
5.啟動hadoop
三臺主機容器內部都可以
cd /usr/local/hadoop/sbin - ./start-all.sh
6.web訪問測試
宿主機ip:9870