这个问题困扰我一年之久。
大三学期的课程,因为集群网络问题卡壳。当时查阅各种资料,百度几十篇文章,看博客,甚至是请教老师都没能解决,也因为这个问题导致Hadoop后面都没有实操学习。
今大四毕业之际,又要使用Hadoop集群完成毕设。再次回到当初的问题,去请别人花一两百都不能解决问题。于是只能自己再次摸索……
问题解决好了,真的是想说自己牛逼!!!
知识基础
以下部分来源于其他文章
NAT模式——可以内外网通信,安全
如果主机可以上网,虚拟机可以上网
虚拟机之间不能ping通
虚拟机可以ping通主机(此时ping虚拟机的网关,即是ping主机)
主机不能ping通虚拟机
仅主机模式——只能和内网通信,不可以上网
虚拟机不可以上网
虚拟机之间可以ping通
虚拟机可以ping通主机(注意虚拟机与主机通信是通过主机的名为VirtualBox Host-Only Network的网卡,因此ip是该网卡ip 192.168.56.1,而不是你现在正在上网所用的ip)
主机可以ping通虚拟机
桥接模式——只有连接作用,不会转换,可以连通内外网
如果主机可以上网,虚拟机可以上网
虚拟机之间可以ping通
虚拟机可以ping通主机
主机可以ping通虚拟机
以上各点基于一个前提:主机可以上网
如果主机不可以上网,所有1-4特点均无
以下部分为网络知识的补充
TCP/IP协议
(传输层,网络层)互联网协议
IP地址addresses:网络ip,路由随机分配,标识一个服务器(192.168.1.10)IPV4,IPV6
掩码netmask:标识同一网段(255.255.255.0)——24位掩码
网络地址network address(192.168.1.10/24),与运算
网段:路由器网段,保持网段(192.168.1.0/24)
网关gateway:网段的起始(192.168.1.1/24)
广播broadcast:网段的结束(192.168.1.255/24)
nameservers:addresses
DNS:指向服务器ip地址,用于解析域名
114DNS 114.114.114.114 114.114.115.115
阿里DNS 223.5.5.5 223.6.6.6
百度DNS 180.76.76.76
谷歌DNS 8.8.8.8
OpenDNS 208.67.220.220
本地连接,WiFi网卡,百度,京东属于外网
仅主机网络
可以在Windows中存在其网卡,查看属性,IP地址默认为192.168.56.1/24
因此在虚拟机的仅主机网卡,其IP地址也为192.168.56.x/24
配置集群处于同一网段,即修改IP地址为192.168.1.x/24
inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255
inet 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255
inet 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255
桥接网卡
打开Windows命令提示符(win+R,输入cmd,回车),指令查看网卡
ipconfig
最后一个无线局域网,192.168.3.13即为当前WiFi上网的IP地址。
网络配置
首先是设置网卡
虚拟机一般使用的是NAT网卡(可以上网,IP为10.0.2.15 但是不能连接集群节点)
我们配置集群需要用到的是仅主机网络和桥接网络
仅主机网络:用于创建内部网络(内部网络连接虚拟机master,slave1,slave2与主机)(即用于联通集群各个节点,使所有节点保持在同一网段192.168.1.10;但是不能上网)
桥接网卡:集群可以通过主机连接外部网络(可以上网,IP为192.168.3.12 (因为笔记本连接的WiFi是该网段))
1. 设置网卡
每个节点的网卡设置如下:特别注意的是MAC地址必须一致!!!
网卡一(enpOs3)和网卡二(enpOs8)可以交换,不会影响,只是配置IP地址相同即可
2. 启动虚拟机
一、打开终端查看网卡配置
可以用的指令有:ifconfig,route,ip addr
网卡一即是enpOs3,使用的是桥接网卡,因此IP地址为笔记本连接WiFi的网段192.168.3.x/24
网卡二即是enpOs8,使用仅主机模式,因此IP地址为Windows适配器中的网段192.168.56.x/24
二、使用命令修改仅主机模式网卡的地址为192.168.1.x/24
- 修改,输入管理员密码
sudo gedit /etc/netplan/01-network-manager-all.yaml
- yaml文件
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
ethernets:
enp0s8:
addresses: [192.168.1.10/24]
dhcp4: no
dhcp6: no
gateway4: 192.168.1.1
nameservers:
addresses: [192.168.1.1,114.114.114.114]
- 使配置生效
sudo netplan apply
三、再次查看网卡,检查IP地址修改成功
四、master节点配置完成。同理,配置slave1 、slave2节点。ping通各节点及外网(ctrl+c中断)
slave1修改IP地址前后
slave2修改IP地址前后
ping master
ping slave1
ping slave2
ping baidu.com -c 3
全部可以ping通,说明集群可以联通,并且可以上网。