在 CentOS 上 HDFS 出现“丢数据”,通常不是 HDFS 本身真的把文件删了,而是配置、环境或运维操作导致数据不可用 / 被删 / 未复制成功。下面按最常见原因给你系统梳理。
hdfs namenode -format
或手动删了:
rm -rf /dfs/data/*
✅ 后果:
✅ 表现:
BlockMissingException
默认:
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
如果你只有 1 台机器 / 1 个 DataNode:
✅ 检查:
hdfs dfs -ls /path
hdfs fsck /path
df -h
✅ 后果:
✅ 日志:
/var/log/hadoop-hdfs/hadoop-hdfs-datanode-*.log
看到:
No space left on device
如果你 克隆了 CentOS 虚拟机 但没清:
/dfs/data/current/VERSION
✅ 表现:
hdfs fsck / -files -blocks -locations
看到:
Status: CORRUPT
✅ 原因:
hdfs dfs -rm /file
默认进回收站:
/user/用户名/.Trash
但如果:
fs.trash.interval = 0
直接删除,看起来像“丢”
date
✅ 后果:
✅ 修复:
yum install ntp
systemctl start ntpd
getenforce
systemctl status firewalld
✅ 导致:
# 1. 检查磁盘
df -h
# 2. 检查进程
jps
# 3. 检查 HDFS 状态
hdfs dfsadmin -report
# 4. 检查文件完整性
hdfs fsck /
# 5. 看 DataNode 日志
tail -n 200 /var/log/hadoop-hdfs/hadoop-hdfs-datanode-*.log
你可以告诉我:
我可以直接帮你定位到具体哪一环丢的。