日志是故障排查的核心依据,HDFS的日志主要分布在/var/log/hadoop-hdfs/(或$HADOOP_HOME/logs)目录下,其中:
hadoop-*-namenode-*.log);hadoop-*-datanode-*.log)。tail -F hdfs.log | grep -E "ERROR|WARN|Exception"实时监控错误日志,或通过awk统计高频错误(如awk '/ERROR/{print $5}' hdfs.log | sort | uniq -c | sort -nr),快速定位问题根源(如权限拒绝、磁盘满、网络超时等)。HDFS提供了丰富的命令行工具,用于检查集群状态、数据完整性和修复问题:
hdfs dfsadmin -report:查看集群整体状态,包括DataNode数量、健康状况、存储容量、副本因子等,快速识别节点宕机或容量不足问题;hdfs fsck /path:检查文件系统一致性,通过-files -blocks -locations参数显示文件块分布,-list-corruptfileblocks列出损坏的文件块(谨慎使用-delete删除损坏文件,需提前确认数据可重建);hdfs balancer:平衡集群数据负载,解决因DataNode存储不均导致的性能瓶颈。配置错误是常见故障原因,需重点核对以下文件的关键参数:
core-site.xml:确认fs.defaultFS(HDFS NameNode地址,如hdfs://namenode:9000)配置正确;hdfs-site.xml:检查dfs.replication(副本因子,默认3)、dfs.namenode.datanode.registration.ip-hostname-check(是否允许IP注册,建议设为false)、dfs.datanode.data.dir(数据存储目录,需有多个路径冗余)等参数;yarn-site.xml/mapred-site.xml:若涉及MapReduce/YARN任务,需确认资源调度配置(如yarn.nodemanager.resource.memory-mb)。HDFS依赖节点间的网络通信,常见问题包括:
ping <DataNode_IP>检查节点间网络是否可达;netstat -tulnp | grep <port>(如NameNode的50070、DataNode的50010)确认端口是否监听,用telnet <IP> <port>测试端口连通性;systemctl stop firewalld)或开放集群通信端口(如firewall-cmd --add-port=50070/tcp --permanent),避免因防火墙规则导致的心跳超时或数据传输失败。df -h查看DataNode磁盘使用情况,若Use%超过80%,需清理无用文件(如/tmp目录下的临时文件、过期数据),或扩容磁盘;ls -l /path/to/hdfs/directory检查HDFS目录权限(如drwxr-xr-x),确保运行HDFS服务的用户(如hadoop)有读写权限(必要时用chown -R hadoop:hadoop /path/to/hdfs修改所有权)。http://namenode:50070、http://datanode:50075)查看实时状态,包括节点存活情况、数据块分布、任务执行进度;NameNode日志(如OutOfMemoryError需调整堆内存,CorruptFileSystemImage需从SecondaryNameNode恢复元数据);dfs.namenode.rpc-address配置正确,检查网络连通性和防火墙设置;hdfs dfsadmin -setReplication <path> <replication_factor>提高副本数,或重启DataNode服务让HDFS自动复制缺失的块;hdfs dfsadmin -safemode get显示ON),使用hdfs dfsadmin -safemode leave退出,待副本数满足要求后再正常运行。