centos 7中修改/etc/hosts添加ip与主机名映射需用root权限编辑该文件,按“ip地址 主机名”格式追加条目,修改后即时生效但仅影响新连接;需确保/etc/nsswitch.conf中hosts行含files,且避免dns缓存或应用级缓存干扰。

修改 /etc/hosts 文件添加 IP 与主机名映射
CentOS 7 中的 IP 主机映射不靠网络服务动态解析,而是靠本地 /etc/hosts 文件静态定义。它只影响本机对域名或主机名的解析,不涉及 DNS 服务器,也不改变实际网络路由。
直接编辑该文件即可生效,无需重启网络服务,但需注意:修改后仅对本机新发起的连接(如 ping hadoop201、ssh hadoop201)起作用;已建立的 SSH 连接或后台进程不会自动重读该文件。
- 用 root 权限打开:
vi /etc/hosts - 在文件末尾追加一行,格式为:
IP地址 主机名 [别名...],例如:192.168.144.201 hadoop201 - 确保 IP 地址真实可达(即该 IP 已配置在某块网卡上),否则
ping hadoop201会通但连不上服务 - 不要删掉原有
127.0.0.1 localhost行,否则部分系统服务(如 systemd-logind)可能启动异常
为什么改了 /etc/hosts 还 ping 不通主机名?
常见现象是写入后 ping hadoop201 仍返回 unknown host,根本原因不是文件没保存,而是 DNS 解析顺序或缓存干扰。
- 确认是否用了 NetworkManager:它默认启用
dnsmasq或systemd-resolved,可能绕过/etc/hosts—— 可临时用getent hosts hadoop201验证是否被正确读取 - 检查
/etc/nsswitch.conf中hosts:行,必须包含files(即hosts: files dns),否则/etc/hosts被跳过 - 某些 Java 应用(如 Hadoop)会缓存 DNS 结果,改完 hosts 后需重启相关进程,不能只 reload
- Windows 宿主机也要同步改
C:\Windows\System32\drivers\etc\hosts,否则从宿主机ssh hadoop201仍失败
克隆虚拟机后必须同步修改的三处地方
在 VMware/VirtualBox 克隆 CentOS 7 虚拟机时,仅改 IP 不够,/etc/hosts 映射错位会导致集群通信失败(比如 NameNode 找不到 DataNode)。
- 先改网卡配置(如
/etc/sysconfig/network-scripts/ifcfg-ens33)里的IPADDR和GATEWAY - 再用
hostnamectl set-hostname hadoop202改主机名(比直接改/etc/hostname更可靠) - 最后更新
/etc/hosts:删掉旧映射行,新增192.168.144.202 hadoop202,并保留所有其他节点的映射(如192.168.144.201 hadoop201)
漏掉任何一项都可能导致 SSH 免密失败、ZooKeeper 节点无法发现彼此、或 HDFS 报 Connection refused —— 这些错误表面看是网络问题,根源常在 hosts 映射不一致。











