温馨提示×

Debian如何调试Hadoop

小樊
48
2026-07-18 17:24:00
栏目: 智能运维

在 Debian 上调试 Hadoop,一般可以从 运行日志、配置、环境、进程状态、系统资源 几个方面入手。下面给你一套比较完整的调试思路和常用命令,适合新手和有一定经验的用户。


一、确认 Hadoop 运行方式

先确认你是以哪种方式运行 Hadoop:

  • 本地模式(Local)
  • 伪分布式(Pseudo-Distributed)
  • 完全分布式(Fully Distributed)

调试重点不同,伪分布式最常见。


二、查看 Hadoop 日志(最关键)

1️⃣ Hadoop 日志目录

默认路径一般在:

$HADOOP_HOME/logs/

或者:

/var/log/hadoop/

常见日志:

  • hadoop-*-namenode-*.log
  • hadoop-*-datanode-*.log
  • hadoop-*-resourcemanager-*.log
  • hadoop-*-nodemanager-*.log

2️⃣ 实时查看日志

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

3️⃣ 常见错误关键词

在日志中搜索:

grep -i error hadoop-*-namenode-*.log
grep -i exception hadoop-*-datanode-*.log

常见错误:

  • Connection refused
  • ClassNotFoundException
  • Permission denied
  • Disk full
  • JAVA_HOME not set

三、检查 Java 环境(Debian 常见坑)

1️⃣ 确认 Java 是否安装

java -version

2️⃣ 设置 JAVA_HOME

Debian 下常见路径:

/usr/lib/jvm/java-11-openjdk-amd64

hadoop-env.sh 中配置:

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

并使生效:

source $HADOOP_HOME/etc/hadoop/hadoop-env.sh

四、检查 Hadoop 配置(伪分布式为例)

1️⃣ core-site.xml

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
  </property>
</configuration>

2️⃣ hdfs-site.xml

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>

3️⃣ 检查 XML 是否生效

hdfs getconf -confKey fs.defaultFS

五、检查进程是否正常启动

1️⃣ 查看 Java 进程

jps

正常应看到:

  • NameNode
  • DataNode
  • ResourceManager
  • NodeManager

如果缺失,说明组件没启动成功。

2️⃣ 手动启动单个组件

hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode

六、HDFS 调试常用命令

1️⃣ 检查 HDFS 状态

hdfs dfsadmin -report

2️⃣ 检查目录权限

hdfs dfs -ls /

3️⃣ 常见 HDFS 问题

  • 安全模式(SafeMode)
hdfs dfsadmin -safemode get
hdfs dfsadmin -safemode leave
  • 磁盘空间不足
df -h

七、YARN / MapReduce 调试

1️⃣ 查看 YARN 状态

yarn node -list

2️⃣ 提交测试任务

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

如果失败,重点看:

  • ResourceManager 日志
  • NodeManager 日志

八、系统层面调试(Debian)

1️⃣ 防火墙(Debian 默认通常关闭)

sudo iptables -L

2️⃣ 主机名解析

hostname
cat /etc/hosts

必须包含:

127.0.0.1 localhost

3️⃣ SSH 免密登录(伪分布式必须)

ssh localhost

不行就重新配置:

ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

九、开启 Hadoop 远程调试(进阶)

hadoop-env.sh 中加入:

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

然后用 IntelliJ IDEA / Eclipse 远程调试。


十、快速定位问题顺序(推荐)

  1. jps 看进程
  2. $HADOOP_HOME/logs
  3. JAVA_HOME
  4. 看 HDFS / YARN 状态
  5. 看系统资源(磁盘、内存、SSH)

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

  • Debian 版本(如 11 / 12)
  • Hadoop 版本
  • 报错日志或截图

我可以 直接帮你定位具体错误

0