HDFS在CentOS上的故障排除
导读:HDFS在CentOS上的故障排除手册 一、快速定位流程 环境与健康 检查 Java 与 Hadoop 版本与兼容性(常见为 JDK 8),确认环境变量:执行 java -version、echo $JAVA_HOME、echo $HA...
HDFS在CentOS上的故障排除手册
一、快速定位流程
- 环境与健康
- 检查 Java 与 Hadoop 版本与兼容性(常见为 JDK 8),确认环境变量:执行
java -version、echo $JAVA_HOME、echo $HADOOP_HOME。 - 查看资源与磁盘:
top/htop、df -h,避免因 磁盘空间不足 导致异常。
- 检查 Java 与 Hadoop 版本与兼容性(常见为 JDK 8),确认环境变量:执行
- 服务与端口
- 启动/查看服务:
- 脚本方式:
start-dfs.sh、stop-dfs.sh; - 或 systemd:
systemctl status hadoop-hdfs-namenode、systemctl status hadoop-hdfs-datanode(若使用 RPM/ Ambari 管理,服务名可能不同)。
- 脚本方式:
- 常用 Web 与 RPC 端口:50070(NameNode Web)、8020/9000(RPC/fs.defaultFS)、50010(DataNode 数据传输)。
- 启动/查看服务:
- 配置与主机
- 核对关键配置:
core-site.xml的 fs.defaultFS;hdfs-site.xml的 dfs.namenode.name.dir、dfs.datanode.data.dir、dfs.replication、dfs.namenode.http-address。 - 主机名解析与连通性:校正 /etc/hosts,使用
ping、telnet < namenode_ip> 8020测试。
- 核对关键配置:
- 日志与诊断
- 日志路径:
- 系统服务日志:/var/log/hadoop-hdfs/;
- 脚本部署日志:$HADOOP_HOME/logs/。
- 常用诊断:
hdfs dfsadmin -report、hdfs dfsadmin -printTopology、hdfs dfs -ls /、hdfs fsck /。
- 日志路径:
二、常见故障与修复对照表
| 症状 | 快速检查 | 修复建议 |
|---|---|---|
| NameNode 启动失败,报 IncorrectVersionException | 查看 NameNode 日志;检查 dfs.namenode.name.dir 目录 | 确认版本一致;必要时备份后清理该目录的 VERSION 文件并重新 hdfs namenode -format(会清空元数据) |
| DataNode 未注册或反复掉线 | hdfs dfsadmin -report 看不到节点;查看 DataNode 日志 |
核对 fs.defaultFS 与 dfs.datanode.data.dir;检查网络/防火墙;确保 /etc/hosts 与主机名一致 |
| 客户端报 Connection refused 或无法访问 50070 | telnet <
namenode_ip>
8020/50070 失败 |
开放端口(如 8020/9000/50070);排查防火墙/安全组;确认服务已启动 |
| 安全模式导致写入失败 | hdfs dfsadmin -safemode get 显示 ON |
数据充足后自动退出;紧急可用 hdfs dfsadmin -safemode leave(不建议生产频繁使用) |
| Permission denied | 本地与 HDFS 权限;执行用户 | 使用 hdfs dfs -chmod / -chown 调整;或以具备权限的用户执行 |
| DiskSpaceQuotaExceededException | df -h 与 HDFS 配额 |
清理空间;按需调整配额 hdfs dfsadmin -setQuota |
| 配置文件错误(XML 语法、路径不存在) | 启动日志提示 XML/IO 异常 | 校验 core-site.xml、hdfs-site.xml 语法与目录权限;确保路径存在且可写 |
| 版本/环境变量问题 | java -version、$JAVA_HOME 为空或错误 |
在 hadoop-env.sh 与 /etc/profile 正确设置 JAVA_HOME 与 HADOOP_HOME 并 source 生效 |
三、关键配置与端口清单
- 核心配置
core-site.xml:fs.defaultFS(如 hdfs://namenode:8020)。- `hdfs-site.xml**:dfs.namenode.name.dir(NameNode 元数据目录)、dfs.datanode.data.dir(DataNode 数据目录,建议多磁盘)、dfs.replication(副本数,测试环境可设为 1)、dfs.namenode.http-address(如 0.0.0.0:50070)。
- 端口与用途
- 8020/9000:HDFS RPC/NameNode 服务端口(取决于版本与配置)。
- 50070:NameNode Web UI。
- 50010:DataNode 数据传输端口。
- 防火墙放行示例(firewalld)
firewall-cmd --add-port=8020/tcp --permanentfirewall-cmd --add-port=50070/tcp --permanentfirewall-cmd --reload
- 主机名解析
- 在 /etc/hosts 添加如:
192.168.1.182 hadoop-namenode、192.168.1.186 hadoop-datanode1。
- 在 /etc/hosts 添加如:
四、应急与恢复操作
- 安全模式
- 查看:
hdfs dfsadmin -safemode get - 退出:
hdfs dfsadmin -safemode leave(仅在确认数据完整时使用)。
- 查看:
- 文件系统健康检查与修复
- 全量检查:
hdfs fsck / - 修复缺失块/副本:根据
fsck报告执行修复或调整 dfs.replication 后由系统自动补齐。
- 全量检查:
- NameNode 格式化(高风险)
- 适用场景:首次部署或明确需要重建元数据。
- 命令:
hdfs namenode -format(会清空 HDFS 上所有数据,务必先备份)。
- 配置与二进制一致性
- 多节点环境确保 Hadoop 版本一致、配置文件同步(可用
scp/rsync);必要时重新分发并重启服务。
- 多节点环境确保 Hadoop 版本一致、配置文件同步(可用
五、最小化验证命令清单
- 服务与连通
systemctl status hadoop-hdfs-namenode、systemctl status hadoop-hdfs-datanodejps(应看到 NameNode、DataNode 进程)telnet < namenode_ip> 8020、telnet < namenode_ip> 50070
- HDFS 状态与拓扑
hdfs dfsadmin -reporthdfs dfsadmin -printTopology
- 基本文件操作
hdfs dfs -ls /、hdfs dfs -mkdir -p /test、hdfs dfs -put localfile /test/、hdfs dfs -cat /test/localfile
- 健康检查
hdfs fsck /
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: HDFS在CentOS上的故障排除
本文地址: https://pptw.com/jishu/765992.html
