1. 查看Hadoop日志文件
Hadoop的日志文件是故障排查的核心线索来源,通常位于$HADOOP_HOME/logs目录下(如hadoop-*-namenode-*.log、yarn-*-resourcemanager-*.log)。使用tail -f命令实时监控日志输出,或通过grep过滤关键错误信息(如grep "ERROR" *.log),可快速定位组件异常(如NameNode启动失败、DataNode无法连接等)。
2. 检查Hadoop进程状态
通过jps命令列出所有Java进程,确认Hadoop核心组件(NameNode、DataNode、ResourceManager、NodeManager等)是否正常运行。若进程缺失,需进一步查看对应组件的日志(如NameNode进程消失则检查hadoop-*-namenode-*.log),判断是进程崩溃还是未启动。
3. 验证网络连接
Hadoop集群依赖节点间的网络通信,使用ping命令测试各节点之间的连通性(如ping <datanode-ip>)。若网络不通,需检查防火墙设置(如Debian的ufw或iptables)是否允许Hadoop相关端口(如NameNode的50070、ResourceManager的8088)通信,或网络配置(如/etc/hosts中的主机名解析)是否正确。
4. 检查配置文件正确性
Hadoop的配置文件(core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml)是集群运行的基础,需确保以下内容无误:
core-site.xml中的fs.defaultFS(HDFS默认文件系统地址,如hdfs://namenode:9000);hdfs-site.xml中的dfs.replication(数据块复制因子,需与集群节点数匹配);yarn-site.xml中的yarn.resourcemanager.hostname(ResourceManager主机名)。5. 利用Hadoop Web界面监控
访问Hadoop的Web管理界面可直观查看集群状态:
http://<namenode-ip>:50070(Hadoop 2.x)或http://<namenode-ip>:9870(Hadoop 3.x),查看HDFS存储使用率、DataNode列表;http://<resourcemanager-ip>:8088,查看YARN任务队列、节点资源分配情况。6. 分析系统资源瓶颈
使用系统监控工具排查资源占用异常:
top/htop:查看CPU、内存使用率,识别占用过高的进程(如MapReduce任务内存溢出);iostat -x 1:查看磁盘I/O使用率,判断是否存在磁盘瓶颈(如DataNode磁盘满导致写入失败);vmstat 1:查看虚拟内存、进程调度情况,识别系统级资源瓶颈。7. 检查系统日志补充信息
Debian的系统日志(/var/log/syslog)和内核日志(dmesg、journalctl -xe)可能记录与Hadoop相关的系统级错误(如磁盘故障、权限问题、端口冲突)。例如,dmesg可查看内核是否检测到磁盘错误,journalctl -u hadoop-namenode可查看NameNode服务的系统日志。
8. 处理常见特定错误
hadoop-env.sh(NameNode/ResourceManager)或yarn-env.sh(NodeManager)中修改HADOOP_NAMENODE_OPTS、YARN_RESOURCEMANAGER_OPTS等参数,增加-Xmx(最大堆内存)和-Xms(初始堆内存)值(如-Xmx4g -Xms2g);hdfs dfsadmin -safemode leave命令强制退出;$PATH环境变量是否包含Python路径(如export PATH=/usr/bin/python3:$PATH),或在hadoop-env.sh中设置HADOOP_PYTHON变量。9. 重启相关服务
若上述步骤无法解决问题,可尝试重启Hadoop服务:
$HADOOP_HOME/sbin/stop-all.sh;$HADOOP_HOME/sbin/start-all.sh。$HADOOP_HOME/sbin/hadoop-daemon.sh stop datanode && $HADOOP_HOME/sbin/hadoop-daemon.sh start datanode)。