在 CentOS 上运行 HDFS 出现“丢数据”的情况,通常不是 HDFS 本身凭空丢数据,而是配置、运维或环境异常导致。下面按最常见原因系统说明,并给出排查思路。
HDFS 默认 dfs.replication=3,但常见问题:
✅ 结果:
节点一挂,数据立刻“丢失”(实际是不可用)
✅ 检查:
hdfs dfs -ls /path
hdfs dfs -stat %r /path/file
hdfs dfsadmin -report
hdfs dfs -rm -rhdfs dfs -rm -skipTrash✅ HDFS 默认有 Trash(除非关了):
hdfs dfs -ls /user/*/.Trash
✅ 关闭 Trash 的配置:
<property>
<name>fs.trash.interval</name>
<value>0</value>
</property>
CentOS 常见问题:
umount 或磁盘故障✅ 表现:
Missing blocks✅ 排查:
df -h
df -i
dmesg | grep error
cat /var/log/messages | grep sdb
HDFS 对时间非常敏感:
✅ 检查:
date
ntpq -p
✅ 必须:
systemctl status chronyd
原因:
fsimage / edits✅ 表现:
✅ 检查:
cat $HADOOP_HOME/logs/hadoop-*namenode*.log
hdfs namenode -format
⚠️ 这是毁灭性操作
✅ 一旦发生:
✅ 检查:
getenforce
systemctl status firewalld
hdfs fsck / -files -blocks -locations
hdfs dfsadmin -report | grep Missing
✅ 必须做:
fsck✅ 不建议:
你可以贴:
hdfs dfsadmin -report我可以直接帮你定位是哪一类“丢数据”。