温馨提示×

centos怎样修复hdfs

小樊
47
2026-09-30 13:39:39
栏目: 智能运维

在 CentOS 上“修复 HDFS”需先明确故障类型,不同问题修复方式完全不同。下面按常见故障场景给你一套实用排查与修复手册(以 Hadoop 2.x / 3.x 为例)。


一、先确认基础环境(必做)

# 1. 检查 Java
java -version

# 2. 检查 Hadoop 环境变量
echo $HADOOP_HOME
echo $HDFS_NAMENODE_USER

# 3. 检查进程
jps

正常应有:

  • NameNode
  • DataNode
  • SecondaryNameNode(或 StandbyNameNode)

二、NameNode 无法启动(最常见)

1️⃣ 未格式化或元数据损坏

# 查看日志
tail -200 $HADOOP_HOME/logs/hadoop-*-namenode-*.log

若看到:

NameNode is not formatted

✅ 修复(⚠会清空数据,仅测试环境):

hdfs namenode -format

✅ 生产环境(有数据):

  • 从 SecondaryNameNode / Standby 恢复
  • 或恢复 dfs.namenode.name.dir 备份

2️⃣ NameNode 元数据目录权限错误

ls -ld /data/hadoop/dfs/name

修复:

chown -R hdfs:hadoop /data/hadoop/dfs
chmod 700 /data/hadoop/dfs/name

三、DataNode 不启动 / 自动下线

1️⃣ clusterID 不一致(高频)

# NameNode
cat $HADOOP_HOME/dfs/name/current/VERSION

# DataNode
cat $HADOOP_HOME/dfs/data/current/VERSION

若 clusterID 不同:

✅ 修复(保留数据):

# 修改 DataNode 的 VERSION 中 clusterID 与 NameNode 一致
vi $HADOOP_HOME/dfs/data/current/VERSION

重启:

systemctl restart hadoop-datanode

2️⃣ 磁盘空间不足

df -h

清理或调整:

<property>
  <name>dfs.datanode.du.reserved</name>
  <value>10737418240</value> <!-- 10G -->
</property>

四、HDFS 文件损坏 / 丢失块

1️⃣ 检查坏块

hdfs fsck / -list-corruptfileblocks

2️⃣ 删除损坏文件(无奈之举)

hdfs fsck / -delete

3️⃣ 手动复制缺失块(高级)

hdfs debug recoverLease -path /path/file -retries 3

五、安全模式(SafeMode)卡住

hdfs dfsadmin -safemode get

强制退出(确认无数据丢失):

hdfs dfsadmin -safemode leave

六、CentOS 系统级修复建议

1️⃣ 防火墙

systemctl stop firewalld
systemctl disable firewalld

2️⃣ SELinux

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

3️⃣ 时间同步

yum install -y ntp
systemctl enable ntpd
ntpdate pool.ntp.org

七、推荐标准修复流程(通用)

  1. 看日志(logs/*.log)
  2. jps 确认角色
  3. fsck 查块
  4. 修复权限 / clusterID / 磁盘
  5. 重启服务

八、如果你愿意,我可以更精准帮你

你可以告诉我:

  • Hadoop 版本
  • 报错日志(关键几行)
  • 是 单机 / 伪分布 / 集群
  • NameNode 还是 DataNode 挂了

我可以直接给你对应修复命令。

0 踩