hadoop java.nio.channels.ClosedChannelException


今天在跑一個任務的時候,報錯java.nio.channels.ClosedChannelException。

 

INFO mapreduce.Job: Task Id : attempt_1521014335754_1262_r_000000_2, Status : FAILED
Error: java.nio.channels.ClosedChannelException
at org.apache.hadoop.hdfs.DataStreamer$LastExceptionInStreamer.throwException4Close(DataStreamer.java:324)
at org.apache.hadoop.hdfs.DFSOutputStream.checkClosed(DFSOutputStream.java:153)
at org.apache.hadoop.fs.FSOutputSummer.write(FSOutputSummer.java:105)
at org.apache.hadoop.fs.FSDataOutputStream$PositionCache.write(FSDataOutputStream.java:58)
at java.io.DataOutputStream.write(DataOutputStream.java:107)

報錯的位置在代碼context.write(outkey, outVal);這行。

原因是我該reducer的setup的時候,調用了HDFS文件系統去讀一個文件(雖然很少有這么用的),讀完之后,fs.close();

我在想,一個setup中關閉一個DHFS的FileSystem對象,盡然會影響到context.write();

//TODO 有空了看下源碼,找找什么情況之后再補充這個帖子。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM