Pivotal Knowledge Base

フォローする

Map Reduceジョブが “Could not find any valid local directory for output/attempt_xxxx_xxxx_m_x/file.out” というエラーで失敗する

事象

Map Reduceジョブが以下のエラーが表示され失敗する。

Error: org.apache.hadoop.util.DiskChecker$DiskErrorException: Could not find any valid local directory for output/attempt_1426272186088_184484_m_000232_4/file.out
	at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathForWrite(LocalDirAllocator.java:398)
	at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:150)
	at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:131)
	at org.apache.hadoop.mapred.YarnOutputFiles.getOutputFileForWrite(YarnOutputFiles.java:84)
	at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.mergeParts(MapTask.java:1820)
	at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.flush(MapTask.java:1489)
	at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:436)
	at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)

原因

実行中のMap Reduceタスクは、中間データをローカルディレクトリに格納しており、当該ディレクトリはmapred-site.xml内のパラメータ "mapreduce.cluster.local.dir"(非推奨の旧名: mapred.local.dir)で指定されている。

ジョブの処理中、map reduceフレームワークはmapreduce.cluster.local.dir パラメータで指定されているディレクトリを特定し、中間データを保存するために必要な空き領域があるか検証する。万が一、必要な空き領域がない場合は、map reduceジョブは失敗し、上記エラーが表示される。

解決策

1. データ処理要件に応じて、ローカルディレクトリに十分な空き領域を確保する。

2. ローカルディレクトリの当該領域消費を最小限に抑えるため、中間出力ファイルを圧縮しても良い。

コメント

Powered by Zendesk