日志是排查HDFS配置故障的核心依据,NameNode、DataNode等组件的日志会记录详细的错误信息(如权限不足、端口冲突、目录权限问题)。
$HADOOP_HOME/logs
目录(如/var/log/hadoop-hdfs/
),文件命名规则为hadoop-<username>-namenode-<hostname>.log
(NameNode)、hadoop-<username>-datanode-<hostname>.log
(DataNode)。tail -f
实时查看日志(如tail -f /var/log/hadoop-hdfs/namenode-localhost.log
),或用grep
过滤关键错误(如grep "ERROR" /var/log/hadoop-hdfs/*.log
)。Hadoop提供的命令行工具可直接检查集群状态、文件系统完整性及配置有效性:
hdfs dfsadmin -report
可查看NameNode/Datanode数量、健康状况、存储容量、副本因子等关键信息,确认集群是否正常运行。hdfs fsck /
可扫描整个文件系统,报告损坏的块、丢失的副本;hdfs fsck / -files -blocks -locations
可查看详细块分布;hdfs fsck / -list-corruptfileblocks
可列出所有损坏的文件块。hdfs dfsadmin -safemode leave
退出。HDFS的核心配置文件(core-site.xml
、hdfs-site.xml
)参数错误是常见故障原因,需重点检查以下参数:
core-site.xml
:fs.defaultFS
(NameNode地址,如hdfs://namenode-host:9000
)、hadoop.tmp.dir
(临时目录,需确保有写权限)。hdfs-site.xml
:dfs.replication
(副本因子,单机模式设为1,集群模式设为3)、dfs.namenode.name.dir
(NameNode元数据目录)、dfs.datanode.data.dir
(DataNode数据目录)、dfs.namenode.handler.count
(NameNode处理线程数,根据集群规模调整)。网络问题是导致DataNode无法连接NameNode的常见原因,需排查以下内容:
/etc/hosts
文件中必须包含集群所有节点的IP地址-主机名
映射(如192.168.1.100 namenode
),避免DNS解析失败。ping <datanode-hostname>
测试节点间连通性;使用netstat -tuln | grep <port>
(如9000、50070)检查NameNode/DataNode端口是否正常监听。systemctl stop firewalld
或firewall-cmd --add-port=9000/tcp --permanent
)。df -h
检查DataNode存储目录的磁盘使用情况,确保剩余空间充足(建议保留20%以上)。若空间不足,清理无用文件(如/tmp
目录)或扩展磁盘。dfs.name.dir
、dfs.data.dir
)必须由hdfs
用户拥有写权限(如chown -R hdfs:hdfs /path/to/hdfs/dir
)。若权限不足,会导致DataNode无法启动或写入数据失败。Hadoop依赖Java环境,需确保以下配置正确:
java -version
验证。$HADOOP_HOME/etc/hadoop/hadoop-env.sh
中配置export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
(路径根据实际Java安装位置调整),并确保source hadoop-env.sh
生效。jps
命令查看NameNode、DataNode进程是否运行(如NameNode
、DataNode
)。若进程未启动,需检查日志定位原因(如端口冲突、配置错误)。http://namenode-host:9870
),查看集群状态、DataNode列表、块分布等信息;DataNode Web界面(默认http://datanode-host:9864
)可查看本地存储状态。/var/log/hadoop-hdfs/datanode-localhost.log
),常见原因包括namespaceID
不一致(需删除DataNode数据目录并重新格式化NameNode)、端口被占用(修改hdfs-site.xml
中的dfs.datanode.address
参数)。hdfs dfsadmin -safemode leave
退出,若无法退出,需检查磁盘空间或修复损坏的块。dfs.replication
设置过高(如集群节点少但副本数为3),会导致DataNode存储压力大。调整hdfs-site.xml
中的dfs.replication
参数(如设为2),并执行hdfs dfsadmin -setReplication <path> <replication>
更新现有文件的副本数。