在 CentOS 上 HDFS 显示“满了”,通常不是 CentOS 系统本身的问题,而是 HDFS 层面的存储或配置问题。下面按常见原因给你系统梳理一下:
hdfs dfs -df -h
如果 Used% 接近 100%,说明:
✅ 解决:
# 删除无用数据
hdfs dfs -rm -r /user/xxx/tmp
# 降低副本数
hdfs dfs -setrep -R 2 /
CentOS 上 HDFS 数据通常存在:
/dfs/data
/hadoop/hdfs/data
df -h
如果某块盘 100%,即使 HDFS 没满,也会报“HDFS 满”。
✅ 解决:
hdfs-site.xml 的 dfs.datanode.data.dirhdfs dfs -count / | sort -n
✅ 解决:
你可能给某个目录设置了配额:
hdfs dfs -count -q /
如果 QUOTA 或 SPACEQUOTA 满了,也会显示“HDFS 满”。
✅ 解决:
hdfs dfsadmin -clrQuota /path
hdfs dfsadmin -clrSpaceQuota /path
NameNode 在启动时可能进入安全模式:
hdfs dfsadmin -safemode get
✅ 解决(确认数据完整后):
hdfs dfsadmin -safemode leave
df -i
如果 inode 100%,HDFS 也无法写。
✅ 解决:
DataNode 无法写盘,报错类似:
DiskChecker: Disk error
✅ 检查:
getenforce
ls -ld /dfs/data
# 1. HDFS 使用情况
hdfs dfs -df -h
# 2. 系统磁盘
df -h
df -i
# 3. DataNode 日志
tail -n 100 /var/log/hadoop/hdfs/hadoop-hdfs-datanode-*.log
# 4. NameNode 状态
hdfs dfsadmin -report
你可以贴一下:
hdfs dfs -df -hdf -h我可以直接帮你判断 到底是“真满”还是“假满”。