CentOS 上 HDFS 连不上 是很常见的问题,通常不是单一原因,而是网络、配置、权限、服务状态中某一项出了问题。下面按最常见原因 → 排查方法给你一个系统性的清单。
在 NameNode 上执行:
jps
应至少看到:
如果没看到:
start-dfs.sh
查看日志:
tail -n 100 $HADOOP_HOME/logs/hadoop-*-namenode-*.log
HDFS 常用端口:
检查防火墙:
systemctl status firewalld
临时关闭测试:
systemctl stop firewalld
或开放端口:
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --reload
getenforce
如果是 Enforcing,可临时关闭测试:
setenforce 0
NameNode 配置中通常是:
<property>
<name>fs.defaultFS</name>
<name>hdfs://namenode:9000</name>
</property>
客户端机器必须能解析 namenode:
cat /etc/hosts
示例:
192.168.1.10 namenode
192.168.1.11 datanode1
测试:
ping namenode
⚠️ 不能用 127.0.0.1 当 NameNode 地址给远程客户端
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value>
</property>
<property>
<name>dfs.namenode.rpc-address</name>
<value>namenode:9000</value>
</property>
确认:
查看 DataNode 日志:
$HADOOP_HOME/logs/hadoop-*-datanode-*.log
常见错误:
Connection refusedIncompatible clusterIDs解决(谨慎):
rm -rf /dfs/data/*
hdfs namenode -format
⚠️ 会清数据,仅测试环境用
HDFS 默认用户是启动 Hadoop 的用户。
客户端执行:
hdfs dfs -ls /
如果报错:
Permission denied: user=root, access=READ
解决:
export HADOOP_USER_NAME=hdfs
或:
sudo -u hdfs hdfs dfs -ls /
Configuration 没加载 core-site.xmlHADOOP_HOME测试命令:
hdfs dfs -ls hdfs://namenode:9000/
| 检查项 | 命令 |
|---|---|
| 服务 | jps |
| 端口 | `netstat -tunlp |
| 防火墙 | systemctl status firewalld |
| hosts | cat /etc/hosts |
| 配置 | core-site.xml |
| 用户 | whoami |
你可以贴出:
我可以直接告诉你是哪一步错了。