Hadoop在Ubuntu上的故障排查指南
使用jps
命令查看Hadoop相关Java进程(如NameNode、DataNode、ResourceManager、NodeManager)是否正常运行。若进程缺失,说明对应组件未启动,需进一步排查启动失败原因(如配置错误、端口冲突)。
Hadoop日志是故障定位的核心依据,主要位于$HADOOP_HOME/logs
目录(如NameNode日志为hadoop-*-namenode-*.log
,DataNode日志为hadoop-*-datanode-*.log
)。使用以下命令快速定位错误:
tail -f $HADOOP_HOME/logs/*.log
:实时监控所有日志文件的更新;grep "ERROR" $HADOOP_HOME/logs/*.log
:筛选出所有错误信息;awk
提取关键字段(如时间戳、错误类型):awk '/ERROR/ {print $1, $2, $3, $4, $5}' /path/to/logfile
。使用hdfs dfsadmin -report
命令查看HDFS集群的健康状况,包括:
dfs.replication
参数设置的副本数)。通过yarn node -list
命令查看ResourceManager管理的NodeManager列表,确认NodeManager是否正常注册(状态为“RUNNING”)。若NodeManager未启动,需检查yarn-site.xml
配置(如yarn.resourcemanager.hostname
)及日志中的错误信息。
Hadoop集群节点间需通过网络通信,使用ping
命令测试节点间的连通性(如ping <datanode-ip>
),确保无网络中断;使用telnet <ip> <port>
(如telnet namenode 9000
)测试关键端口(如HDFS的9000端口、YARN的8088端口)是否开放,避免防火墙或安全组拦截。
Hadoop的核心配置文件位于$HADOOP_HOME/etc/hadoop
目录,需重点检查:
core-site.xml
:fs.defaultFS
(HDFS的URI,如hdfs://namenode:9000
)是否正确;hdfs-site.xml
:dfs.namenode.name.dir
(NameNode元数据存储路径)、dfs.datanode.data.dir
(DataNode数据存储路径)是否存在且权限正确;yarn-site.xml
:yarn.resourcemanager.scheduler.address
(ResourceManager调度器地址)、yarn.nodemanager.aux-services
(NodeManager辅助服务,如mapreduce_shuffle
)是否配置正确。Hadoop对数据存储目录(如dfs.name.dir
、dfs.data.dir
)及临时目录(如/tmp
)的权限要求严格,需确保运行Hadoop的用户(如hadoop
用户)对这些目录有读写权限。使用以下命令修改权限:
sudo chown -R hadoop:hadoop /path/to/hadoop/data/dir
sudo chmod -R 755 /path/to/hadoop/tmp
常见权限问题:DataNode因目录权限不足无法启动,或NameNode因元数据目录无法写入导致格式化失败。
Hadoop依赖Java运行时环境(JRE),需确保:
java -version
查看版本;~/.bashrc
或~/.profile
,添加export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
(Java安装路径)、export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
,然后执行source ~/.bashrc
使配置生效。若以上步骤排查出配置或进程问题,需重启Hadoop服务使更改生效:
# 停止所有Hadoop服务
$HADOOP_HOME/sbin/stop-all.sh
# 启动HDFS
$HADOOP_HOME/sbin/start-dfs.sh
# 启动YARN
$HADOOP_HOME/sbin/start-yarn.sh
重启后再次使用jps
和日志确认服务状态。
使用系统监控工具定位性能问题:
top
:查看CPU使用率(若CPU占用过高,可能是MapReduce任务并行度不足或资源分配不合理);vmstat 1 10
:查看内存使用情况(如free
内存不足可能导致频繁GC);iostat -x 1 10
:查看磁盘I/O(如%util
接近100%说明磁盘瓶颈);http://namenode:50070
,ResourceManager:http://resourcemanager:8088
)查看任务执行时间、资源分配情况。若启动后缺少DataNode进程,需重点排查:
VERSION
文件(路径:$HADOOP_HOME/tmp/dfs/name/current/VERSION
、$HADOOP_HOME/tmp/dfs/data/current/VERSION
)中的clusterID
需一致。若不一致,修改DataNode的clusterID
匹配NameNode,或重新格式化NameNode(注意:格式化会删除HDFS数据,需提前备份);dfs.data.dir
)的权限,确保hadoop
用户有读写权限;hdfs-site.xml
中的dfs.datanode.data.dir
路径是否正确,是否被其他进程占用;