Ubuntu下HDFS的故障排查方法
导读:Ubuntu下HDFS故障排查方法 一 快速定位流程 进程与端口:用 jps 确认 NameNode、DataNode(HA 环境还有 JournalNode、ZKFC)是否存活;必要时用 ss -lntp | grep -E ‘8020...
Ubuntu下HDFS故障排查方法
一 快速定位流程
- 进程与端口:用 jps 确认 NameNode、DataNode(HA 环境还有 JournalNode、ZKFC)是否存活;必要时用 ss -lntp | grep -E ‘8020|50070|50075|50010’ 检查监听端口。
- 服务状态:如使用系统服务,执行 systemctl status hadoop-hdfs-namenode/datanode;未运行则 start。
- 日志优先:查看 NameNode/DataNode 日志,常见路径为 /var/log/hadoop-hdfs/ 或 $HADOOP_HOME/logs/,用 tail -f 实时跟踪异常。
- 集群健康:执行 hdfs dfsadmin -report 查看 Live/Decommissioning/Stale 节点与容量;若处于 安全模式,先排查原因再执行 hdfs dfsadmin -safemode leave。
- 客户端连通:从客户端测试 hdfs dfs -ls /;若报连接拒绝,优先排查服务是否启动、端口与防火墙。
- 数据完整性:用 hdfs fsck / -files -blocks -locations 检查缺失/损坏块并定位副本不足问题。
- 资源与磁盘:用 df -h、du -sh、top/htop 检查磁盘空间与系统资源瓶颈。
二 常见故障与修复
- 连接被拒绝或超时:
- 用 jps 确认 NameNode/DataNode 已启动;2) 核对 core-site.xml 的 fs.defaultFS 与 hdfs-site.xml 的 dfs.namenode.rpc-address 是否指向正确主机与端口(常见为 8020);3) 检查 /etc/hosts 的 IP-主机名 映射是否一致;4) 开放防火墙端口(如 8020、50070、50075、50010);5) 仍失败时查看 NameNode 日志定位绑定/连接异常。
- 处于安全模式无法写入:
- 用 hdfs dfsadmin -report 查看 Blocks with only corrupt replicas/Under-replicated blocks;2) 若为启动后短暂安全模式属正常,等待数据块报告完成;3) 如因副本不足无法退出,先恢复/新增 DataNode 或临时调低 dfs.replication 后再退出:hdfs dfsadmin -safemode leave。
- 权限被拒绝 Permission denied:
- 用 hdfs dfs -ls /path 查看所有者/组/权限;2) 按需修正:hdfs dfs -chmod 755 /path 或 hdfs dfs -chown user:group /path;3) 需要更细粒度时使用 ACL:hdfs dfs -setfacl -m user:alice:rwx /path;4) 若 Web 端显示 dr.who,说明未传递有效用户身份,需配置 HTTP 代理用户 或启用 Kerberos。
- DataNode 未注册或反复掉线:
- 核对 dfs.datanode.data.dir 目录权限与可用空间;2) 检查 /etc/hosts 与 dfs.namenode.datanode.registration.ip-hostname-check(跨网段或主机名解析异常时可临时关闭验证用于排障);3) 查看 DataNode 日志中的注册/心跳错误;4) 如为全新部署或 clusterID 不一致,清理 DataNode 数据目录后重启(会触发重新注册)。
- 块损坏或副本不足:
- 用 hdfs fsck / -files -blocks -locations 定位缺失/损坏块与所在节点;2) 通过增加 DataNode、恢复故障磁盘或调整 dfs.replication 修复;3) 对无法恢复的损坏文件按策略删除或恢复备份。
三 关键命令清单
| 目标 | 命令示例 |
|---|---|
| 查看进程 | jps |
| NameNode 安全模式 | hdfs dfsadmin -safemode get |
| 退出安全模式 | hdfs dfsadmin -safemode leave |
| 集群健康与节点 | hdfs dfsadmin -report |
| 目录权限与属主 | hdfs dfs -ls /path;hdfs dfs -chmod 755 /path;hdfs dfs -chown user:group /path |
| ACL 细粒度授权 | hdfs dfs -setfacl -m user:alice:rwx /path |
| 数据块与完整性 | hdfs fsck / -files -blocks -locations |
| 空间使用 | hdfs dfs -df -h |
| 本地磁盘与负载 | df -h;du -sh /data;top/htop |
| 服务状态与启停 | systemctl status hadoop-hdfs-namenode;systemctl start hadoop-hdfs-datanode |
四 配置与网络检查要点
- 核心配置核对:
- core-site.xml:fs.defaultFS(如 hdfs://nn1:8020)。
- hdfs-site.xml:dfs.replication、dfs.namenode.rpc-address、dfs.datanode.data.dir、dfs.namenode.datanode.registration.ip-hostname-check、HA 相关 dfs.nameservices/dfs.ha.namenodes.xxx/dfs.namenode.rpc-address.xxx。
- 主机名与解析:确保 /etc/hosts 或 DNS 正确映射 IP-主机名,避免 NameNode 与 DataNode 互相解析不一致。
- 防火墙与端口:开放 8020(RPC)、50070/9870(NameNode Web)、50075(DataNode Web)、50010(DataNode 数据传输)等端口,或在内网环境临时停用防火墙验证。
- 环境变量:确认 HADOOP_HOME、PATH、JAVA_HOME 设置正确,避免命令找不到或 JVM 启动失败。
五 日志与监控
- 日志路径与实时查看:/var/log/hadoop-hdfs/ 或 $HADOOP_HOME/logs/,用 tail -f hadoop--namenode-.log 与 datanode 日志定位启动、注册、块报告、权限等错误。
- 可视化与健康检查:通过 NameNode Web UI(50070/9870) 查看 Live Nodes、Decommissioning Nodes、Corrupt Blocks;结合 HDFS Canary、Corrupt Blocks、DataNode Health、Free Space 等监控项设置告警。
- 系统监控:使用 Ganglia、Prometheus、Grafana 监控 CPU、内存、磁盘 I/O 与 HDFS 关键指标,便于提前发现容量与性能瓶颈。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu下HDFS的故障排查方法
本文地址: https://pptw.com/jishu/748653.html
