Hadoop集群版搭建

概览

1.规划
2.克隆虚拟机
3.在hosts文件修改ip映射
4.修改hadoop配置文件
5.更改slaves文件
6.集群版ssh免密钥登录
7.重新格式化namenode
8.启动hadoop并验证是否成功
9.若slave的datanode没有启动

上次说了Hadoop集群单机版的搭建,这次来依照单机版的基础搭建一个简单的集群版

1.规划

这次搭建的是一个主机和两个从机,也就是只有两个node节点,也可以让主机上有node节点,之后会说
|主机名|cluster规划 |
|–|–|
| master | namenode,secondarynamenode,ResourceManager |
| slave1 | Datanode, NodeManager |
| slave2 | Datanode, NodeManager |

首先克隆一台单机版虚拟机

2.克隆虚拟机

虚拟机右键–>管理–>克隆,选择创建完整克隆,
这里克隆几个要看你创建的集群规模,我便克隆三台,一台主机,两台从机.

在这里插入图片描述

然后启动虚拟机,改动静态ip

这个需要三台虚拟机都改动

还是到/etc/sysconfig/network-scripts文件夹下改动ifcfg-ens33文件

1
vim /etc/sysconfig/network-scripts/ifcfg-ens33

前面配置单机版的时候,如果觉得vi的命令不好用,可以安装vim命令 yum -y install vim之后就可以使用vim命令了.比vi编辑命令更加清晰

改动如图:

在这里插入图片描述
改为
在这里插入图片描述
这个虚拟机的ip只要是你没有使用的即可
然后保存,重启服务

1
systemctl restart network

接下来使用Xshell工具分别连接三台虚拟机(没有的去官网下载,有免费版本),Xshell的优点在于你可以随意的复制粘贴命令语句

3.在hosts文件修改ip映射

找到到hosts文件进行编辑

1
vim /etc/hosts

写入三台主机的ip地址和主机名
在这里插入图片描述

1
2
3
192.168.134.154 master
192.168.134.155 slave1
192.168.134.156 slave2

这里改动过之后最好重启虚拟机reboot,让其生效,这样最后配置ssh免密钥登录时不会出现异常

4.修改hadoop配置文件

如果你的主机名还是单机版的.可以不用更改

然后进入到 /usr/hadoop/hadoop-2.7.3/etc/hadoop/下修改core-site.xml和yarn-site.xml , 三个虚拟机都要更改,也可以只修改一台之后发送
将之前的主机名改为现在的主机 master
如图
在这里插入图片描述
改为
在这里插入图片描述

将yarn-site.xml内的
在这里插入图片描述
改为
在这里插入图片描述

当然,如果你的主机名还是用的单机版的,那么上述两步可以不改

接下来更改slaves文件

5.更改slaves文件

还是在该文件夹下
更改slaves文件
三个虚拟机都需要更改(其实这些都可以在克隆前更改,再克隆,不过也可以配置好后再发送)

1
vim slaves

改为
在这里插入图片描述
这里需要说明一下,如果你要主机也当作一个节点的话 , 那么在里面也要添加主机名称,这个文件就是告诉hadoop该启动谁的datanode

如果需要发送给另外主机的话就是

1
2
3
#会直接覆盖掉之前的
[root@master .ssh]# scp -r /usr/hadoop root@slave1:/usr/
[root@master .ssh]# scp -r /usr/hadoop root@slave2:/usr/

之后最重要的是ssh免密登录的配置

6.集群版ssh免密钥登录

三台虚拟机都需要操作

进入到~/.ssh

#每台机器先使用ssh执行以下,以在主目录产生一个.ssh 文件夹
ssh master

创建 ,然后进入 cd ~/.ssh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

#输入以下命令,一路回车,用以产生公钥和秘钥

[root@master .ssh]# ssh-keygen -t rsa -P ''
#出现以下信息说明生成成功
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:6YO1h1emM9gcWvv9OT6ftHxLnjP9u8p25x1o30oq3No root@master
The key's randomart image is:
+---[RSA 2048]----+
| |
| |
| |
| . |
| S o o |
| + O * . |
| . B.X. o.+.|
| +o=+=**%|
| .oEo*^^|
+----[SHA256]-----+
#将每台机器上的id_rsa.pub公钥内容复制到authorized_keys文件中
[root@master .ssh]# cp id_rsa.pub authorized_keys

如果more authorized_keys 查看如图
在这里插入图片描述
@后是你的主机名则表示正常,否则重新进行上几步进行覆写

