温馨提示×

HDFS在CentOS上的故障排除

小樊
45
2025-12-07 22:32:35
栏目: 智能运维

HDFS在CentOS上的故障排除手册

一、快速定位流程

  • 环境与健康
    • 检查 JavaHadoop 版本与兼容性(常见为 JDK 8),确认环境变量:执行 java -versionecho $JAVA_HOMEecho $HADOOP_HOME
    • 查看资源与磁盘:top/htopdf -h,避免因 磁盘空间不足 导致异常。
  • 服务与端口
    • 启动/查看服务:
      • 脚本方式:start-dfs.shstop-dfs.sh
      • 或 systemd:systemctl status hadoop-hdfs-namenodesystemctl status hadoop-hdfs-datanode(若使用 RPM/ Ambari 管理,服务名可能不同)。
    • 常用 Web 与 RPC 端口:50070(NameNode Web)、8020/9000(RPC/fs.defaultFS)、50010(DataNode 数据传输)。
  • 配置与主机
    • 核对关键配置:core-site.xmlfs.defaultFShdfs-site.xmldfs.namenode.name.dirdfs.datanode.data.dirdfs.replicationdfs.namenode.http-address
    • 主机名解析与连通性:校正 /etc/hosts,使用 pingtelnet <namenode_ip> 8020 测试。
  • 日志与诊断
    • 日志路径:
      • 系统服务日志:/var/log/hadoop-hdfs/
      • 脚本部署日志:$HADOOP_HOME/logs/
    • 常用诊断:hdfs dfsadmin -reporthdfs dfsadmin -printTopologyhdfs dfs -ls /hdfs fsck /

二、常见故障与修复对照表

症状 快速检查 修复建议
NameNode 启动失败,报 IncorrectVersionException 查看 NameNode 日志;检查 dfs.namenode.name.dir 目录 确认版本一致;必要时备份后清理该目录的 VERSION 文件并重新 hdfs namenode -format(会清空元数据)
DataNode 未注册或反复掉线 hdfs dfsadmin -report 看不到节点;查看 DataNode 日志 核对 fs.defaultFSdfs.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.xmlhdfs-site.xml 语法与目录权限;确保路径存在且可写
版本/环境变量问题 java -version$JAVA_HOME 为空或错误 hadoop-env.sh/etc/profile 正确设置 JAVA_HOMEHADOOP_HOMEsource 生效

三、关键配置与端口清单

  • 核心配置
    • core-site.xmlfs.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 --permanent
    • firewall-cmd --add-port=50070/tcp --permanent
    • firewall-cmd --reload
  • 主机名解析
    • /etc/hosts 添加如:192.168.1.182 hadoop-namenode192.168.1.186 hadoop-datanode1

四、应急与恢复操作

  • 安全模式
    • 查看:hdfs dfsadmin -safemode get
    • 退出:hdfs dfsadmin -safemode leave(仅在确认数据完整时使用)。
  • 文件系统健康检查与修复
    • 全量检查:hdfs fsck /
    • 修复缺失块/副本:根据 fsck 报告执行修复或调整 dfs.replication 后由系统自动补齐。
  • NameNode 格式化(高风险)
    • 适用场景:首次部署或明确需要重建元数据。
    • 命令:hdfs namenode -format(会清空 HDFS 上所有数据,务必先备份)。
  • 配置与二进制一致性
    • 多节点环境确保 Hadoop 版本一致、配置文件同步(可用 scp/rsync);必要时重新分发并重启服务。

五、最小化验证命令清单

  • 服务与连通
    • systemctl status hadoop-hdfs-namenodesystemctl status hadoop-hdfs-datanode
    • jps(应看到 NameNodeDataNode 进程)
    • telnet <namenode_ip> 8020telnet <namenode_ip> 50070
  • HDFS 状态与拓扑
    • hdfs dfsadmin -report
    • hdfs dfsadmin -printTopology
  • 基本文件操作
    • hdfs dfs -ls /hdfs dfs -mkdir -p /testhdfs dfs -put localfile /test/hdfs dfs -cat /test/localfile
  • 健康检查
    • hdfs fsck /

0