CentOS 连不上 HDFS,通常不是“CentOS 的问题”,而是网络、配置、权限或 Hadoop 服务本身的问题。下面按最常见原因 → 排查方法给你一个清单。
在 **HDFS 所在机器(NameNode)**执行:
hdfs dfsadmin -report
或
jps
看是否有:
✅ 如果这里就不正常,问题在 Hadoop,不在 CentOS。
CentOS 默认有 firewalld:
systemctl status firewalld
临时关闭测试:
systemctl stop firewalld
或开放端口(Hadoop 常用):
firewall-cmd --add-port=9000/tcp --permanent
firewall-cmd --add-port=50070/tcp --permanent
firewall-cmd --reload
HDFS 强烈依赖 hostname
检查:
cat /etc/hosts
示例(所有节点都要一致):
192.168.1.10 namenode
192.168.1.11 datanode1
测试:
ping namenode
❌ 如果用 localhost 但客户端在别的机器,必连不上。
<property>
<name>fs.defaultFS</name>
<name>hdfs://namenode:9000</name>
</property>
❌ 写成 localhost 或 127.0.0.1 → 远程 CentOS 连不上
<property>
<name>dfs.namenode.rpc-address</name>
<value>namenode:9000</value>
</property>
hdfs dfs -ls hdfs://localhost:9000/
hdfs dfs -ls hdfs://namenode:9000/
或设置环境变量:
export HADOOP_CONF_DIR=/path/to/hadoop/etc/hadoop
HDFS 默认不允许 root:
whoami
解决:
useradd hadoop
su - hadoop
hdfs dfs -mkdir /user/centos
hdfs dfs -chown centos:centos /user/centos
getenforce
如果是 Enforcing:
setenforce 0
或永久关闭:
vi /etc/selinux/config
SELINUX=disabled
| 报错 | 原因 |
|---|---|
| Connection refused | 端口错 / NameNode 没起 |
| UnknownHostException | hosts 没配 |
| Permission denied | 用户或目录权限 |
| No route to host | 防火墙 / 网络 |
如果你愿意,可以把具体报错 + 你的连接命令 + core-site.xml贴出来,我可以直接帮你定位是哪一步错了。