Ubuntu环境下Hadoop故障排查方法
使用jps命令查看Ubuntu系统中运行的Hadoop Java进程(如NameNode、DataNode、ResourceManager、NodeManager等)。若进程缺失(如无NameNode或DataNode),说明对应组件未启动,需进一步排查启动失败原因。
Hadoop的日志文件位于$HADOOP_HOME/logs目录下(如hadoop-<username>-namenode-<hostname>.log、hadoop-<username>-datanode-<hostname>.log),包含详细的错误堆栈信息。使用tail -f命令实时查看日志,或通过grep过滤关键词(如“ERROR”“Exception”),快速定位故障根源(如配置错误、权限问题、端口冲突)。
使用hdfs dfsadmin -report命令检查HDFS集群状态,确认NameNode与DataNode的连接情况、数据节点数量、存储容量及数据块分布是否正常。若DataNode未连接,需检查网络或DataNode进程状态。
通过yarn node -list命令查看ResourceManager管理的NodeManager列表,确认NodeManager是否正常注册。若NodeManager缺失,需检查其日志(yarn-<username>-nodemanager-<hostname>.log)中的错误信息(如资源不足、配置错误)。
Hadoop集群依赖节点间的网络通信,使用ping <node_ip>命令测试各节点之间的连通性。若网络不通,需检查网络配置(如防火墙、主机名解析)或物理连接。
重点检查以下配置文件的正确性:
core-site.xml:确认fs.defaultFS(HDFS地址,如hdfs://localhost:9000)配置正确;hdfs-site.xml:确认dfs.namenode.name.dir(NameNode元数据目录)、dfs.datanode.data.dir(DataNode数据目录)路径存在且具备读写权限;yarn-site.xml:确认yarn.resourcemanager.hostname(ResourceManager地址)、yarn.nodemanager.aux-services(Shuffle服务)配置正确;mapred-site.xml:确认mapreduce.framework.name(框架名称,如yarn)配置正确。若配置修改或进程异常,需先停止所有Hadoop服务(stop-dfs.sh、stop-yarn.sh),再重新启动(start-dfs.sh、start-yarn.sh),观察服务是否恢复正常。
使用top、htop或vmstat命令监控系统资源(CPU、内存、磁盘I/O)使用情况。若资源不足(如内存耗尽、磁盘空间满),需调整Hadoop配置(如yarn.nodemanager.resource.memory-mb、dfs.datanode.du.reserved)或升级硬件。
df -h命令检查HDFS数据目录(如dfs.datanode.data.dir)所在磁盘的剩余空间,确保有足够空间存储数据;chown -R <hadoop_user>:<hadoop_group> $HADOOP_HOME命令将Hadoop目录所有权赋予Hadoop运行用户(如hadoop),避免权限不足导致进程无法启动。使用监控工具(如Ganglia、Prometheus+Grafana)实时监控集群性能,结合Hadoop作业日志(如MapReduce任务的syslog)分析瓶颈(如数据倾斜、Shuffle阶段延迟、资源分配不合理)。针对瓶颈调整配置(如增大mapreduce.task.io.sort.mb、启用数据压缩)或优化作业代码(如使用Combiner减少中间数据)。