Hadoop org.apache.hadoop.util.DiskChecker$DiskErrorException問題等價解決linux磁碟不足解決問題排查

DengSchoo發表於2021-12-09

org.apache.hadoop.util.DiskChecker$DiskErrorException問題等價解決linux磁碟不足解決問題排查

解決“/dev/mapper/centos-root 100%”滿了, org.apache.hadoop.util.DiskChecker$DiskErrorException Could not find any valid local directory for....

錯誤資訊:如下所示

2021-12-09 00:40:58,559 INFO mapreduce.Job: Task Id : attempt_1638980473129_0001_m_000000_0, Status : FAILED
Error: org.apache.hadoop.util.DiskChecker$DiskErrorException: Could not find any valid local directory for output/attempt_1638980473129_0001_m_000000_0/file.out
        at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathForWrite(LocalDirAllocator.java:447)
        at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:152)
        at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:133)
        at org.apache.hadoop.mapred.YarnOutputFiles.getOutputFileForWrite(YarnOutputFiles.java:82)
        at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.mergeParts(MapTask.java:1881)
        at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.flush(MapTask.java:1527)
        at org.apache.hadoop.mapred.MapTask$NewOutputCollector.close(MapTask.java:735)
        at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:805)
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:347)
        at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:174)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:422)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1729)
        at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:168)

搜了很多教程發現要麼說的不是一個具體錯誤,要麼沒有用。最後發現確實是因為虛擬機器沒有空間再去輸出中間檔案了。網上如果說需要修改各模組tmp檔案路徑的也是有道理的,因為預設會存到/tmp下,這個再虛擬機器分配的時候可能會很小。

排查思路 記住df -h這個命令不斷的查下去 查到存快取的路徑為止:

cd /

sudo du -h -x --max-depth=1:查這層資料夾各自總大小

image-20211209011401440

可以看到這裡的/opt有37G大小已經不對勁了,而我的hadoop是裝在這個opt下的,所以繼續安裝上述深入:

最終定位到:/opt/module/hadoop-3.1.3/data/nm-local-dir/usercache/hadoop/appcache/application_1638980473129_0001

這個資料夾下佔了幾十個G的目錄:ls檢視一下。。。。。結果。。。

image-20211209010916248

rm -rf * 命令清除當前目錄下的所有out檔案即可。如果有叢集的話也要清理一下。

image-20211209011707371

image-20211209011738980

舒服了。。

相關文章