本文主要展示安装三台虚拟机搭建Hadoop集群中的虚拟机固定IP配置,使得各机之间可以互通,不受外网的影响,由于想省事,是先按照完master,然后克隆过去配置,做完之后发现坑很多,之前单独安的时候没这么多问题。建议第一次弄的话,还是老老实实的一台台虚拟机分开配。我这个配的比较复杂,中间出了很多问题,查了很多资料,如果你也遇到了坑,可以看看本文是否对你有帮助。记住配置完后,一定要重启虚拟机。
HDFS内部需要大量的命令传递和数据传输工作,为了便于HDFS内部各个节点之间进行识别,我们需要建立虚拟机名、HDFS节点、IP地址、机器名之间的映射关系。分为固定虚拟机IP,修改机器名,建立映射三个步骤,最终结果如下表所示
虚拟机名 |
HDFS职能 |
固定IP地址 |
机器名 |
HadoopMaster |
NameNode |
192.168.1.150 |
master |
HadoopSlave1 |
DataNode |
192.168.1.151 |
slave1 |
HadoopSlave2 |
DataNode |
192.168.1.152 |
slave2 |
单个虚拟机安装可参见https://blog.csdn.net/babyxue/article/details/80970526
配置JDK可参见https://blog.csdn.net/u010590120/article/details/94736800
如果你后续要安装Spark的话,需要配置Scala可参见https://blog.csdn.net/u010590120/article/details/94758430
单个虚拟机配置完成后,利用VM的克隆功能来简化后续两台从机的配置过程
在VM中,右键配置好的虚拟机,点击管理菜单下的克隆按钮
选择创建完整克隆
克隆两台从机,分别命名为Slave1和Slave2
对克隆机进行配置修改 ,主要有三个地方,网络配置修改,虚拟机名修改及hosts映射文件配置,以下操作均需root权限,键入命令su root获取root权限
这个地方有点坑,远没有我想的简单,不知道是版本问题还是什么原因,按照https://blog.csdn.net/babyxue/article/details/80970526 步骤弄完之后,各机之间是ping不通的,最后我查了好几个问题(mac地址问题),最终搞定了,都设置了一遍,但是不知道那些步骤是必须的,但是按照这步骤来是肯定可以走通的。
开始之前请依次键入一下三个命令 关闭网络管理器
systemctl stop NetworkManager
systemctl disable NetworkManager
service network restart
1网络配置修改
这一步是修改虚拟机mac地址及固定IP
键入命令cd /etc/sysconfig/network-scripts/ 来到网络目录下,键入命令ls -a列出文件 修改红框标记的文件,这个根据你的安装情况来,就是修改ifcfg-en***文件,一般默认是ifcfg-enS33
键入命令 mv ifcfg-eno16777736 ifcfg-eth0 将slave1的网卡设置为eth0
不知道是不是必须的,以防万一我将三个虚拟机的网卡改为不同名字,master 使用默认的eno16777736 slave1改为eth0 ,slave2改为eth1
更新UUID:键入命令uuidgen etho 为slave1的网卡 eth0生成新的UUID,记住这个id
更新网卡配置文件:可以在VM中点击虚拟机设置,点击高级,找到克隆机的新mac地址,记住这个MAC地址
修改配置文件:键入命令 vi /etc/sysconfig/network-scripts/ifcfg-eth0
按键i 进入编辑模式,分别对mac地址,UUID,网卡名,IP地址进行修改
网卡地址HWDDR 对于slave1和slave2按照前面的方法在VM中查看
UUID按照前面的方法动态生成
网卡名,对于slave1,slave2分别修改为eth0 eth1
IP地址,对标红处的IP地址进行修改,slave1修改为192.168.1.151, slave2修改为192.168.1.152
按键esc 进图命令模式 键入命令:wq! 保存退出
2.更改默认网卡
为了使新更名的网卡生效
键入命令vi /etc/sysconfig/grub
在”GRUB_CMDLINE_LINUX“变量中添加一句”net.ifnames=0 biosdevname=0“
效果如下所示
然后键入命令grub2-mkconfig -o /boot/grub2/grub.cfg 更新配置
最后添加udev规则
键入命令vi /etc/udev/rules.d/70-persistent-net.rules
进行如下更改,我这里文件是空的,所以直接复制进去更改的,有些版本系统可能会出现多个网卡的情况,可以按照
https://blog.csdn.net/youcai35/article/details/49174747的方法禁用原网卡
3.改主机名
键入命令 hostnamectl set-hostname 你的主机名
这里键入hostnamectl set-hostname slave1 将主机名修改为slave1
键入命令 hostname 查看是否修改成功,如图所示则表示修改成功,同理将从机二 机器名修改为slave2,主机的机器名修改为master
4.修改hosts文件
这一步的目的是,使得各机可以使用机器名同学,而无需使用IP地址,可以理解为域名映射文件
添加的格式为192.168.1.150(IP地址) xxxxxxxx(映射主机名主机名字)
这里为了方便起见,对三台虚拟机配置相同的映射文件
键入命令vi /etc/hosts
按键i 进入编辑模式
在文件末尾添加如下信息 可根据你的IP设置及对应机器名进行修改
192.168.1.150 master
192.168.1.151 slave1
192.168.1.152 slave2
修改结果如下所示
按键esc 进图命令模式 键入命令:wq! 保存退出
配置完成后 重启虚拟机
5.测试
三台机器设置完毕后进行 ping测试 看看是否可以两两互通,可以多测试几次
slave2 ping slave1
主机 ping slave2
到此 三台虚拟机的网络配置完成,下一步进行SSH免登陆