使用systemctl命令确认NameNode、DataNode等核心服务是否运行正常。例如:
systemctl status hadoop-hdfs-namenode
systemctl status hadoop-hdfs-datanode
若服务未启动,使用systemctl start hadoop-hdfs-namenode启动对应服务;若启动失败,需进一步查看日志定位原因。
HDFS日志是故障排查的关键依据,主要日志路径为/var/log/hadoop-hdfs/,常见日志文件包括:
hadoop-*-namenode-*.loghadoop-*-datanode-*.logtail -f /path/to/logfile实时查看日志,重点关注ERROR或WARN级别的错误信息(如权限不足、端口冲突、磁盘满等)。HDFS集群节点间需通过网络通信,使用以下命令检查连通性:
ping <datanode_ip>(替换为DataNode IP),确认节点间网络可达;telnet <namenode_ip> 9000(替换为NameNode RPC端口),确认端口未被防火墙阻挡。df -h查看各分区使用情况,确保/(根分区)或HDFS数据目录(如/home/hadoop/data/hadoopfs/data)剩余空间充足(建议保留20%以上);hdfs)拥有读写权限,使用ls -l /path/to/dir检查权限,若权限不足,执行chown -R hdfs:hdfs /path/to/dir修正。重点检查core-site.xml和hdfs-site.xml的配置项,确保参数正确:
fs.defaultFS(NameNode地址,如hdfs://namenode_ip:9000);dfs.namenode.name.dir(NameNode元数据目录)、dfs.datanode.data.dir(DataNode数据目录)、dfs.replication(副本数,默认3)。通过HDFS Shell命令快速检查集群状态:
hdfs dfsadmin -report,查看DataNode数量、数据块分布、存储容量等信息;hdfs fsck /,检查HDFS文件系统完整性,修复损坏的数据块(需谨慎使用-delete参数删除坏块)。CentOS防火墙(firewalld或iptables)可能阻挡HDFS端口通信,需开放必要端口:
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --permanent --add-port=50070/tcp
firewall-cmd --reload
若需临时关闭防火墙测试(不推荐生产环境),执行systemctl stop firewalld。
若NameNode处于安全模式(Safemode),会禁止数据写入和删除操作。使用以下命令退出安全模式:
hdfs dfsadmin -safemode leave
若无法退出,需检查DataNode是否全部启动(hdfs dfsadmin -report显示所有DataNode为Live状态)。
若SELinux处于Enforcing模式,可能限制HDFS进程的权限。临时禁用SELinux:
setenforce 0
永久禁用需修改/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=disabled,并重启服务器。
HDFS依赖Java环境,需确保JAVA_HOME已正确设置。编辑/etc/profile或~/.bashrc,添加:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 # 根据实际Java路径修改
export PATH=$JAVA_HOME/bin:$PATH
执行source /etc/profile使配置生效,再检查java -version确认Java版本(建议使用Java 8或11)。