Ubuntu Hadoop 集群故障排查方法
Ubuntu环境下Hadoop集群故障排查方法
1. 进程状态检查
使用jps
命令查看Hadoop相关进程(NameNode、DataNode、ResourceManager、NodeManager等)是否正常运行。若进程缺失,需结合日志进一步分析缺失原因(如配置错误、端口占用等)。例如,若NameNode进程未启动,可能是dfs.namenode.name.dir
配置的目录不存在或权限不足。
2. 日志文件分析
Hadoop的日志文件位于$HADOOP_HOME/logs
目录下(如hadoop-<
username>
-namenode-<
hostname>
.log
、hadoop-<
username>
-datanode-<
hostname>
.log
),是故障排查的核心依据。通过tail -f
命令实时查看日志,或使用grep
过滤错误关键词(如“ERROR”“Exception”),可快速定位问题根源(如端口冲突、磁盘空间不足、权限问题)。
3. 配置文件验证
检查Hadoop核心配置文件(core-site.xml
、hdfs-site.xml
、yarn-site.xml
、mapred-site.xml
)的配置项是否正确:
core-site.xml
:fs.defaultFS
应指向NameNode的正确地址(如hdfs://namenode-ip:9000
);hdfs-site.xml
:dfs.replication
(副本数)需与集群节点数量匹配(如3节点集群设置为3);yarn-site.xml
:yarn.resourcemanager.hostname
应指向ResourceManager节点的IP或主机名。 配置错误会导致节点间通信失败或服务无法启动。
4. 网络连通性测试
Hadoop集群依赖节点间的网络通信,需通过以下命令排查网络问题:
- Ping测试:
ping < datanode-ip>
检查节点间是否可达; - SSH无密码登录:主节点需能通过SSH无密码登录所有从节点(使用
ssh-keygen -t rsa
生成密钥,ssh-copy-id < username> @< datanode-ip>
复制密钥); - 主机名解析:编辑
/etc/hosts
文件,添加节点IP与主机名的映射(如192.168.1.10 namenode
),避免DNS解析失败; - 防火墙设置:使用
sudo ufw status
查看防火墙状态,开放Hadoop所需端口(如NameNode的9000端口、DataNode的50010端口、ResourceManager的8032端口)。
5. HDFS状态检查
使用hdfs dfsadmin -report
命令查看HDFS集群状态,包括:
- DataNode数量:应与集群配置一致(如3节点集群应有3个Live DataNodes);
- 存储容量:检查各DataNode的剩余空间(
dfs.datanode.du.reserved
配置的保留空间需合理); - 副本数:
dfs.replication
的值应符合配置,若副本数为0,需检查DataNode是否正常启动或网络是否可达。 若Live Nodes
为0,可能是DataNode进程未启动或无法连接NameNode。
6. YARN状态检查
使用yarn node -list
命令查看ResourceManager管理的NodeManager列表,确认NodeManager是否正常注册。若NodeManager未注册,需检查:
yarn-site.xml
中yarn.resourcemanager.hostname
配置是否正确;- NodeManager日志(
hadoop-< username> -nodemanager-< hostname> .log
)是否有错误信息(如端口冲突、资源不足)。
7. 资源使用监控
使用top
、htop
、free -h
、df -h
等命令监控系统资源:
- CPU:若CPU使用率持续100%,可能是MapReduce任务过多或资源分配不合理(调整
yarn.scheduler.maximum-allocation-mb
参数); - 内存:若内存不足,需增加
yarn.nodemanager.resource.memory-mb
(NodeManager可用内存)或mapreduce.map.memory.mb
(Map任务内存); - 磁盘:若磁盘空间不足,需清理
/tmp
目录(Hadoop临时文件)或扩展DataNode存储容量。
8. 权限问题排查
Hadoop对文件和目录的权限要求严格,需检查:
- Hadoop目录权限:
$HADOOP_HOME
、$HADOOP_HOME/logs
、$HADOOP_HOME/tmp
应属于hadoop
用户(如chown -R hadoop:hadoop $HADOOP_HOME
); - DataNode存储目录:
dfs.data.dir
配置的目录(如/data/hadoop/data
)需存在且权限正确(chmod -R 755 /data/hadoop/data
); - 临时文件:
/tmp
目录下的Hadoop临时文件(如/tmp/hadoop-< username>
)需清理,避免进程冲突。
9. 常见特定问题解决
- 启动失败:若启动时提示“Address already in use”,说明端口被占用(使用
netstat -tulnp | grep < port>
查找占用进程,杀掉或修改Hadoop配置中的端口号); - NameNode无法启动:检查
dfs.namenode.name.dir
目录是否存在(若不存在则创建),或是否处于不一致状态(使用hdfs namenode -recover
恢复); - DataNode无法连接NameNode:检查
dfs.datanode.address
配置(默认50010端口)是否正确,或防火墙是否阻止了该端口。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Hadoop 集群故障排查方法
本文地址: https://pptw.com/jishu/720490.html