Linux系统下Hadoop故障排查流程与常见解决方法
日志是故障排查的核心依据,Hadoop的日志默认存储在$HADOOP_HOME/logs目录下(如NameNode日志为hadoop-*-namenode-*.log、DataNode日志为hadoop-*-datanode-*.log)。可使用以下命令快速定位错误信息:
tail -f $HADOOP_HOME/logs/*.loggrep -i "error\|fail\|exception" $HADOOP_HOME/logs/*.logNoRouteToHostException、OutOfMemoryError)和堆栈跟踪,是定位问题的关键线索。使用jps命令(Java进程查看工具)确认Hadoop关键组件是否正常运行。正常情况下,应看到以下进程:
hadoop-*-datanode-*.log),并尝试手动启动:$HADOOP_HOME/sbin/hadoop-daemon.sh start datanode。Hadoop的配置文件位于$HADOOP_HOME/etc/hadoop目录下,需重点检查以下文件的关键参数:
fs.defaultFS(HDFS的URI,如hdfs://namenode:9000)、hadoop.tmp.dir(临时目录路径)dfs.replication(副本数,默认3)、dfs.namenode.name.dir(NameNode元数据存储路径)、dfs.datanode.data.dir(DataNode数据存储路径)yarn.resourcemanager.hostname(ResourceManager主机名)、yarn.nodemanager.aux-services(NodeManager辅助服务,需设置为mapreduce_shuffle)mapreduce.framework.name(MapReduce运行框架,需设置为yarn)使用Hadoop自带命令检查集群健康状况:
hdfs dfsadmin -report,可查看DataNode数量、存储容量、数据块分布等信息(若DataNode未上报,需检查网络或DataNode进程)。yarn node -list,查看NodeManager列表及状态(RUNNING表示正常);yarn application -list,查看正在运行的应用程序(如MapReduce作业)。Hadoop集群依赖节点间的网络通信,需检查以下内容:
ping <目标IP>命令测试节点间网络是否可达(如NameNode与DataNode之间)。netstat -tulnp | grep <端口号>或telnet <目标IP> <端口号>验证Hadoop所需端口是否开放(常见端口:HDFS的50070、50010;YARN的8088、50020)。/etc/hosts中包含所有节点的IP与主机名映射(如192.168.1.10 namenode),避免DNS解析问题。/user/hadoop目录需属于hadoop用户),可使用hdfs dfs -ls /path查看权限,hdfs dfs -chmod/chown修改权限(测试环境可临时关闭权限检查:hdfs-site.xml中设置dfs.permissions.enabled=false)。df -h检查HDFS数据目录所在磁盘的剩余空间(建议保留20%以上),若空间不足,需清理无用文件(如hdfs dfs -rm -r /tmp/*)。OutOfMemoryError,需调整JVM内存参数(如mapred-site.xml中mapred.child.java.opts设置为-Xmx2048m,根据节点内存调整)。dfs.namenode.name.dir目录(如/home/hadoop/hdfs/name),然后格式化NameNode(hadoop namenode -format),最后重启集群。dfs.datanode.data.dir目录是否存在且权限正确;删除/tmp目录下的临时文件(如/tmp/hadoop-*);确保NameNode与DataNode的clusterID一致(可通过hdfs-site.xml中的dfs.namenode.clusterID查看)。yarn-site.xml中的yarn.resourcemanager.hostname配置是否正确;删除/tmp目录下的YARN临时文件。/etc/hosts文件是否一致,以及.ssh/authorized_keys是否包含所有节点的公钥(实现免密登录)。http://namenode:50070)查看HDFS状态,访问ResourceManager(http://resourcemanager:8088)查看YARN作业详情。top(查看CPU/内存占用)、iostat -x 1 10(查看磁盘I/O)、vmstat 1 10(查看系统整体性能)分析资源瓶颈。