日志是故障排查的核心依据,Hadoop的日志默认存放在$HADOOP_HOME/logs目录下(如NameNode日志为hadoop-*-namenode-*.log)。可使用以下命令快速定位错误:
tail -f $HADOOP_HOME/logs/*.loggrep "ERROR" $HADOOP_HOME/logs/*.logtail -f $HADOOP_HOME/logs/hadoop-*-datanode-*.log使用jps命令列出所有Java进程,确认Hadoop关键组件(NameNode、DataNode、ResourceManager、NodeManager)是否正常运行:
NameNode、DataNode、ResourceManager、NodeManager(根据集群角色可能略有差异)。hadoop-*-datanode-*.log)Hadoop集群依赖节点间的网络通信,需确保:
ping <目标IP>(如ping 192.168.1.101)。netstat -tulnp | grep <端口号>(如NameNode默认端口50070);iptables -I INPUT -p tcp --dport <端口号> -j ACCEPT(或关闭防火墙:service iptables stop,生产环境建议配置规则而非直接关闭)Hadoop的核心配置文件需在所有节点保持一致,常见文件及检查要点:
core-site.xml:确认fs.defaultFS(NameNode地址,如hdfs://namenode:9000)配置正确;hdfs-site.xml:检查dfs.namenode.name.dir(NameNode元数据存储路径)、dfs.datanode.data.dir(DataNode数据存储路径)是否存在且权限正确(建议设置为755,属主为Hadoop用户);yarn-site.xml:确认yarn.resourcemanager.hostname(ResourceManager地址)、yarn.nodemanager.aux-services(如mapreduce_shuffle)配置正确;mapred-site.xml:检查mapreduce.framework.name(设为yarn)使用工具监控系统资源使用情况,识别性能瓶颈:
top(查看CPU占用率高的进程)、vmstat 1 5(查看CPU、内存、IO的实时状态);free -m(查看内存使用量,确保剩余内存足够)、vmstat 1 5(查看swap使用情况,避免频繁交换);df -h(查看磁盘空间,确保/、/tmp等分区有足够空间)、iostat -x 1 5(查看磁盘IO负载,如%util接近100%需优化)clusterID不一致(NameNode与DataNode的VERSION文件中clusterID需相同)、端口被占用。hadoop namenode -format,注意:会清除元数据,需提前备份);检查VERSION文件中的clusterID并修改一致。dfs.datanode.data.dir路径不存在或权限不足、与NameNode的clusterID不一致、残留临时文件。mkdir -p /path/to/data && chown -R hadoop:hadoop /path/to/data);删除/tmp下的Hadoop临时文件(如/tmp/hadoop-*);同步clusterID。yarn-site.xml配置错误(如yarn.resourcemanager.hostname未设置)、端口被占用。lsof -i:<端口号>查找并杀死占用进程。yarn.nodemanager.resource.memory-mb设为节点内存的80%)、优化数据存储位置(hdfs dfs -put时指定-D dfs.datanode.use.datanode.hostname=true)、修改目录权限(hdfs dfs -chmod -R 777 /tmp,生产环境建议细化权限)若上述步骤无法解决问题,可尝试重启服务(注意:重启前确保数据已保存):
$HADOOP_HOME/sbin/stop-all.sh(停止所有Hadoop服务);$HADOOP_HOME/sbin/start-all.sh(启动所有Hadoop服务);jps(查看进程是否启动)、hdfs dfsadmin -report(查看HDFS节点状态)、yarn node -list(查看YARN节点状态)若问题由Hadoop版本bug引起(如已知的功能缺陷或性能问题),可考虑: