在 Linux 上排查 HDFS(Hadoop Distributed File System)配置问题,可以从「进程 → 配置 → 日志 → 网络 → 权限」逐步排查。下面是一套比较系统的排查思路。
which hdfs
hadoop version
HADOOP_HOME 是否配置PATH 是否包含 $HADOOP_HOME/binjps
正常应有:
常见问题:
启动命令:
start-dfs.sh
主要文件位置:
$HADOOP_HOME/etc/hadoop/
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/hadoop/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hadoop/datanode</value>
</property>
✅ 检查点:
fs.defaultFS 是否一致ls -ld /data/hadoop/namenode
ls -ld /data/hadoop/datanode
修复示例:
mkdir -p /data/hadoop/namenode
mkdir -p /data/hadoop/datanode
chown -R hadoop:hadoop /data/hadoop
⚠️ 会清空元数据,仅第一次或重建集群使用
hdfs namenode -format
日志目录:
$HADOOP_HOME/logs/
重点文件:
hadoop-*-namenode-*.loghadoop-*-datanode-*.log常见错误:
Directory xxx does not existPermission deniedCannot assign requested addressIncompatible clusterIDshostname
cat /etc/hosts
确保:
127.0.0.1 localhost
192.168.1.10 master
netstat -tunlp | grep 9000
或:
ss -tunlp | grep 9000
systemctl stop firewalld
# 或
iptables -F
hdfs dfsadmin -report
测试读写:
hdfs dfs -mkdir /test
hdfs dfs -put file.txt /test
hdfs dfs -ls /test
| 问题 | 可能原因 |
|---|---|
| DataNode 起不来 | clusterID 不一致 |
| 无法连接 NameNode | fs.defaultFS 错 |
| 权限拒绝 | 目录权限不对 |
| SafeMode | 刚启动或未达标 |
| 端口冲突 | 9000 被占用 |
解除安全模式:
hdfs dfsadmin -safemode leave
你可以直接把以下信息发我,我帮你精准定位:
jps 输出我可以一步一步帮你改配置。