溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Hadoop運行時遇到j(luò)ava.io.FileNotFoundException錯誤怎么解決

發(fā)布時間:2021-06-21 09:02:37 來源:億速云 閱讀:1009 作者:chen 欄目:開發(fā)技術(shù)

這篇文章主要介紹“Hadoop運行時遇到j(luò)ava.io.FileNotFoundException錯誤怎么解決”,在日常操作中,相信很多人在Hadoop運行時遇到j(luò)ava.io.FileNotFoundException錯誤怎么解決問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Hadoop運行時遇到j(luò)ava.io.FileNotFoundException錯誤怎么解決”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

報錯信息:

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的過程失敗了,錯誤發(fā)生在error in shuffle in localfetcher#1,是因為找不到在tmp/hadoop-username目錄下的一個文件導(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

到具體目錄看果然找不到這個文件,問題就出在這個%20其實是空格,但是這里不允許出現(xiàn)空格。所以我們要修改用戶名稱才能解決這個問題。
雖然之前在hadoop-env.cmd這個文件中修改了,用雙引號的方式可以不出現(xiàn)空格可以讓hadoop正常啟動,但是治標(biāo)不治本啊。還是修改一下用戶名,改了以后這個就還是用username就可以。

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

修改username的方法:

1、【win】+【R】快捷鍵調(diào)出運行;

2、輸入netplwiz,再點擊確定;

Hadoop運行時遇到j(luò)ava.io.FileNotFoundException錯誤怎么解決  

3、打開用戶賬戶,雙擊;   

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

5、點擊右下角的【確定】按鈕之后,彈出警告,點擊【是】即可。

6、重啟電腦。(一定要重啟)

重新啟動,發(fā)現(xiàn)新上傳的這里也改了。

Hadoop運行時遇到j(luò)ava.io.FileNotFoundException錯誤怎么解決

到此,關(guān)于“Hadoop運行時遇到j(luò)ava.io.FileNotFoundException錯誤怎么解決”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI