简介
这是一篇快速安装 hadoop集群的博客(安装jdk8和hadoop3.3 版本) , 应该只需要你5分钟.
真的, 我希望你用5分钟就能装好 hadoop, 虽然我自己花了差不多4天才装好它.... 但程序员的时间是宝贵的, 希望你会喜欢这种博客风格.
如果你想一步步来安装hadoop, 你可以看这篇勤快版本: https://www.jianshu.com/p/0c5176216b1d
预备工作
你当然要装好docker, 同时需要对docker 有一定的使用知识.
你也需要下载好工程:
git clone https://gitee.com/xiaofeipapa/docker_hadoop
开始
构建 docker
进入下载好的git目录, 然后
cd 到目录 ubuntu-ssh, 运行:
sudo docker build -t 'cys/ubuntu-ssh' .
cd 到目录 ubuntu-jdk8, 运行:
sudo docker build -t 'cys/ubuntu-ssh-jdk8' .
cd 到目录 ubuntu-jdk8-hadoop, 运行:
sudo docker build -t 'cys/ubuntu-ssh-jdk8-hadoop' .
构建自定义网络
sudo docker network create --subnet=172.20.0.0/24 my_net
--subnet :设置前 24 位为网络位,后 8 位为主机位,该网段可用 IP 地址:172.20.0.1 到 172.20.0.254
其中, 172.20.0.1 为网关, 其他容器不能再使用.
集群规划
名称 | ip | |
---|---|---|
主节点 | hadoop1 | 172.20.0.2 |
从节点 | hadoop2 | 172.20.0.3 |
从节点 | hadoop3 | 172.20.0.4 |
这里列出需要的集群信息. 注意ip和自定义网络的网段一致.
启动容器
# hadoop 1 : 172.20.0.2
sudo docker run --name hadoop1 --hostname hadoop1 --net my_net --ip 172.20.0.2 -d -P -p 50070:50070 -p 8088:8088 cys/ubuntu-ssh-jdk8-hadoop # hadoop1 对外开放端口50070和8088
sudo docker run --name hadoop2 --hostname hadoop2 --net my_net --ip 172.20.0.3 -d -P cys/ubuntu-ssh-jdk8-hadoop
sudo docker run --name hadoop3 --hostname hadoop3 --net my_net --ip 172.20.0.4 -d -P cys/ubuntu-ssh-jdk8-hadoop
进入主节点进行操作
sudo docker exec -it hadoop1 /bin/bash
ping 172.20.0.3
可以看到该容器能够ping 通其余两台机器. 后续的所有操作如无提示, 都是在主节点机器进行操作.
设置免密码登录
ssh-keygen
# 一路回车
# 提示输入密码, 密码是 root
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3
执行命令
cd /usr/local/hadoop
bin/hdfs namenode -format
sbin/start-all.sh
检查主节点进程
现在应该还是在主节点容器里, 敲入 jps, 应该看到以下进程:
检查从节点进程
对 hadoop2 和 hadoop3 依次进入, 并运行 jps
sudo docker exec -it hadoop2 /bin/bash
jps
应该能看到:
这样, hadoop 就算安装成功了.
测试
在主节点创建文件并上传
创建 a.txt
vim a.txt
hello hadoop
hello spark
hello flink
上传
hdfs dfs -put a.txt /
hadoop fs -ls /
应该能看到文件已成功上传
提交job至集群测试
cd /usr/local/hadoop/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-3.3.1.jar wordcount /a.txt /out
首先应该能看到类似如下输出:
然后执行:
hadoop fs -ls /out
可以看到 out 的内容如下:
再查看输出内容:
hadoop fs -cat /out/part-r-00000
可以看到:
到此为止, 大功告成!!