CentOS 上 HDFS 报错的原因非常多,不同错误对应不同解决方案。下面我按常见报错类型 + 排查思路 + 解决办法给你一个系统性的指南。如果你能贴出具体报错日志,我可以更精准地帮你定位。
HDFS 的问题 90% 都在日志里。
/var/log/hadoop-hdfs/hadoop-hdfs-namenode-*.log
/var/log/hadoop-hdfs/hadoop-hdfs-datanode-*.log
tail -n 200 hadoop-hdfs-namenode-*.log | grep -i error
NameNode is not formatted
或
Cannot lock storage /data/hadoop/dfs/name
✅ 首次启动前格式化(只做一次)
hdfs namenode -format
✅ 权限问题
chown -R hdfs:hdfs /data/hadoop/dfs
chmod -R 700 /data/hdfs/dfs
✅ clusterID 不一致
# 查看 NameNode clusterID
cat /data/hadoop/dfs/name/current/VERSION
# 查看 DataNode clusterID
cat /data/hadoop/dfs/data/current/VERSION
不一致就 统一 clusterID 或 清空 DataNode 数据目录重新启动
DataNode not registered with NameNode
✅ 关闭防火墙(CentOS 7)
systemctl stop firewalld
systemctl disable firewalld
✅ 检查时间同步
date
建议安装 NTP:
yum install -y ntp
systemctl enable ntpd
systemctl start ntpd
Address already in use
netstat -tunlp | grep 9000
netstat -tunlp | grep 50070
杀掉占用端口的进程:
kill -9 PID
Permission denied: user=root, access=WRITE
✅ 切换用户
su - hdfs
✅ 修改 HDFS 权限
hdfs dfs -chmod -R 777 /
hdfs dfs -chown -R hdfs:hdfs /
JAVA_HOME is not set
编辑:
vim /etc/profile
添加:
export JAVA_HOME=/usr/java/jdk1.8.0_xxx
export PATH=$JAVA_HOME/bin:$PATH
生效:
source /etc/profile
No space left on device
df -h
清理或扩容:
rm -rf /data/hadoop/dfs/data/current/*
✅ 防火墙是否关闭
✅ SELinux 是否关闭
✅ JAVA_HOME 是否正确
✅ NameNode 是否格式化
✅ clusterID 是否一致
✅ 时间是否同步
✅ 目录权限是否正确
你可以直接贴出以下任意一项:
hdfs dfsadmin -report 输出jps 输出core-site.xml / hdfs-site.xml我可以一步一步帮你把 HDFS 拉起来 ✅