温馨提示×

centos如何排查hdfs错误

小樊
42
2026-10-06 09:06:39
栏目: 智能运维

在 CentOS 上排查 HDFS(Hadoop Distributed File System)错误,一般可以从日志、进程状态、配置、命令工具、系统资源几个层面入手。下面给你一套比较系统的排查思路。


一、确认 HDFS 服务状态

1. 查看 Hadoop 进程

jps

正常应看到(根据角色不同):

  • NameNode
  • DataNode
  • SecondaryNameNode
  • ResourceManager / NodeManager(YARN)

如果缺失:

systemctl status hadoop-namenode
systemctl status hadoop-datanode

或(取决于安装方式):

hadoop-daemon.sh status namenode
hadoop-daemon.sh status datanode

二、查看 HDFS 日志(最重要)

HDFS 错误90% 都在日志里。

日志位置(常见)

$HADOOP_HOME/logs/

或

/var/log/hadoop/

关键日志文件

  • NameNode 错误:
hadoop-hdfs-namenode-*.log
  • DataNode 错误:
hadoop-hdfs-datanode-*.log
  • 安全模式 / 块错误:
hadoop-hdfs-namenode-*.log | grep -i "safe mode"

实时查看

tail -f $HADOOP_HOME/logs/hadoop-hdfs-datanode-*.log

三、使用 HDFS 自带命令排查

1. 检查 HDFS 状态

hdfs dfsadmin -report

重点看:

  • Live datanodes
  • Dead datanodes
  • 缺失块(Missing blocks)

2. 查看是否处于安全模式

hdfs dfsadmin -safemode get

如果是 ON:

hdfs dfsadmin -safemode leave

四、检查块和文件系统健康

1. 检查损坏块

hdfs fsck / -files -blocks -locations

常见问题:

  • Under-replicated blocks
  • Missing blocks
  • Corrupt blocks

2. 删除损坏块(谨慎)

hdfs fsck / -delete

五、检查配置问题(CentOS 常见坑)

1. 主机名与 IP

hostname
cat /etc/hosts

确保:

  • NameNode 能解析 DataNode
  • 不要使用 127.0.0.1 作为集群地址

2. 防火墙(非常常见)

systemctl stop firewalld
systemctl disable firewalld

或开放端口:

firewall-cmd --add-port=9000/tcp --permanent
firewall-cmd --reload

3. SELinux

getenforce

建议测试时:

setenforce 0

六、磁盘与权限问题

1. DataNode 无法启动

常见原因:

  • dfs.datanode.data.dir 权限不对
  • 磁盘满

检查:

df -h
ls -ld /data/hadoop/hdfs/datanode

修复权限:

chown -R hdfs:hadoop /data/hadoop
chmod 700 /data/hadoop/hdfs/datanode

七、常见错误速查表

错误现象 可能原因
NameNode 起不来 edits/logs 损坏
DataNode 不注册 clusterID 不一致
一直安全模式 块缺失过多
写文件失败 磁盘满 / 权限问题
网络超时 防火墙 / hosts 错误

clusterID 不一致修复

cat /data/hadoop/hdfs/namenode/current/VERSION
cat /data/hadoop/hdfs/datanode/current/VERSION

不一致时,删除 DataNode 的 current 目录并重启(会重新注册)。


八、建议的排查顺序(总结)

  1. jps 看进程
  2. tail -f 看日志
  3. hdfs dfsadmin -report
  4. hdfs fsck /
  5. 查防火墙 / hosts / 磁盘
  6. 看 clusterID / 权限

如果你愿意,可以把具体报错日志或现象(比如 NameNode 起不来、DataNode 掉线、某个命令报错)贴出来,我可以帮你精准定位。

0 踩