在 Debian 上调试 Hadoop,通常分为 系统环境调试、Hadoop 配置调试、运行日志调试 和 应用/代码调试 四个层面。下面按常见场景给你一个实用指南。
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
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
以 伪分布式 为例:
etc/hadoop/
├── core-site.xml
├── hdfs-site.xml
├── mapred-site.xml
├── yarn-site.xml
└── hadoop-env.sh
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
确认 Java 路径:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
hdfs namenode -format
⚠️ 重复格式化会导致 clusterID 不一致
start-dfs.sh
检查进程:
jps
应看到:
start-yarn.sh
$HADOOP_HOME/logs/
常见文件:
hadoop-*-namenode-*.loghadoop-*-datanode-*.loghadoop-*-resourcemanager-*.logtail -n 200 logs/hadoop-*-datanode-*.log
常见错误:
java.net.BindException → 端口冲突java.io.IOException: Incompatible clusterIDs → NameNode 格式化问题Permission denied → 用户/目录权限问题Hadoop 对 hostname 很敏感:
hostname
确保 /etc/hosts 中有:
127.0.0.1 localhost
127.0.1.1 your-hostname
HDFS 数据目录不要放在 root 下:
sudo mkdir -p /data/hadoop
sudo chown -R $USER:$USER /data/hadoop
hadoop jar example.jar WordCount input output
yarn logs -applicationId application_xxxx
在 hadoop-env.sh 中加入:
export HADOOP_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"
然后用 IntelliJ / Eclipse 连接 5005 端口。
✅ 先看 日志
✅ 再查 配置
✅ 再查 Java / SSH / 主机名
✅ 最后考虑 版本兼容性
如果你愿意,可以告诉我:
我可以帮你 精确定位问题。