Hadoop的日志是故障排查的核心依据,所有关键错误信息均会记录在日志文件中。关键日志路径为$HADOOP_HOME/logs,其中:
hadoop-*-namenode-*.log(记录NameNode启动、元数据操作等问题);hadoop-*-datanode-*.log(记录DataNode连接、数据块同步问题);yarn-*-resourcemanager-*.log(记录资源调度问题)。grep -i "error"过滤错误信息,关注堆栈跟踪(Stack Trace)定位具体代码行;检查日志时间戳,关联问题发生的时间点。Hadoop依赖多个服务协同工作,需确保关键服务正常运行:
jps命令查看Java进程,确认NameNode、DataNode、ResourceManager、NodeManager等核心进程是否存在;systemctl status hadoop-namenode(CentOS 7+)或service hadoop-namenode status(CentOS 6)检查服务状态;start-dfs.sh(启动HDFS)和start-yarn.sh(启动YARN)启动服务,并再次检查状态。配置文件错误是Hadoop故障的常见原因,需逐一检查:
core-site.xml(HDFS默认文件系统地址fs.defaultFS、临时目录hadoop.tmp.dir)、hdfs-site.xml(副本数dfs.replication、NameNode数据目录dfs.name.dir、DataNode数据目录dfs.data.dir)、yarn-site.xml(ResourceManager地址yarn.resourcemanager.hostname、资源分配参数);/etc/profile或~/.bashrc中JAVA_HOME(指向JDK安装路径)、HADOOP_HOME(指向Hadoop安装路径)、PATH(包含$HADOOP_HOME/bin和$HADOOP_HOME/sbin)是否配置正确,并执行source命令使配置生效。Hadoop集群节点间需通过网络通信,常见问题包括网络不通、端口冲突:
ping <节点IP>检查节点间网络连通性;netstat -tuln或ss -tuln查看Hadoop所需端口(如NameNode的8020/9000、DataNode的50010、ResourceManager的8032)是否被占用;/etc/hosts文件,确保主机名与IP地址映射正确(如192.168.1.100 master),避免UnknownHostException。Hadoop进程需以专用用户(通常为hadoop)运行,权限问题会导致无法访问文件或启动失败:
ls -l /path/to/hadoop/dir检查Hadoop安装目录、数据目录(如dfs.data.dir、dfs.name.dir)的权限,确保hadoop用户有读写权限(可使用chown -R hadoop:hadoop /path/to/dir修改);hadoop用户属于同一用户组,避免权限冲突。资源不足(磁盘空间、内存)会导致Hadoop任务失败或服务无法启动:
df -h检查磁盘空间使用情况,确保/(根目录)和HDFS数据目录(如/home/hadoop/data)有足够空间(建议保留20%以上);free -m检查内存使用情况,确保系统有足够空闲内存(可通过yarn.nodemanager.resource.memory-mb调整YARN内存分配);top或htop查看进程资源占用,终止占用过高的异常进程(如kill -9 <PID>)。HDFS数据块损坏或丢失会影响数据可靠性,需使用以下命令修复:
hdfs fsck / -files -blocks -locations检查HDFS文件系统健康状态,查看损坏或丢失的数据块;dfs.replication参数设置合理,通常为3);hdfs dfs -rm -r /corrupted/path删除损坏文件,重新上传数据。Hadoop启动时会进入安全模式(Safe Mode),此时不允许修改或删除数据,需手动退出:
hdfs dfsadmin -safemode get检查安全模式状态(若返回“ON”,则表示处于安全模式);hdfs dfsadmin -safemode leave退出安全模式(需等待NameNode完成元数据检查)。