日志是故障排查的核心依据,Hadoop的日志主要分布在$HADOOP_HOME/logs目录下(如NameNode日志为hadoop-*-namenode-*.log、DataNode日志为hadoop-*-datanode-*.log)。可使用以下命令快速定位错误:
tail -f $HADOOP_HOME/logs/*.loggrep -i "error\|fail" $HADOOP_HOME/logs/*.logless $HADOOP_HOME/logs/hadoop-*-namenode-*.log使用jps命令列出所有Java进程,确认Hadoop关键组件(NameNode、DataNode、ResourceManager、NodeManager等)是否正常运行。正常情况下应看到对应进程的ID及名称,若缺失则说明进程崩溃或未启动。例如:
jps
# 正常输出应包含:
# NameNode
# DataNode
# ResourceManager
# NodeManager
若进程未启动,可通过$HADOOP_HOME/sbin/start-dfs.sh(启动HDFS)或$HADOOP_HOME/sbin/start-yarn.sh(启动YARN)启动对应服务。
Hadoop集群依赖节点间的网络通信,需检查以下内容:
ping <目标IP>测试集群内所有节点的网络连通性;netstat -tulnp | grep <端口号>(如50070、8088、50010)检查Hadoop服务端口是否监听;iptables -I INPUT -p tcp --dport 50070 -j ACCEPT),或临时关闭防火墙测试(systemctl stop firewalld)。Hadoop的配置文件(core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml)需在所有节点保持一致,常见错误包括:
fs.defaultFS的URI格式错误);dfs.datanode.data.dir指定的目录未创建);yarn.nodemanager.resource.memory-mb超过节点实际内存)。cat $HADOOP_HOME/etc/hadoop/core-site.xml查看配置,确保修改后同步到所有节点。使用Hadoop命令行工具检查HDFS的状态:
hdfs dfsadmin -report,确认DataNode数量、磁盘使用率、命名空间信息等是否符合预期;hdfs fsck / -files -blocks -locations,修复损坏的文件或块(hdfs fsck / -delete删除坏块);dfs.datanode.data.dir和dfs.namenode.name.dir指定的目录权限为755,且属主为Hadoop用户(如chown -R hadoop:hadoop /data/hadoop)。YARN是Hadoop的资源管理系统,需确认其运行状态:
yarn node -list,确认所有NodeManager是否处于“RUNNING”状态;yarn application -list,检查应用的状态(如“ACCEPTED”“RUNNING”“FINISHED”),若应用卡住可通过yarn logs -applicationId <appId>查看应用日志。使用系统工具监控集群资源使用情况,定位性能瓶颈:
top(按P键按CPU排序)、vmstat 1 5(查看CPU空闲率);free -m(查看剩余内存)、vmstat 1 5(查看内存交换情况);iostat -x 1 5(查看磁盘读写延迟)、df -h(查看磁盘空间使用率);iftop(查看网络带宽占用)。hadoop namenode -format,注意:此操作会清除元数据,需备份数据);dfs.datanode.data.dir目录是否存在且权限正确,删除/tmp下的临时文件后重启集群;yarn-site.xml中的yarn.resourcemanager.hostname配置是否正确,确保端口未被占用;yarn logs -applicationId <appId>),常见原因包括资源不足(调整yarn.nodemanager.resource.memory-mb)、数据倾斜(优化分区策略)。对于大规模集群,建议使用监控工具实现实时监控与报警:
故障排查时需遵循“从简单到复杂”的原则,先检查基础环境(网络、进程、配置),再分析日志与系统资源,逐步缩小问题范围。若问题无法解决,可参考Hadoop官方文档或在社区(如Stack Overflow)寻求帮助。