Ubuntu环境下HDFS故障排查与解决指南
$HADOOP_HOME/logs/hadoop-*-namenode-*.log),重点关注ERROR和WARN级别日志,确定具体故障(如元数据损坏、权限问题)。namesecondary)恢复fsimage和edits文件;若元数据完全丢失,需执行hdfs namenode -format重新格式化(注意:此操作会清空HDFS所有数据)。dfs.namenode.name.dir)的权限正确,当前用户(如hdfs)对该目录有读写权限,可使用chown -R hdfs:hdfs /path/to/namenode/dir修复。hdfs dfsadmin -report显示节点状态为“dead”),日志报错“DISK_ERROR”“NO_SPACE_LEFT”或“Invalid version”。df -h检查磁盘空间(确保dfs.datanode.du.reserved配置的空间未被占满),使用lsblk确认磁盘设备正常;若权限问题,修改dfs.datanode.data.dir目录权限为hdfs:hdfs。/current/BP-*下的文件),释放空间后重启DataNode。hdfs fsck /path -files -blocks -locations命令检查损坏或丢失的块,若存在丢失块,可临时提高副本数(hdfs dfsadmin -setReplication /path 5)加速恢复,或通过hdfs dfsadmin -fetchImage获取最新元数据。dfs.replication配置(默认3),HDFS会自动复制块,但可手动触发均衡(hdfs balancer -threshold 10)确保副本分布均匀;若因网络分区导致副本不足,检查dfs.namenode.replication.work.multiplier.per.iteration配置(默认2),调整复制效率。hdfs fsck /path -openforwrite检查并修复,或等待文件自然关闭后重试。hdfs dfsadmin -safemode get查看安全模式状态,hdfs dfsadmin -metasave filename保存安全模式触发原因(如副本不足块占比过高、活跃DataNode数量不足)。hdfs dfsadmin -safemode leave强制退出;若频繁进入安全模式,需修复底层问题(如增加DataNode、恢复丢失块)。ping <node_ip>测试节点间连通性,确保网络正常;使用telnet <node_ip> <port>(如9000、50010)测试端口是否开放。/etc/hosts文件,添加节点IP与主机名的映射(如192.168.1.10 master、192.168.1.11 slave1),避免DNS解析问题。core-site.xml中的fs.defaultFS(如hdfs://master:9000)、hdfs-site.xml中的dfs.namenode.name.dir(如/opt/hadoop/namenode)、dfs.datanode.data.dir(如/opt/hadoop/datanode)配置正确,且所有节点配置一致。ufw或iptables开放Hadoop所需端口(如9000、50010、50020、50070、50075),例如sudo ufw allow 9000/tcp、sudo ufw allow 50010/tcp。$HADOOP_HOME/logs/hadoop-*-namenode-*.log)、DataNode日志($HADOOP_HOME/logs/hadoop-*-datanode-*.log)、ResourceManager日志($HADOOP_HOME/logs/yarn-*-resourcemanager-*.log)。tail -F hdfs.log | grep -E "ERROR|WARN|Exception"。awk '/ERROR/{print $5}' hdfs.log | sort | uniq -c | sort -nr(按错误类型统计出现次数)。hadoop-env.sh中的HADOOP_HEAPSIZE参数(如export HADOOP_HEAPSIZE=4096,单位MB);若小文件过多导致块扫描压力大,合并小文件(使用HAR归档或hdfs dfs -concat命令)。