这是一篇记录在 WSL 环境下搭建 Spark 调试环境时遇到的问题及其解决方法的博客,方便日后排雷复用。
Bug 1:用户权限问题
启动 Hadoop 时出现错误:
ERROR: namenode can only be executed by root.
排查后发现,start-dfs.sh 脚本中对执行用户有限制(如下图),当前用户非 root 时会报错:

解决方法:
- 使用 root 用户执行启动脚本,或
- 修改
start-dfs.sh中的用户校验(仅建议在开发环境使用)
Bug 2:SSH 无密码登录失败
报错信息:
localhost: zhj20@localhost: Permission denied (publickey,password)
说明 SSH 无密码登录未配置,Hadoop 启动过程中的内部通信失败。
解决步骤:
生成 SSH 密钥(若无)
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa配置公钥认证
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys验证是否能免密登录
ssh localhost
成功后应自动登录,无需输入密码,exit 退出即可。
Bug 3:YARN 节点列表为空
执行 yarn node -list 时无任何节点。
排查方向:
- 确认 ResourceManager 和 NodeManager 是否都已启动(
jps查看) - 检查
yarn-site.xml配置是否正确 - 查看日志文件是否有网络连接/端口异常
Bug 4:NameNode 启动失败(EditLog 异常)
There appears to be a gap in the edit log. We expected txid 1, but got txid 113.
原因分析:
- Hadoop 恢复 fsimage + editlog 时发现 txid 序号不连续,editlog 可能损坏或缺失。
解决方案(无重要数据时):
hdfs namenode -format
./sbin/start-dfs.sh
注意:此操作会清空 HDFS 中的所有数据,仅建议在调试或开发环境中使用!
Bug 5:DataNode 启动失败,无法写入副本
错误信息:
File ... could only be written to 0 of the 1 minReplication nodes. There are 0 datanode(s) running
排查配置:
cat $HADOOP_HOME/etc/hadoop/hdfs-site.xml | grep -A 5 dfs.datanode.data.dir
日志提示:
Incompatible clusterIDs
namenode clusterID = CID-018939f5...
datanode clusterID = CID-659a4b77...
说明 DataNode 保存的 clusterID 与 NameNode 不一致。
解决办法:
# 停止 Hadoop
./sbin/stop-dfs.sh
# 清除 DataNode 数据(不要删 NameNode 数据!)
rm -rf /opt/module/hadoop-3.4.1/hadoop_data/hdfs/datanode/*
# 重启
./sbin/start-dfs.sh
# 查看是否正常启动
jps