在 CentOS 上测试 HDFS 连通性,可以从网络层、服务层、客户端层逐步排查。下面按常用场景给你一套完整方法。
HDFS 默认端口(常见):
8020 或 90009870(Hadoop 3.x) / 50070(Hadoop 2.x)# 测试 RPC 端口
telnet namenode-host 8020
# 或
nc -zv namenode-host 8020
# 测试 Web 端口
curl -I http://namenode-host:9870
✅ 通则说明网络和防火墙没问题
❌ 不通检查:防火墙、安全组、hosts 配置
hdfs dfs 命令确保已安装 Hadoop 客户端并配置 HADOOP_HOME
hdfs dfs -ls /
或指定 NameNode:
hdfs dfs -ls hdfs://namenode-host:8020/
常见结果:
Connection refused → 服务未起或端口错No route to host → 网络问题UnknownHost → hosts 或 DNS 问题hadoop checknative(可选)检查原生库(非必须,但排查有用)
hadoop checknative
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://namenode-host:8020");
FileSystem fs = FileSystem.get(conf);
System.out.println(fs.exists(new Path("/")));
如果是 HA / Kerberos:
kinit user@REALM
hdfs dfs -ls /
✅ /etc/hosts 是否正确
✅ 防火墙是否放行
systemctl status firewalld
✅ SELinux 是否影响(测试可临时关闭)
setenforce 0
✅ Hadoop 配置文件是否同步
core-site.xmlhdfs-site.xml| 现象 | 可能原因 |
|---|---|
| telnet 不通 | 网络/防火墙 |
| telnet 通但 hdfs 命令失败 | 配置错误 |
| Web 能开但命令失败 | 权限/Kerberos |
| 报 UnknownHost | hosts/DNS |
如果你愿意,可以告诉我:
我可以帮你精准定位。