日志是故障排查的核心依据,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
退出,待副本数满足要求后再正常运行。