温馨提示×

怎样调试linux hadoop

小樊
38
2026-09-25 19:06:04
栏目: 智能运维

调试 Linux 上的 Hadoop 可以从日志、配置、进程、命令行工具、远程调试几个层面入手。下面给你一套较系统、可落地的调试思路。


一、先确认基本环境

1. 检查 Java 和 Hadoop 版本

java -version
hadoop version

确保:

  • JDK 版本符合 Hadoop 要求(如 Hadoop 3.x 推荐 JDK 8/11)
  • JAVA_HOME 已正确配置

2. 检查环境变量

echo $HADOOP_HOME
echo $JAVA_HOME

hadoop-env.sh 中也应设置:

export JAVA_HOME=/usr/java/jdk1.8.0_xxx

二、查看 Hadoop 日志(最重要)

1. 日志位置

$HADOOP_HOME/logs/

常见日志:

  • hadoop-<user>-namenode-<host>.log
  • hadoop-<user>-datanode-<host>.log
  • yarn-<user>-resourcemanager-<host>.log
  • userlogs/(MapReduce 任务日志)

2. 实时查看日志

tail -f $HADOOP_HOME/logs/hadoop-*-namenode-*.log

3. 常见错误关键词

  • Connection refused → 端口/防火墙问题
  • Permission denied → 用户权限或 HDFS 权限
  • OutOfMemoryError → 内存配置不足
  • ClassNotFoundException → jar 包缺失

三、使用 Hadoop 自带命令调试

1. 检查集群状态

hdfs dfsadmin -report
yarn node -list

2. 检查 HDFS

hdfs fsck /
hdfs dfs -ls /

3. 测试 MapReduce

yarn jar $HHADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar pi 2 5

四、进程与端口调试

1. 查看进程

jps

应有:

  • NameNode
  • DataNode
  • ResourceManager
  • NodeManager

2. 检查端口

netstat -tunlp | grep java

常见端口:

  • 9870(HDFS Web UI)
  • 8088(YARN Web UI)

五、配置层面调试

1. 核心配置文件

  • core-site.xml
  • hdfs-site.xml
  • yarn-site.xml
  • mapred-site.xml

2. 常见调试配置

<property>
  <name>mapreduce.map.log.level</name>
  <value>DEBUG</value>
</property>

六、Web UI 调试

  • HDFS: http://namenode:9870
  • YARN: http://resourcemanager:8088

可查看:

  • 节点状态
  • 任务失败原因
  • 日志链接

七、远程 Debug(Java 层)

在 hadoop-env.sh 中:

export HADOOP_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"

然后用 IDE 远程连接。


八、常见排错清单

✅ 防火墙是否关闭
✅ 主机名与 /etc/hosts 是否一致
✅ SSH 是否免密
✅ 磁盘是否满
✅ 时间是否同步(NTP)


如果你愿意,可以告诉我:

  • 是 单机 / 伪分布式 / 集群
  • 出错在 HDFS / YARN / MapReduce
  • 具体 报错日志

我可以直接帮你定位问题。

0 踩