Hadoop本地运行出现:Caused by: java.io.FileNotFoundException:D:/tmp/hadoop-win2010/mapred/local/

本文解决Hadoop本地运行时出现的文件未找到错误,通过更改配置文件core-site.xml中的临时文件存储目录,并在JVM参数中设置用户名,成功解决了因主机名包含空格引起的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

完美解决hadoop本地运行时出现:

Caused by: java.io.FileNotFoundException: D:/tmp/hadoop-win%2010/mapred/local/localRunner/root/jobcache/job_local384849921_0001/attempt_local384849921_0001_m_000000_0/output/file.out.index

意思是临时文件没找到,手动进入电脑目录下,目录确实为空,根本没有文件,猜想就是临时文件夹建立出现问题,

出现这个问题,网上说是电脑的名字有空格导致,但是修改了,运行程序还是这个问题,而且建立的文件夹还是用的之前的主机名

解决思路:参考在linux虚拟机上运行的hadoop的core-site.xml的配置文件,hadoop运行时需要指定临时的文件存储目录:

因此在代码中加入:    

Configuration conf = new Configuration();
      conf.set("hadoop.tmp.dir", "E:/hdfs_tmp_cache");  //指定hadoop运行时在本地的临时工作目录

 

然后在Run configurations 的jvm参数里设置:-DHADOOP_USER_NAME=root      这个root可以随便取名

在临时文件夹的目录里:

E:\hdfs_tmp_cache\mapred\local\localRunner\root              这里的root就是这个设置的用户名

### Java 文件找不到异常解决方案 当遇到 `java.io.FileNotFoundException` 异常时,通常是因为程序尝试访问不存在的文件或路径不正确。对于特定情况下的 `E:/IDEA/.idea` 路径问题,可以从以下几个方面考虑: #### 1. 配置文件加载方式调整 如果是在 Spring Boot 应用中读取配置文件或其他资源文件,建议采用更安全的方式获取输入流。使用相对路径而非绝对路径,并通过类加载器来定位资源位置。 ```java InputStream is = this.getClass().getResourceAsStream("/config/application.properties"); BufferedReader br = new BufferedReader(new InputStreamReader(is)); ``` 这种方式能够更好地适应不同环境中的路径差异[^1]。 #### 2. 设置自定义临时目录 如果是由于上传文件操作导致的临时文件夹被清理所引发的问题,则可以在应用程序启动时设置固定的临时存储位置,防止默认临时目录被操作系统定期删除影响应用正常工作。 ```java @Bean public MultipartConfigElement multipartConfigElement() { MultipartConfigFactory factory = new MultipartConfigFactory(); String tempLocation = "E:\\temp\\uploads"; // 自定义临时文件保存路径 File locationFile = new File(tempLocation); if (!locationFile.exists()) { locationFile.mkdirs(); } factory.setLocation(locationFile.getAbsolutePath()); return factory.createMultipartConfig(); } ``` 此方法适用于处理类似 Tomcat 容器内部产生的临时文件管理问题[^2]。 #### 3. 修改 Hadooptmp 目录配置 针对 Hadoop 运行过程中可能出现的此类错误,可以通过修改 hadoop-env.sh 或者 core-site.xml 中的相关参数重新指定临时数据存放的位置,确保该位置具有足够的权限供 Hadoop 正确写入所需的数据文件。 ```xml <property> <name>hadoop.tmp.dir</name> <value>/data/hadoop/tmp</value> </property> ``` 这有助于避免因为系统自带临时目录空间不足或者其他原因造成的文件无法创建的情况[^3]。 以上措施可以根据具体的应用场景选择合适的方法实施改进,从而有效减少甚至消除由 `FileNotFoundException` 所带来的困扰。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值