以下是Ubuntu环境下HDFS故障的排查步骤:
环境变量配置
确保HADOOP_HOME和PATH已正确设置,可通过echo $HADOOP_HOME和echo $PATH验证,若缺失需在~/.bashrc中添加:
export HADOOP_HOME=/path/to/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
执行source ~/.bashrc生效。
服务状态检查
使用jps命令查看NameNode、DataNode等进程是否正常运行,若缺失需通过start-dfs.sh启动服务。
查看HDFS日志
/var/log/hadoop-hdfs/hadoop-hdfs-namenode-*.log/var/log/hadoop-hdfs/hadoop-hdfs-datanode-*.loggrep或tail命令搜索ERROR或Exception关键字,定位具体错误(如权限不足、端口冲突等)。系统日志检查
查看/var/log/syslog或journalctl -u hadoop-hdfs,排查系统级错误(如防火墙拦截、磁盘挂载失败等)。
集群状态检查
hdfs dfsadmin -report:查看DataNode数量、存储容量、副本因子等集群状态。hdfs fsck /:检查文件系统一致性,报告损坏块或缺失文件。权限与配置验证
hdfs dfs -ls /path,确保用户对目标路径有读写权限,必要时用hdfs dfs -chown或-chmod调整。core-site.xml(如fs.defaultFS)、hdfs-site.xml(如dfs.replication)参数是否正确,可通过cat命令查看。网络连通性
ping测试节点间网络连通性,telnet<IP> <端口>(如telnet namenode-ip 9000)验证端口开放情况。ufw status或iptables -L,确保HDFS端口(如9000、50070)未被拦截,必要时临时关闭防火墙测试。资源使用监控
通过top、htop或df -h查看CPU、内存、磁盘使用情况,若资源不足可能导致服务异常,需优化或扩容。
安全模式处理
若NameNode处于安全模式,可通过hdfs dfsadmin -safemode leave退出,但需先确保集群无故障。
数据修复与恢复
hdfs fsck / -files -blocks -locations -delete(谨慎使用-delete,可能丢失数据)。hdfs dfs -cp命令还原。注意:操作前建议备份重要数据,生产环境需谨慎执行修复命令,避免数据丢失。