温馨提示×

Debian怎么调试Hadoop

小樊
41
2026-08-02 11:30:14
栏目: 智能运维

在 Debian 上调试 Hadoop,通常分为 系统环境调试Hadoop 配置调试运行日志调试应用/代码调试 四个层面。下面按常见场景给你一个实用指南。


一、准备环境(Debian 特有注意点)

1. 确认 Java 环境

Hadoop 依赖 Java(推荐 JDK 8 / 11):

java -version

安装 OpenJDK(如未安装):

sudo apt update
sudo apt install openjdk-11-jdk

设置 JAVA_HOME

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

建议写入:

~/.bashrc

/etc/profile

2. 确认 SSH(伪分布式必须)

Hadoop 需要无密码 SSH:

sudo apt install openssh-server
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

测试:

ssh localhost

二、Hadoop 配置调试(最常见问题)

1. 关键配置文件

伪分布式 为例:

etc/hadoop/
├── core-site.xml
├── hdfs-site.xml
├── mapred-site.xml
├── yarn-site.xml
└── hadoop-env.sh

2. core-site.xml

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

3. hdfs-site.xml

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

4. hadoop-env.sh(非常重要)

确认 Java 路径:

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

三、启动与运行调试

1. 格式化 NameNode(只一次)

hdfs namenode -format

⚠️ 重复格式化会导致 clusterID 不一致


2. 启动 HDFS

start-dfs.sh

检查进程:

jps

应看到:

  • NameNode
  • DataNode
  • SecondaryNameNode

3. 启动 YARN

start-yarn.sh

四、日志调试(最关键)

1. Hadoop 日志位置

$HADOOP_HOME/logs/

常见文件:

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

2. 查看错误

tail -n 200 logs/hadoop-*-datanode-*.log

常见错误:

  • java.net.BindException → 端口冲突
  • java.io.IOException: Incompatible clusterIDs → NameNode 格式化问题
  • Permission denied → 用户/目录权限问题

五、常见 Debian 特有问题

1. 主机名解析问题

Hadoop 对 hostname 很敏感:

hostname

确保 /etc/hosts 中有:

127.0.0.1 localhost
127.0.1.1 your-hostname

2. 目录权限

HDFS 数据目录不要放在 root 下:

sudo mkdir -p /data/hadoop
sudo chown -R $USER:$USER /data/hadoop

六、调试 MapReduce / YARN 程序

1. 本地运行模式(调试最快)

hadoop jar example.jar WordCount input output

2. 查看 YARN 日志

yarn logs -applicationId application_xxxx

七、远程 / IDE 调试(进阶)

1. 启用远程调试

hadoop-env.sh 中加入:

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

然后用 IntelliJ / Eclipse 连接 5005 端口。


八、调试建议总结

✅ 先看 日志
✅ 再查 配置
✅ 再查 Java / SSH / 主机名
✅ 最后考虑 版本兼容性


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

  • Hadoop 版本(2.x / 3.x)
  • 单机 / 伪分布式 / 集群
  • 报错日志(贴一段)

我可以帮你 精确定位问题

0