“Linux 上 HDFS 报错异常”是一个比较宽泛的问题,因为 HDFS 在 Linux 下出错的原因非常多。下面我按常见报错类型 → 可能原因 → 排查思路给你系统梳理一下,你可以对照自己的错误信息来定位。
典型报错:
java.net.BindException: Address already in useNameNode is not formattedCannot assign requested address可能原因:
hdfs namenode -format排查:
netstat -tunlp | grep 9000
jps
cat $HADOOP_HOME/logs/hadoop-*-namenode-*.log
报错示例:
Permission denied: user=root, access=WRITEorg.apache.hadoop.security.AccessControlException原因:
解决:
hdfs dfs -chmod -R 777 /user
hdfs dfs -chown -R hadoop:hadoop /user
或在代码中指定用户:
export HADOOP_USER_NAME=hadoop
报错:
java.lang.UnsupportedClassVersionErrorJAVA_HOME not set原因:
检查:
java -version
echo $JAVA_HOME
报错:
UnknownHostExceptionDataNode cannot connect to NameNode解决:
# /etc/hosts
192.168.1.10 master
192.168.1.11 slave1
并确保:
hostname
与 core-site.xml 中一致。
报错:
No space left on deviceDataNode marked as dead检查:
df -h
du -sh /data/hadoop/*
报错:
Cannot create directory. Name node is in safe mode解决:
hdfs dfsadmin -safemode leave
jps
# 应有 NameNode / DataNode / ResourceManager
ping master
cat /etc/hosts
cat $HADOOP_HOME/etc/hadoop/core-site.xml
cat $HADOOP_HOME/etc/hadoop/hdfs-site.xml
df -h
free -h
请把以下信息发我:
hadoop version我可以直接告诉你是哪一行配置或命令导致的问题。