Ubuntu环境下HDFS故障排查方法
HDFS的日志是排查故障的核心依据,Ubuntu下日志通常位于/var/log/hadoop-hdfs/目录(如hadoop-<username>-namenode-<hostname>.log、hadoop-<username>-datanode-<hostname>.log)。使用tail -f /path/to/logfile实时查看日志,或通过grep "ERROR"过滤错误信息,可快速定位问题根源(如NameNode启动失败、DataNode连接异常等)。
使用systemctl命令检查HDFS核心服务(NameNode、DataNode)的状态:
systemctl status hadoop-hdfs-namenode # 检查NameNode状态
systemctl status hadoop-hdfs-datanode # 检查DataNode状态
若服务未运行,使用systemctl start hadoop-hdfs-namenode启动对应服务;若启动失败,结合日志分析具体原因(如配置错误、端口冲突)。
HDFS的关键配置文件(core-site.xml、hdfs-site.xml)需确保以下核心配置项正确:
core-site.xml:fs.defaultFS(NameNode RPC地址,如hdfs://localhost:9000)、hadoop.tmp.dir(临时目录,避免使用Ubuntu自动清理的/tmp目录);hdfs-site.xml:dfs.namenode.name.dir(NameNode元数据存储路径)、dfs.datanode.data.dir(DataNode数据存储路径)、dfs.replication(副本数,默认3)。HDFS集群节点间需通过网络通信,使用以下命令排查网络问题:
ping <DataNode_IP>:测试节点间网络连通性;netstat -tuln | grep <port>(如9000、50070):检查NameNode、DataNode端口是否监听;telnet <DataNode_IP> <port>:验证端口是否可达(若不可达,需检查防火墙设置或网络配置)。df -h检查HDFS数据目录所在磁盘的剩余空间(建议保留20%以上空闲空间),若空间不足,清理无用文件或扩展磁盘;dfs.datanode.data.dir)需对Hadoop用户(如hadoop)有读写权限,使用chown -R hadoop:hadoop /path/to/hdfs/data修改权限;临时目录(hadoop.tmp.dir)也需确保Hadoop用户可访问。hdfs dfsadmin -report:查看集群整体状态,包括NameNode信息、DataNode列表、数据块数量、副本因子等;hdfs fsck /path:检查HDFS文件系统完整性(如数据块损坏、丢失),使用-files -blocks -locations参数可详细列出文件块分布;hdfs dfs -ls /:列出HDFS根目录内容,验证基本文件操作功能是否正常。若NameNode无法启动,常见原因及解决方法:
hadoop.tmp.dir目录被清理或权限问题,修改配置并重新格式化NameNode(hdfs namenode -format);hdfs dfsadmin -safemode leave退出安全模式。使用top、htop、vmstat等工具监控系统资源(CPU、内存、磁盘I/O),若资源占用过高(如CPU使用率超过80%、内存耗尽),需优化HDFS配置(如增加dfs.namenode.handler.count参数值)或升级硬件。