经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 大数据/云/AI » Hadoop » 查看文章
Hadoop运行时遇到java.io.FileNotFoundException错误的解决方法
来源:jb51  时间:2021/6/21 9:36:27  对本文有异议

报错信息:

  1. java.lang.Exception: org.apache.hadoop.mapreduce.task.reduce.Shuffle$ShuffleError: error in shuffle in localfetcher#1
  2. at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:462)
  3. at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:529)
  4. Caused by: org.apache.hadoop.mapreduce.task.reduce.Shuffle$ShuffleError: error in shuffle in localfetcher#1
  5. at org.apache.hadoop.mapreduce.task.reduce.Shuffle.run(Shuffle.java:134)
  6. at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:376)
  7. at org.apache.hadoop.mapred.LocalJobRunner$Job$ReduceTaskRunnable.run(LocalJobRunner.java:319)
  8. at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
  9. at java.util.concurrent.FutureTask.run(Unknown Source)
  10. at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
  11. at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
  12. at java.lang.Thread.run(Unknown Source)
  13. Caused by: java.io.FileNotFoundException: G:/tmp/hadoop-Ferdinand%20Wang/mapred/local/localRunner/Ferdinand%20Wang/jobcache/job_local938878567_0001/attempt_local938878567_0001_m_000000_0/output/file.out.index
  14. at org.apache.hadoop.fs.RawLocalFileSystem.open(RawLocalFileSystem.java:198)
  15. at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:766)
  16. at org.apache.hadoop.io.SecureIOUtils.openFSDataInputStream(SecureIOUtils.java:156)
  17. at org.apache.hadoop.mapred.SpillRecord.<init>(SpillRecord.java:70)
  18. at org.apache.hadoop.mapred.SpillRecord.<init>(SpillRecord.java:62)
  19. at org.apache.hadoop.mapred.SpillRecord.<init>(SpillRecord.java:57)
  20. at org.apache.hadoop.mapreduce.task.reduce.LocalFetcher.copyMapOutput(LocalFetcher.java:124)
  21. at org.apache.hadoop.mapreduce.task.reduce.LocalFetcher.doCopy(LocalFetcher.java:102)
  22. at org.apache.hadoop.mapreduce.task.reduce.LocalFetcher.run(LocalFetcher.java:85)

大概是说,reduce的过程失败了,错误发生在error in shuffle in localfetcher#1,是因为找不到在tmp/hadoop-username目录下的一个文件导致。

原因:

电脑用户名含有空格

  1. G:/tmp/hadoop-Ferdinand%20Wang/mapred/local/localRunner/Ferdinand%20Wang/jobcache/job_local938878567_0001/attempt_local938878567_0001_m_000000_0/output/file.out.index

到具体目录看果然找不到这个文件,问题就出在这个%20其实是空格,但是这里不允许出现空格。所以我们要修改用户名称才能解决这个问题。
虽然之前在hadoop-env.cmd这个文件中修改了,用双引号的方式可以不出现空格可以让hadoop正常启动,但是治标不治本啊。还是修改一下用户名,改了以后这个就还是用username就可以。

  1. @rem A string representing this instance of hadoop. %USERNAME% by default.
  2. set HADOOP_IDENT_STRING=%USERNAME%

修改username的方法:

1、【win】+【R】快捷键调出运行;

2、输入netplwiz,再点击确定;

在这里插入图片描述  

3、打开用户账户,双击;   

4、输入您想要改的名字;

5、点击右下角的【确定】按钮之后,弹出警告,点击【是】即可。

6、重启电脑。(一定要重启)

重新启动,发现新上传的这里也改了。

在这里插入图片描述

到此这篇关于Hadoop运行时遇到java.io.FileNotFoundException错误的解决方法的文章就介绍到这了,更多相关Hadoop运行错误内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号