Hadoop実行Job時報DiskChecker$DiskErrorException異常原因
1863 ワード
バージョン:
問題の説明:
HadoopがMRを実行するときに投げる.apache.hadoop.util.DiskChecker$DiskErrorException異常、詳細は以下の通りです.
問題の原因:
実行org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathForWrite(...)ディスク容量不足で放出異常
解決方法:
1.ユーザーロゴを探してそのjobが占める空間が大きいことを見る
2.このjobが実行済みであれば直接rm-rfでよい
最終的なソリューション:
hadoopがユーザーログを保持する時間を変更し、mapred-siteを変更します.xmlのmapred.userlog.retain.hours
$ hadoop version
Hadoop 0.20.2-cdh3u4
Subversion git://ubuntu-slave01/var/lib/jenkins/workspace/CDH3u4-Full-RC/build/cdh3/hadoop20/0.20.2-cdh3u4/source -r 214dd731e3bdb687cb55988d3f47dd9e248c5690
Compiled by jenkins on Mon May 7 13:01:39 PDT 2012
From source with checksum a60c9795e41a3248b212344fb131c12c
問題の説明:
HadoopがMRを実行するときに投げる.apache.hadoop.util.DiskChecker$DiskErrorException異常、詳細は以下の通りです.
org.apache.hadoop.util.DiskChecker$DiskErrorException: Could not find any valid local directory for output/map_4.out
at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathForWrite(LocalDirAllocator.java:376)
at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:146)
at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:127)
at org.apache.hadoop.mapred.MapOutputFile.getInputFileForWrite(MapOutputFile.java:176)
at org.apache.hadoop.mapred.ReduceTask$ReduceCopier.createKVIterator(ReduceTask.java:2374)
at org.apache.hadoop.mapred.ReduceTask$ReduceCopier.access$400(ReduceTask.java:582)
問題の原因:
実行org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathForWrite(...)ディスク容量不足で放出異常
解決方法:
1.ユーザーロゴを探してそのjobが占める空間が大きいことを見る
du -m --max-depth=1 /yourpath/mapred/local/userlogs | sort -n
2.このjobが実行済みであれば直接rm-rfでよい
最終的なソリューション:
hadoopがユーザーログを保持する時間を変更し、mapred-siteを変更します.xmlのmapred.userlog.retain.hours
<property>
<name>mapred.userlog.retain.hours</name>
<value>10</value>
</property>