温馨提示×

如何调试linux hadoop

小樊
43
2026-08-13 13:34:52
栏目: 智能运维

调试 Linux 上的 Hadoop 通常分为 系统层面Hadoop 自身MapReduce / YARN 应用 三个层次。下面给你一套从入门到进阶的实用调试思路,结合常用命令和典型问题。


一、先确认基本环境(常见问题源头)

1. 检查 Java 环境

Hadoop 依赖 Java:

java -version
echo $JAVA_HOME

✅ 建议:

  • JAVA_HOME 必须设置
  • Hadoop 支持的 Java 版本要匹配(Hadoop 3.x 一般用 Java 8 / 11)

2. 检查 SSH 免密

尤其是伪分布式 / 完全分布式:

ssh localhost

否则:

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

二、Hadoop 启动与状态检查

1. 启动 Hadoop

start-dfs.sh
start-yarn.sh

或:

start-all.sh   # 老版本

2. 检查进程是否启动

jps

✅ 常见进程:

  • NameNode
  • DataNode
  • SecondaryNameNode
  • ResourceManager
  • NodeManager

❌ 缺进程 = 启动失败 → 看日志


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

1. 日志目录位置

默认在:

$HADOOP_HOME/logs/

或:

$HADOOP_LOG_DIR

常见文件:

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

2. 实时查看错误

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

关键词搜索:

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

四、HDFS 调试常用命令

1. 检查 HDFS 状态

hdfs dfsadmin -report

✅ 看:

  • Live datanodes
  • 磁盘使用情况

2. 检查 NameNode 是否 SafeMode

hdfs dfsadmin -safemode get

解除安全模式:

hdfs dfsadmin -safemode leave

3. 测试 HDFS 是否可用

hdfs dfs -ls /
hdfs dfs -mkdir /test
hdfs dfs -put file.txt /test

五、YARN / MapReduce 调试

1. 查看 YARN 状态

yarn node -list
yarn application -list

2. 查看失败任务

yarn logs -applicationId application_xxxx

或 Web UI:

  • ResourceManager:http://localhost:8088

3. 典型错误

  • Container killed by YARN for exceeding memory limits
  • ClassNotFoundException
  • FileNotFoundException

✅ 解决:

  • 调整 yarn-site.xml
  • 检查 jar 包依赖
  • 检查输入路径是否存在

六、配置文件排查(常见坑)

重点检查:

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

常见错误

  • fs.defaultFS 写错
  • namenode / datanode 目录权限不对
  • 主机名和 /etc/hosts 不一致

七、Linux 系统层面调试

1. 磁盘空间

df -h

2. 内存

free -h

3. 端口占用

netstat -tunlp | grep java

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

1. 给 NameNode / DataNode 添加调试参数

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

2. 用 IDEA / Eclipse 远程调试


九、推荐调试顺序(实用)

  1. jps 看进程
  2. 没有进程 → 查日志
  3. HDFS 不正常 → hdfs dfsadmin -report
  4. YARN 任务失败 → Web UI + logs
  5. 配置问题 → XML 文件 + hosts

十、你可以直接问我的具体问题

你可以直接贴出:

  • 报错日志(关键部分即可)
  • jps 输出
  • Hadoop 版本
  • 单机 / 伪分布式 / 完全分布式

我可以帮你 精确定位问题并给出修改方案

0