在 Linux 环境下 HDFS 无法连接 的原因有很多,下面按「最常见 → 较少见」的顺序帮你系统性排查。
jps
看是否有:
NameNodeDataNodeResourceManager(YARN 相关)如果没有 NameNode:
start-dfs.sh
HDFS 默认端口:
8020 或 90009870(Hadoop 3.x)检查:
netstat -tunlp | grep 8020
# 或
telnet localhost 8020
防火墙:
systemctl status firewalld
# 关闭
systemctl stop firewalld
典型错误:
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:8020</value>
</property>
常见问题:
cat /etc/hosts
必须有:
127.0.0.1 localhost
<你的IP> <你的hostname>
否则 HDFS 会解析失败。
常见错误:
Connection refused
Call From xxx to yyy:8020 failed
解决:
hdfs dfs -ls hdfs://localhost:8020/
常见异常:
UnknownHostExceptionConnection refusedNo Route to Host检查:
fs.defaultFS 是否一致ping 通 NameNodehdfs dfsadmin -safemode get
如果是 ON:
hdfs dfsadmin -safemode leave
hdfs dfsadmin -report
如果 DataNode 为 0:
dfs.datanode.data.dircurrent 后重启(⚠谨慎)HDFS 默认用户是启动 Hadoop 的用户
错误示例:
Permission denied: user=root, access=WRITE
解决:
sudo -u hdfs hdfs dfs -mkdir /test
jps
netstat -tunlp | grep 8020
cat /etc/hosts
hdfs dfsadmin -report
hdfs dfs -ls /
你可以贴出:
core-site.xmlhdfs-site.xmljps 输出我可以直接告诉你 是哪一步错了。