Windows10运行Hadoop3.1.0 Reduce阶段遇FileNotFoundException求助
解决Windows 10上Hadoop 3.1.0 Shuffle阶段文件找不到的问题
从你的报错日志里能一眼揪出核心问题:用户名里的空格被转义成%20,导致Hadoop找不到实际存在的本地文件。你的用户名是king lui包含空格,Hadoop生成临时文件路径时自动把空格转成了%20,但本地文件系统里的路径是带真实空格的,两边路径不匹配自然就触发了FileNotFoundException。
你试过删除tmp文件夹和添加配置没解决,大概率是没彻底避开带空格的路径,下面给你针对性的解决步骤:
修改Hadoop核心配置,指定无空格的临时目录
找到Hadoop安装目录下的etc/hadoop文件夹,编辑core-site.xml,添加或修改以下配置:<property> <name>hadoop.tmp.dir</name> <value>D:/hadoop-tmp</value> <!-- 换成你自己的无空格路径,用正斜杠或双反斜杠 --> <description>A base for other temporary directories.</description> </property>接着编辑
mapred-site.xml,补充配置:<property> <name>mapreduce.cluster.local.dir</name> <value>D:/hadoop-tmp/mapred-local</value> <!-- 同样指定无空格路径 --> </property>重新格式化HDFS并重启服务
- 先停止所有已启动的Hadoop服务:
stop-all.cmd - 执行HDFS格式化命令:
hdfs namenode -format - 重新启动Hadoop服务:
start-all.cmd
- 先停止所有已启动的Hadoop服务:
彻底清理旧的临时文件
手动删除C盘里那个带转义字符的临时目录C:/tmp/hadoop-king%20lui,确保没有残留的旧文件干扰新配置。验证配置生效
启动服务后,检查你指定的D:/hadoop-tmp目录是否被正确创建,里面的子目录路径应该没有%20这类转义字符,都是正常的无空格路径格式。
完成这些步骤后,再重新运行你的入门示例代码,应该就能解决这个Shuffle阶段的文件找不到问题了。Windows下运行Hadoop特别要注意路径里的空格和特殊字符,尽量用简洁无空格的目录和用户名,能避免很多类似的坑。
内容的提问来源于stack exchange,提问作者luifire
相关产品推荐
相关产品推荐