然后分别把从机slave1和slave2的authorized_keys文件进行合并(最简单的方法是将其余三台slave主机的文件内容追加到master主机上)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#将所有的authorized_keys文件进行合并(最简单的方法是将其余三台slave主机的文件内容追加到master主机上)
[root@slave1 .ssh]# cat ~/.ssh/authorized_keys | ssh root@master 'cat >> ~/.ssh/authorized_keys'
[root@slave2 .ssh]# cat ~/.ssh/authorized_keys | ssh root@master 'cat >> ~/.ssh/authorized_keys'

#查看master上的authorized_keys文件内容,类似如下即可
[root@master .ssh]# more authorized_keys

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5iw8+LlLxo0d77uaTChOKKJqfMHzp2jgzqV2hFAneFXqqWmr
Z4/FrMUPenmdss19bP4Up9G7PGbJu29yZDvkDwlmuqnVajYyDOsCl7PPXPWXMIlxMGUHgSXLnQQi6QnWp04vJKD
s0EbiRTd0ZYCSQefzJcZ8jbQ7bLYt6jtil7FfUupTdHTeexKKd8Mq3K7YFZHumKvhzs6wWiM+n41jANS083ss3O
YmAdO2cU0w1BhLVvJhdzd6fNG3RXVCXI2v0XxCUHiqI9Oewl2qPOfKzeyy09bJxo371Ezjmt8GMrkA/Ecepkvx1
2qwNzC9bSPLfbnPWVo2gIxe4mMaFqCFJ root@master
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3CkB3Jejavt+yFphsbciktWciJmbcUBOv3ZLPVLW18ZxXGZK
vG50EPXo/4By7P6IRW0wCa5YuckQEW+q6kmSatxqJ8e/K9a1mAk13N4f7V7M71Nn8IkujlF3gHYjKrmnEWpGJCy
URzywIQTRArlIac1xj2SeM6q+gTMV9WrAKJupIRHli+W0kHVaYHNdKl7KMUT4KVrSl+h4wFwAd7Tcyj7JIbU
cCCL6o/v/LqGFwpcJfbfUsuKJJho+tImh41j7mSXR8kRbTSZkcq5KX+iANrANwOHZ58tV5KXmMQjuVq7aJ985C1
6hHssB6zq/zjAxpxAyQIeE8Incc8U8ix root@slave1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC//uaMbzbkYqxdgZJSdq+gdQYldzMQ7D3SxsUaNO5oVnVOszw
bNnmL8vp1EUUehabQHPCAvCmLKUPXzfcxlyJEF/pnY77u4ySwsRVEpHvsDZbrclgCOrS6hW00sSx303KHLOgX
70LfrmnohfUhvTxajzLXT+C8f5ZfTZ8meKD73HKl16jRwZQ8YhW9GUyuCkgQTGtKtTKPsRUd9LpAc/7/u8xvvvN
vTYPxgyTJcUMzGSOHh8J3upI54ykY0FgBkjs1fCUaDalxAgsHw9B1iyx706WbcT6ymiQVMKGnnnM6k2KPvUvfD
0swVfUSG+4ZsYSRHRTgWuiBbHoIr7DVd root@slave2

然后分发主机上的密钥 authorized_keys

1
2
3
4
5
#将master上的authorized_keys文件分发到其他主机上

[root@master .ssh]# scp ~/.ssh/authorized_keys root@slave1:~/.ssh/

[root@master .ssh]# scp ~/.ssh/authorized_keys root@slave2:~/.ssh/

7.重新格式化namenode

三台虚拟机都需要

1
hadoop namenode -format

8.启动hadoop并验证是否成功

在主机master上直接启动start-all.sh从机会跟着启动

然后分别在主机从机上查看jps
应该与规划相同
|主机名|cluster规划 |
|–|–|
| master | namenode,secondarynamenode,ResourceManager |
| slave1 | Datanode, NodeManager |
| slave2 | Datanode, NodeManager |

9.若slave的datanode没有启动

如果发现从机的datanode没有启动
首先在主机master停止

stop-all.sh

然后进入到从机的/usr/local/hadoop/tmp/dfs/data

cd /usr/local/hadoop/tmp/dfs/data

也就是hdfs-site.xml文件中dfs.datanode.data.dir的路径,data的存放位置,将其中的current删除

rm -rf current/

然后重新初始化namenode 再重新启动hadoop即可

hadoop namenode -format

start-all.sh

然后在http://主机master的ip:50070和http://主机master的ip:8088分别查看
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

若是如此便启动成功了

至此,简单的hadoop集群版搭建完成了

接下来会进行java代码操作hadoop文件上传下载删除的操作,看之后的blog