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

为什么Hadoop无法创建目录?IntelliJ运行MapReduce WordCount报错

问题排查步骤与解决方案

核心问题定位

1. 依赖版本冲突

你当前的POM文件同时引入了跨大版本的Hadoop依赖:

  • 已废弃的Hadoop 1.x版本组件hadoop-core 1.2.1
  • Hadoop 3.x版本组件hadoop-client 3.3.1、hadoop-common 3.3.1
    跨版本类实现不一致会直接触发运行时调用异常,是报错的核心诱因之一。

2. Windows本地运行Hadoop适配缺失

报错码-1073741701是Windows系统下运行Hadoop的典型异常:Hadoop默认基于Linux Shell实现目录创建、权限设置操作,Windows环境缺少对应版本的适配二进制文件时,即使手动设置了文件夹完全控制权限,RawLocalFileSystem的系统调用依然会失败。


解决方案

第一步:修复POM依赖

删除POM中如下废弃的hadoop-core依赖块:

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-core</artifactId>
    <version>1.2.1</version>
</dependency>

仅保留3.3.1版本的hadoop-client和hadoop-common即可,hadoop-client已经包含了MapReduce运行所需的全部核心依赖,无需重复引入。

第二步:配置Windows Hadoop适配文件

  1. 下载和依赖版本一致的3.3.1版本Hadoop Windows适配包,解压到本地无中文、无空格的路径下,例如D:\hadoop-3.3.1
  2. 配置系统环境变量:
    • 新建HADOOP_HOME变量,值为上述解压路径
    • 将%HADOOP_HOME%\bin添加到系统Path变量中
  3. 将%HADOOP_HOME%\bin目录下的hadoop.dll文件复制到C:\Windows\System32目录,避免运行时动态链接库调用缺失。

第三步:代码层适配本地调试(可选)

在WordCount主类的main方法最开头添加如下配置,关闭本地文件系统权限校验:

Configuration conf = new Configuration();
conf.set("fs.file.impl", org.apache.hadoop.fs.LocalFileSystem.class.getName());
conf.set("hadoop.security.authentication", "simple");
System.setProperty("HADOOP_USER_NAME", "root");

第四步:运行前检查

每次启动程序前确认你指定的输出目录不存在,MapReduce默认不允许覆盖已存在的输出目录,会直接触发运行失败。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:54:04