调试 Linux 上的 Hadoop 可以从日志、配置、进程、命令行工具、远程调试几个层面入手。下面给你一套较系统、可落地的调试思路。
java -version
hadoop version
确保:
JAVA_HOME 已正确配置echo $HADOOP_HOME
echo $JAVA_HOME
hadoop-env.sh 中也应设置:
export JAVA_HOME=/usr/java/jdk1.8.0_xxx
$HADOOP_HOME/logs/
常见日志:
hadoop-<user>-namenode-<host>.loghadoop-<user>-datanode-<host>.logyarn-<user>-resourcemanager-<host>.loguserlogs/(MapReduce 任务日志)tail -f $HADOOP_HOME/logs/hadoop-*-namenode-*.log
Connection refused → 端口/防火墙问题Permission denied → 用户权限或 HDFS 权限OutOfMemoryError → 内存配置不足ClassNotFoundException → jar 包缺失hdfs dfsadmin -report
yarn node -list
hdfs fsck /
hdfs dfs -ls /
yarn jar $HHADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar pi 2 5
jps
应有:
netstat -tunlp | grep java
常见端口:
core-site.xmlhdfs-site.xmlyarn-site.xmlmapred-site.xml<property>
<name>mapreduce.map.log.level</name>
<value>DEBUG</value>
</property>
http://namenode:9870http://resourcemanager:8088可查看:
在 hadoop-env.sh 中:
export HADOOP_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"
然后用 IDE 远程连接。
✅ 防火墙是否关闭
✅ 主机名与 /etc/hosts 是否一致
✅ SSH 是否免密
✅ 磁盘是否满
✅ 时间是否同步(NTP)
如果你愿意,可以告诉我:
我可以直接帮你定位问题。