第一步:VMware 安装
VMware 安装可参考网址 https://www.windowszj.net/pcsoft/youxi/35924.html
第二步:centos7.9安装
- centos7.9镜像下载地址:
https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso - VM 安装Centos7.9步骤参考:
https://blog.csdn.net/weixin_58024114/article/details/125172058
用root 账户登录centos系统
第三步:docker环境安装
3.1 添加docker到yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.2 安装docker
#第一步
yum -y install docker-ce
#第二步
sudo mkdir -p /etc/docker
# 第三步:以下5行全部拷贝
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://10ph4ijp.mirror.aliyuncs.com"]
}
EOF
# 第四步 docker配置生效
sudo systemctl daemon-reload
# 第五步 重启docker
sudo systemctl restart docker
# 开启 docker 自启动
systemctl enable docker.service
# 关闭 docker 自启动 ( 这一步不用执行!!!!!)
systemctl disable docker.service
3.3 安装Hadoop
- 第一步
# 执行
docker search hadoop
# 以下是执行结果,可能每个人略有不同
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
sequenceiq/hadoop-docker An easy way to try Hadoop 661 [OK]
uhopper/hadoop Base Hadoop image with dynamic configuration… 103 [OK]
harisekhon/hadoop Apache Hadoop (HDFS + Yarn, tags 2.2 - 2.8) 67 [OK]
bde2020/hadoop-namenode Hadoop namenode of a hadoop cluster 52 [OK]
bde2020/hadoop-datanode Hadoop datanode of a hadoop cluster 39 [OK]
bde2020/hadoop-base Base image to create hadoop cluster. 20 [OK]
uhopper/hadoop-namenode Hadoop namenode 11 [OK]
bde2020/hadoop-nodemanager Hadoop node manager docker image. 10 [OK]
bde2020/hadoop-resourcemanager Hadoop resource manager docker image. 9 [OK]
uhopper/hadoop-datanode Hadoop datanode
- 第二步
docker pull sequenceiq/hadoop-docker
- 第三步查看安装结果
#执行
docker images # 查看所有镜像
# 结果示例
REPOSITORY TAG IMAGE ID CREATED SIZE
sequenceiq/hadoop-docker latest 5c3cc170c6bc 7 years ago 1.77GB
- 第四步: 创建三个Hadoop 实例
docker run --name hadoop -d -h master sequenceiq/hadoop-docker
docker run --name hadoop1 -d -h slave1 sequenceiq/hadoop-docker
docker run --name hadoop2 -d -h slave2 sequenceiq/hadoop-docker
可能遇到的问题:
- docker ps 执行后没有看到运行的三个实例
docker ps -a #查看所有实例
docker start fe2e78dd16cb c8edd12cef98 04b5376ff60c # 通过docker start 启动容器,注意替换这三个12位的字符串,根据自己电脑的 Container ID
-
第五步:Hadoop 配置
再打开三个命令窗口:如下图
分别执行
# master 执行
docker exec -it hadoop bash
# slave1 执行
docker exec -it hadoop1 bash
# salve2 执行
docker exec -it hadoop2 bash
master、 slave1、slave2 三个窗口都需要执行
/etc/init.d/sshd start
ssh-keygen -t rsa # 一直回车即可
cd /root/.ssh
cat id_rsa.pub > authorized_keys
本地(第一个)窗口执行
mkdir /ssh && cd /ssh
docker cp hadoop:/root/.ssh/authorized_keys ./authorized_keys_master
docker cp hadoop1:/root/.ssh/authorized_keys ./authorized_keys_slave1
docker cp hadoop2:/root/.ssh/authorized_keys ./authorized_keys_slave2
touch authorized_keys
cat authorized_keys_master authorized_keys_slave1 authorized_keys_slave2 > authorized_keys
cat authorized_keys # 查看所有秘钥,下一步要用
# 分别拷贝authorized_keys 到三个hadoop实例
docker cp /ssh/authorized_keys hadoop:/root/.ssh/authorized_keys
docker cp /ssh/authorized_keys hadoop1:/root/.ssh/authorized_keys
docker cp /ssh/authorized_keys hadoop2:/root/.ssh/authorized_keys
master、 slave1、slave2 三个窗口分别执行
查看ip
ifconfig
## 正常情况 master(inet addr:172.17.0.2)
# slave1(inet addr:172.17.0.3)
# slave2(inet addr:172.17.0.4)
vi /etc/hosts ### 追加内容
172.17.0.2 master
172.17.0.3 slave1
172.17.0.4 slave2
cd /root/.ssh # 进入到免密登录的秘钥目录
vi authorized_keys # 编辑秘钥内容 与 本地窗口中的authorized_keys一致
验证免密登录是否成功
ssh master
exit
修改Hadoop配置文件
find / -name hadoop-env.sh
# /usr/local/hadoop-2.7.0/etc/hadoop/hadoop-env.sh
cd /usr/local/hadoop-2.7.0/etc/hadoop
vi core-site.xml
追加以下内容
hadoop.tmp.dir
/usr/local/hadoop-2.7.0/hdpdata
执行
vi yarn-site.xml
追加以下内容
yarn.resourcemanager.hostname
172.17.0.2
master 窗口执行
cd /usr/local/hadoop-2.7.0/sbin && ./stop-all.sh
scp yarn-site.xml slave1:/usr/local/hadoop-2.7.0/etc/hadoop
scp yarn-site.xml slave2:/usr/local/hadoop-2.7.0/etc/hadoop
cd /usr/local/hadoop-2.7.0/bin
./hadoop namenode -format
cd /usr/local/hadoop-2.7.0/sbin
./start-all.sh
master、 slave1、slave2 三个窗口分别执行
jps
运行后的结果如下
220 DataNode
549 ResourceManager
399 SecondaryNameNode
129 NameNode
2058 Jps
642 NodeManager
安装好centos后下载Eclipse
Eclipse下载地址:
https://www.eclipse.org/downloads/download.php
常用的dfs 操作指令
cd /usr/local/hadoop-2.7.0/bin # 进入到hdfs 指令所在目录
./hdfs dfs -ls / # 查看文件系统根目录
./hdfs dfs -mkdir /test # 创建一个test 目录
在本地窗口执行
vi test.txt
# 随便输入内容,例如:
ddd
ddd
ddd
dd
dd
d
在 master 、slave1、slave2
1. cd /usr/local/hadoop-2.7.0/bin
2. ./hdfs dfs -ls /
3. ./hdfs dfs -mkdir /test # 创建文件夹
4. ./hdfs dfs -put /home/test.txt /test # 上传文件
找到MapReduce 的工具包
cd /usr/local/hadoop-2.7.0/bin
./hadoop jar $HADOOP_PREFIX/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.0.jar wordcount /test /testoutput
# /testoutput 每次执行的时候命名不能重复
./hdfs dfs -cat /testoutput/part-r-00000 # 查看WordCount 后的数据统计
docker 每次重启后执行的步骤
打开四个窗口
1、 本地窗口执行-查看所有待启动的容器
docker ps -a
- 根据 hadoop 、 hadoop1、hadoop2 的顺序,启动容器
# 这里的ID要替换成自己的哦!!!
docker start d0841eaaa094 d670c33b3332 aa2ddd814014
- 在master 窗口执行
docker exec -it hadoop bash
- 在slave1窗口执行
docker exec -it hadoop1 bash
- 在slave2 窗口执行
docker exec -it hadoop2 bash
- 在 master、slave1、slave2中分别编辑hosts
vi /etc/hosts ### 追加内容
172.17.0.2 master
172.17.0.3 slave1
172.17.0.4 slave2
或者使用 shell 脚本方式
master 窗口执行
cd # 回到容器的根目录
vi runhosts.sh
#添加以下内容
echo 172.17.0.2 master >> /etc/hosts
echo 172.17.0.3 slave1 >> /etc/hosts
echo 172.17.0.4 slave2 >> /etc/hosts
#授权脚本
chmod +x runhosts.sh
# 发送到slave1 slave2
scp runhosts.sh slave1:~
scp runhosts.sh slave2:~
实训延伸:
下载的网址: https://github.com/jpetazzo/pipework
推荐的一个数据相关的博客地址:https://tech.meituan.com/