Debian 上安装 Hadoop 失败的高效排查与修复
一 快速自检清单
- 确认 Java 版本为 JDK 8(推荐),执行:java -version;Debian 可用:sudo apt-get install openjdk-8-jdk。
- 核对环境变量:在 ~/.bashrc 或 /etc/profile 中正确设置 JAVA_HOME、HADOOP_HOME、PATH,示例:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
执行 source 使其生效。
- 配置 SSH 免密登录(本机回环与集群节点):ssh-keygen 生成密钥,ssh-copy-id 到各节点;若自定义 SSH 端口,需在 hadoop-env.sh 设置:export HADOOP_SSH_OPTS=“-p 你的端口”。
- 修正 /etc/hosts 主机名解析,确保 localhost 与主机名 正确映射,避免 UnknownHostException。
- 首次启动前执行 hdfs namenode -format;启动脚本用 start-dfs.sh / start-yarn.sh。
- 用 jps 检查进程,访问 HDFS Web UI 与 YARN Web UI 验证状态。
二 常见故障与修复
- 端口被占用:用 netstat -tulnp | grep 端口 查找占用进程并停止或调整 Hadoop 配置端口。
- 多次格式化导致 DataNode 与 NameNode clusterID 不一致:对比并统一 $dfs.datanode.data.dir/current/VERSION 中的 clusterID,或清理 dfs/data、dfs/name、logs、tmp 后重新格式化。
- 权限不足:确保 Hadoop 目录与数据目录对运行用户可写,必要时 chown/chmod,避免使用 root 运行(生产建议专用 hadoop 用户)。
- SSH 连接失败:检查端口、密钥与 /etc/hosts;自定义端口需在 hadoop-env.sh 设置 HADOOP_SSH_OPTS。
- 配置文件错误:核对 core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 的标签闭合、路径与端口;伪分布式可将 dfs.replication 设为 1。
- Java 版本不兼容:部分 Hadoop 版本与 JDK 9+ 存在反射等兼容性问题,优先使用 JDK 8。
三 最小可用配置示例
- core-site.xml
fs.defaultFShdfs://localhost:9000
- hdfs-site.xml
dfs.replication1
dfs.namenode.name.dir/usr/local/hadoop/dfs/name
dfs.datanode.data.dir/usr/local/hadoop/dfs/data
- mapred-site.xml
mapreduce.framework.nameyarn
- yarn-site.xml
yarn.nodemanager.aux-servicesmapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.classorg.apache.hadoop.mapred.ShuffleHandler
- hadoop-env.sh(按需)
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
若 SSH 端口非 22:export HADOOP_SSH_OPTS=“-p 你的端口”
四 验证与进一步测试
- 启动与进程检查:start-dfs.sh、start-yarn.sh;jps 应看到 NameNode、DataNode、ResourceManager、NodeManager 等进程。
- HDFS 基础操作:
hdfs dfs -mkdir -p /user/hadoop
hdfs dfs -ls /
- 运行示例任务:
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /user/hadoop/input /user/hadoop/output
hdfs dfs -cat /user/hadoop/output/part-r-00000
- Web UI:访问 NameNode Web UI(50070/9870) 与 YARN Web UI(8088) 查看集群状态。
五 仍未解决时的定位方法
- 查看 $HADOOP_HOME/logs 下对应进程的 .log/.out 文件,定位首次报错行与堆栈。
- 清理并重新初始化:停止集群,备份后删除 logs、tmp、dfs/name、dfs/data,再执行 hdfs namenode -format 并启动。
- 复核 /etc/hosts、SSH、端口占用、环境变量 与 XML 配置;必要时用精简配置逐步排除。
- 确认 版本兼容(如 Hadoop 3.x 与 JDK 8),并参考官方文档与社区讨论。