You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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并重启服务

    1. 先停止所有已启动的Hadoop服务:
      stop-all.cmd
      
    2. 执行HDFS格式化命令:
      hdfs namenode -format
      
    3. 重新启动Hadoop服务:
      start-all.cmd
      
  • 彻底清理旧的临时文件
    手动删除C盘里那个带转义字符的临时目录C:/tmp/hadoop-king%20lui,确保没有残留的旧文件干扰新配置。

  • 验证配置生效
    启动服务后,检查你指定的D:/hadoop-tmp目录是否被正确创建,里面的子目录路径应该没有%20这类转义字符,都是正常的无空格路径格式。

完成这些步骤后,再重新运行你的入门示例代码,应该就能解决这个Shuffle阶段的文件找不到问题了。Windows下运行Hadoop特别要注意路径里的空格和特殊字符,尽量用简洁无空格的目录和用户名,能避免很多类似的坑。

内容的提问来源于stack exchange,提问作者luifire

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:43:41