在 Linux 上排查 HDFS(Hadoop 分布式文件系统)配置问题,一般遵循**“由下而上、分层排查”**的思路:先看机器/网络,再看 Hadoop 配置,再看服务状态,最后看日志。
下面是一套比较实用的 HDFS 配置排错指南。
HDFS 依赖 JDK:
java -version
echo $JAVA_HOME
JAVA_HOME 必须在:
~/.bashrc/etc/profilehadoop-env.sh✅ 建议:
export JAVA_HOME=/usr/java/jdk1.8.0_xxx
HDFS 对 hostname 非常敏感。
hostname
hostname -f
/etc/hosts 示例(不要用 127.0.0.1 映射真实主机名):
192.168.1.10 master
192.168.1.11 slave1
192.168.1.12 slave2
❌ 错误示例:
127.0.0.1 master
ssh slave1 date
如果不通:
ssh-keygen -t rsa
ssh-copy-id slave1
核心配置文件位置:
$HADOOP_HOME/etc/hadoop/
<property>
<name>fs.defaultFS</name>
<name>hdfs://master:9000</name>
</property>
✅ 排错点:
master 必须能解析dfs.namenode.name.dir
dfs.datanode.data.dir
dfs.replication
常见问题:
ls -ld /data/hadoop/dfs
df -h
Hadoop 3:
$HADOOP_HOME/etc/hadoop/workers
内容示例:
slave1
slave2
hdfs namenode -format
⚠️ 不要重复格式化(会丢 block)
start-dfs.sh
检查进程:
jps
应看到:
http://master:9870
日志目录:
$HADOOP_HOME/logs/
重点文件:
hadoop-*-namenode-*.log
hadoop-*-datanode-*.log
常见错误关键词:
Connection refusedUnknownHostExceptionPermission deniedDirectory not foundIncompatible cluster IDs原因:
解决:
cat /data/hadoop/dfs/name/current/VERSION
cat /data/hadoop/dfs/data/current/VERSION
不一致 → 删除 data 目录重新启动
hdfs dfsadmin -safemode get
hdfs dfsadmin -safemode leave
netstat -tunlp | grep 9000
如果你愿意,可以把:
贴出来,我可以直接帮你定位具体配置错误。