在 CentOS 下恢复 HDFS,需要先明确你所说的“恢复”是哪一种场景,因为不同情况处理方式完全不同:
适用于:NameNode 无法启动,但 fsimage + edits 还在。
恢复步骤:
# 停止 HDFS
stop-dfs.sh
# 进入 NameNode 元数据目录
cd /dfs/nn # 视你配置的 dfs.namenode.name.dir 而定
# 拷贝最近的 fsimage 和 edits
ls -l current/
# 使用 Secondary NameNode 的 checkpoint 恢复
hdfs namenode -importCheckpoint
执行后:
hadoop-daemon.sh start namenode
如果有 Standby NameNode(HA):
# 在 Standby 节点执行
hdfs namenode -bootstrapStandby
HDFS 默认开启回收站:
hdfs dfs -ls /user/root/.Trash/Current
hdfs dfs -mv /user/root/.Trash/Current/xxx /目标路径
如果回收站已清空,只能从 快照 / 备份 恢复。
hadoop-daemon.sh start datanode
hdfs fsck / -list-corruptfileblocks
hdfs fsck / -delete # 删除损坏块(谨慎)
如果是 全量恢复:
# 查看状态
hdfs haadmin -getServiceState nn1
# 手动切换
hdfs haadmin -transitionToActive nn1
/etc/hadoop/hdfs-site.xml
/etc/hadoop/core-site.xml
重点检查:
dfs.namenode.name.dirdfs.datanode.data.dirdfs.replicationhdfs dfsadmin -fetchImage如果你能说明:
我可以给你精确到命令级别的恢复方案。