Hadoop在Ubuntu上的故障排查方法
使用jps
命令查看Ubuntu系统中Hadoop相关Java进程是否正常运行。正常情况下,应看到NameNode
、DataNode
、ResourceManager
、NodeManager
等核心进程。若某进程缺失,说明对应组件未启动,需进一步排查该组件的日志(如NameNode
未启动则查看hadoop-*-namenode-*.log
)。
Hadoop的日志文件位于$HADOOP_HOME/logs
目录下(如hadoop-*-namenode-*.log
、hadoop-*-datanode-*.log
),是故障排查的核心依据。使用tail -f
命令实时查看日志,或通过grep
过滤错误信息(如grep "ERROR" *.log
),可快速定位具体错误原因(如InconsistentFSStateException
表示HDFS元数据不一致)。
使用hdfs dfsadmin -report
命令检查HDFS的整体状态,包括NameNode信息、DataNode列表、存储容量、数据块数量等。若某DataNode未上报信息,需检查其网络连接或日志中的SHUTDOWN_MSG
(如DataNode shutting down due to clusterID mismatch
)。
通过yarn node -list
命令查看ResourceManager管理的NodeManager列表及状态(如RUNNING
或LOST
)。若NodeManager状态异常,需检查其日志(hadoop-*-nodemanager-*.log
)中的错误信息(如Container launch failed
)。
Hadoop集群依赖节点间的网络通信,使用ping <node_ip>
命令测试所有节点之间的连通性。若无法ping通,需检查Ubuntu的网络配置(如IP地址、子网掩码、网关)或物理连接。
重点检查以下Hadoop配置文件的参数是否正确:
core-site.xml
:fs.defaultFS
(NameNode的URI,如hdfs://namenode:8020
);hdfs-site.xml
:dfs.replication
(副本数,通常为3)、dfs.namenode.name.dir
(NameNode元数据目录)、dfs.datanode.data.dir
(DataNode数据目录);yarn-site.xml
:yarn.resourcemanager.hostname
(ResourceManager的IP/主机名)、yarn.nodemanager.aux-services
(Shuffle服务,需设置为mapreduce_shuffle
);mapred-site.xml
:mapreduce.framework.name
(框架名称,需设置为yarn
)。Ubuntu的ufw
防火墙可能阻止Hadoop所需的端口通信,需开放以下常用端口:
8020
(NameNode RPC)、50010
(DataNode数据传输)、50070
(NameNode Web UI,Hadoop 2.x)/9870
(Hadoop 3.x);8030
(ResourceManager调度)、8088
(ResourceManager Web UI)、50060
(NodeManager状态)。
使用sudo ufw allow <port>
命令开放端口。若为首次启动Hadoop或NameNode元数据损坏(如InconsistentFSStateException
),需格式化HDFS。执行hdfs namenode -format
命令清除NameNode的元数据目录(如dfs.name.dir
指定的目录),然后重新启动Hadoop服务。注意:格式化会删除HDFS中的所有数据,需提前备份。
确保Ubuntu系统中已正确配置Java和Hadoop的环境变量:
JAVA_HOME
(如/usr/lib/jvm/java-8-openjdk-amd64
)需添加到~/.bashrc
或~/.profile
中,并通过source
命令生效;HADOOP_HOME
(Hadoop安装目录)、PATH
(包含$HADOOP_HOME/bin
和$HADOOP_HOME/sbin
)需正确设置。编辑Ubuntu的/etc/hosts
文件,将所有节点的IP地址与主机名映射添加进去(如192.168.1.1 namenode
、192.168.1.2 datanode1
)。避免使用localhost
作为主机名(除非是单节点集群),防止Hadoop无法正确识别节点。
使用top
、htop
或vmstat
命令监控Ubuntu系统的资源使用情况(CPU、内存、磁盘I/O)。若资源不足(如内存耗尽),可能导致Hadoop进程崩溃,需调整系统配置(如增加内存)或优化Hadoop参数(如yarn.nodemanager.resource.memory-mb
)。
确保HDFS数据目录(dfs.data.dir
)所在的磁盘有足够的空间(建议剩余空间大于总容量的10%)。若磁盘空间不足,DataNode无法存储数据块,会导致No space left on device
错误,可通过df -h
命令查看磁盘使用情况。