Hadoop運(yùn)行時(shí)遇到j(luò)ava.io.FileNotFoundException錯(cuò)誤的解決方法
報(bào)錯(cuò)信息:
java.lang.Exception: org.apache.hadoop.mapreduce.task.reduce.Shuffle$ShuffleError: error in shuffle in localfetcher#1
at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:462)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:529)
Caused by: org.apache.hadoop.mapreduce.task.reduce.Shuffle$ShuffleError: error in shuffle in localfetcher#1
at org.apache.hadoop.mapreduce.task.reduce.Shuffle.run(Shuffle.java:134)
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:376)
at org.apache.hadoop.mapred.LocalJobRunner$Job$ReduceTaskRunnable.run(LocalJobRunner.java:319)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
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
at org.apache.hadoop.fs.RawLocalFileSystem.open(RawLocalFileSystem.java:198)
at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:766)
at org.apache.hadoop.io.SecureIOUtils.openFSDataInputStream(SecureIOUtils.java:156)
at org.apache.hadoop.mapred.SpillRecord.<init>(SpillRecord.java:70)
at org.apache.hadoop.mapred.SpillRecord.<init>(SpillRecord.java:62)
at org.apache.hadoop.mapred.SpillRecord.<init>(SpillRecord.java:57)
at org.apache.hadoop.mapreduce.task.reduce.LocalFetcher.copyMapOutput(LocalFetcher.java:124)
at org.apache.hadoop.mapreduce.task.reduce.LocalFetcher.doCopy(LocalFetcher.java:102)
at org.apache.hadoop.mapreduce.task.reduce.LocalFetcher.run(LocalFetcher.java:85)
大概是說,reduce的過程失敗了,錯(cuò)誤發(fā)生在error in shuffle in localfetcher#1,是因?yàn)檎也坏皆趖mp/hadoop-username目錄下的一個(gè)文件導(dǎo)致。
原因:
電腦用戶名含有空格
G:/tmp/hadoop-Ferdinand%20Wang/mapred/local/localRunner/Ferdinand%20Wang/jobcache/job_local938878567_0001/attempt_local938878567_0001_m_000000_0/output/file.out.index
到具體目錄看果然找不到這個(gè)文件,問題就出在這個(gè)%20其實(shí)是空格,但是這里不允許出現(xiàn)空格。所以我們要修改用戶名稱才能解決這個(gè)問題。
雖然之前在hadoop-env.cmd這個(gè)文件中修改了,用雙引號的方式可以不出現(xiàn)空格可以讓hadoop正常啟動(dòng),但是治標(biāo)不治本啊。還是修改一下用戶名,改了以后這個(gè)就還是用username就可以。
@rem A string representing this instance of hadoop. %USERNAME% by default. set HADOOP_IDENT_STRING=%USERNAME%
修改username的方法:
1、【win】+【R】快捷鍵調(diào)出運(yùn)行;
2、輸入netplwiz,再點(diǎn)擊確定;
3、打開用戶賬戶,雙擊;
4、輸入您想要改的名字;
5、點(diǎn)擊右下角的【確定】按鈕之后,彈出警告,點(diǎn)擊【是】即可。
6、重啟電腦。(一定要重啟)
重新啟動(dòng),發(fā)現(xiàn)新上傳的這里也改了。

到此這篇關(guān)于Hadoop運(yùn)行時(shí)遇到j(luò)ava.io.FileNotFoundException錯(cuò)誤的解決方法的文章就介紹到這了,更多相關(guān)Hadoop運(yùn)行錯(cuò)誤內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java function函數(shù)式接口的使用方法與實(shí)例
這篇文章主要介紹了Java function函數(shù)式接口的使用方法與實(shí)例,函數(shù)式接口如一支未完成的詩篇,用Lambda表達(dá)式作韻腳,將代碼的機(jī)械美感與藝術(shù)的抽象融為一體,悄然重構(gòu)了開發(fā)者對代碼之美的認(rèn)知,需要的朋友可以參考下2025-02-02
詳解mybatis如何實(shí)現(xiàn)進(jìn)行分表
在數(shù)據(jù)庫設(shè)計(jì)中,分表是一種常見的優(yōu)化策略,它可以將一個(gè)大表拆分成多個(gè)小表,以提高查詢性能和存儲效率,下面我們就來學(xué)習(xí)一下mybatis如何實(shí)現(xiàn)進(jìn)行分表吧2023-11-11
單臺Spring Cloud Eureka升級到三臺Eureka高可用集群
今天小編就為大家分享一篇關(guān)于單臺Spring Cloud Eureka升級到三臺Eureka高可用集群,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12
SpringBoot應(yīng)用自定義logback日志詳解
默認(rèn)情況下,SpringBoot內(nèi)部使用logback作為系統(tǒng)日志實(shí)現(xiàn)的框架,將日志輸出到控制臺,不會(huì)寫到日志文件。本篇文章主要講解下如何自定義logabck.xml以及對logback文件中配置做一個(gè)詳解,需要的可以參考一下2022-10-10
Java+opencv3.2.0實(shí)現(xiàn)重映射
這篇文章主要為大家詳細(xì)介紹了Java+opencv3.2.0實(shí)現(xiàn)重映射的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02

