日志是故障排查的核心依据,Hadoop的日志默认存储在$HADOOP_HOME/logs目录下(如NameNode日志为hadoop-*-namenode-*.log、DataNode日志为hadoop-*-datanode-*.log)。使用以下命令快速定位错误信息:
tail -f $HADOOP_HOME/logs/*.loggrep -i "error\|fail" $HADOOP_HOME/logs/*.log使用jps命令(Java进程查看工具)确认Hadoop关键组件是否正常运行。正常情况下,集群节点应显示以下进程:
hadoop-*-datanode-*.log)。Hadoop集群依赖节点间的网络通信,需检查以下内容:
ping <目标节点IP>测试节点间是否可达;若不通,检查物理网络(网线、交换机)或节点IP配置。netstat -tulnp | grep <端口号>(如NameNode默认端口9000、ResourceManager默认端口8088)检查端口是否监听;若端口未开放,需调整防火墙设置(如iptables -I INPUT -p tcp --dport 9000 -j ACCEPT)或关闭防火墙(systemctl stop firewalld,生产环境需谨慎)。ssh-copy-id <从节点IP>配置),否则Hadoop命令(如start-dfs.sh)无法远程执行。Hadoop的配置文件(位于$HADOOP_HOME/etc/hadoop/)需在所有节点保持一致,常见配置文件及检查要点:
fs.defaultFS(HDFS地址,如hdfs://namenode:9000)是否正确,且所有节点的fs.defaultFS值一致。dfs.replication(副本数,集群节点≥3时建议设为3)、dfs.namenode.name.dir(NameNode元数据目录)、dfs.datanode.data.dir(DataNode数据目录)是否存在且权限正确(建议设置为755,属主为Hadoop用户)。yarn.nodemanager.aux-services(设为mapreduce_shuffle,支持MapReduce shuffle)和yarn.resourcemanager.hostname(ResourceManager主机名)配置正确。mapreduce.framework.name(设为yarn,使用YARN作为资源管理框架)配置正确。资源不足是Hadoop任务失败的常见原因,使用以下命令监控资源:
top(按M排序内存使用)、htop(更直观的资源监控)、free -m(查看内存剩余)。df -h(查看磁盘使用率,HDFS数据目录所在分区剩余空间需>20%);du -sh /path/to/hadoop/data(查看HDFS数据目录大小)。iostat -x 1 10(查看磁盘读写负载,若%util接近100%说明磁盘繁忙)。yarn.nodemanager.resource.memory-mb设为节点可用内存的80%,yarn.nodemanager.resource.cpu-vcores设为节点CPU核心数的80%)或扩容集群。Hadoop提供了丰富的命令行工具,用于快速诊断集群状态:
hdfs dfsadmin -report(查看HDFS集群状态,包括DataNode数量、剩余存储空间、块副本数);hdfs fsck / -delete(检查HDFS文件系统健康,-delete参数可删除损坏的块)。yarn node -list(查看NodeManager列表及状态);yarn application -list(查看正在运行的应用);yarn logs -applicationId <应用ID>(查看应用日志,定位任务失败原因)。hadoop distcp(测试数据传输速度,若速度慢可能需调整机架感知配置)。dfs.namenode.name.dir指定的目录),重新格式化NameNode(hdfs namenode -format),然后重启服务(start-dfs.sh)。dfs.datanode.data.dir目录是否存在且权限正确;删除/tmp目录下的临时文件(如/tmp/hadoop-*);确保NameNode与DataNode的clusterID一致(可通过hdfs namenode -bootstrapStandby同步)。yarn-site.xml中的yarn.resourcemanager.hostname配置是否正确;查看ResourceManager日志(hadoop-*-resourcemanager-*.log)中的错误信息。yarn.scheduler.maximum-allocation-mb或yarn.scheduler.maximum-allocation-vcores)。