在 CentOS 上给 HDFS 配置“域名”(通常是用主机名代替 IP),一般分三步:DNS/Hosts 解析 → Hadoop 配置 → 防火墙/重启。下面以 单 NameNode + 多 DataNode 为例说明。
HDFS 并不负责 DNS,它只是用你配置的 hostname 去连机器,所以机器必须能解析。
/etc/hosts所有节点都改:
vi /etc/hosts
示例:
192.168.1.10 nn1.hadoop.com nn1
192.168.1.11 dn1.hadoop.com dn1
192.168.1.12 dn2.hadoop.com dn2
✅ 每个节点都要有完整 hosts
如果你有内网 DNS,直接配置 A 记录即可,不需要 hosts。
core-site.xml<property>
<name>fs.defaultFS</name>
<name>hdfs://nn1.hadoop.com:9000</name>
</property>
hdfs-site.xml<property>
<name>dfs.namenode.rpc-address</name>
<value>nn1.hadoop.com:9000</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>nn1.hadoop.com:9870</value>
</property>
workers(旧版 slaves)dn1.hadoop.com
dn2.hadoop.com
hostname
hostnamectl set-hostname nn1.hadoop.com
⚠️ hostname 必须和 hosts / DNS 中一致
systemctl stop firewalld
systemctl disable firewalld
或开放端口:
firewall-cmd --add-port=9000/tcp --permanent
firewall-cmd --add-port=9870/tcp --permanent
firewall-cmd --reload
start-dfs.sh
浏览器访问:
http://nn1.hadoop.com:9870
命令行:
hdfs dfs -ls /
❌ 只用 IP 启动,后来改域名 → 要重新格式化或清 data ❌ hosts 只配 NameNode,DataNode 没配 → 注册失败 ❌ hostname 和配置不一致 → DataNode 不在线 ❌ 防火墙没关 → RPC 超时
如果你愿意,可以告诉我:
我可以给你一套可直接复制的配置文件。