Mark, The property mapred.local.dir is what you are looking for. It takes a path or a list of comma-separated paths of local FS that maps and reduces may use as intermediate storage directories.
So you may set "mapred.local.dir" to "/path/to/ephemeral/disk/mount/mapred/local" (or multiple comma separated points if you have multiple disk mounts). Hope this helps. On Tue, May 22, 2012 at 6:58 PM, Mark Kerzner <mark.kerz...@shmsoft.com> wrote: > Hi, > > I am using a Hadoop cluster of my own construction on EC2, and I am running > out of hard drive space with maps. If I knew which directories are used by > Hadoop for map spill, I could use the large ephemeral drive on EC2 machines > for that. Otherwise, I would have to keep increasing my available hard > drive on root, and that's not very smart. > > Thank you. The error I get is below. > > Sincerely, > Mark > > > > org.apache.hadoop.util.DiskChecker$DiskErrorException: Could not find > any valid local directory for output/file.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.getOutputFileForWrite(MapOutputFile.java:69) > at > org.apache.hadoop.mapred.MapTask$MapOutputBuffer.mergeParts(MapTask.java:1495) > at > org.apache.hadoop.mapred.MapTask$MapOutputBuffer.flush(MapTask.java:1180) > at > org.apache.hadoop.mapred.MapTask$NewOutputCollector.close(MapTask.java:582) > at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:649) > at org.apache.hadoop.mapred.MapTask.run(MapTask.java:323) > at org.apache.hadoop.mapred.Child$4.run(Child.java:270) > at java.security.AccessController.doPrivileged(Native Method) > at javax.security.auth.Subject.doAs > java.io.IOException: Spill failed > at > org.apache.hadoop.mapred.MapTask$MapOutputBuffer.collect(MapTask.java:886) > at > org.apache.hadoop.mapred.MapTask$NewOutputCollector.write(MapTask.java:574) > at > org.apache.hadoop.mapreduce.TaskInputOutputContext.write(TaskInputOutputContext.java:80) > at > org.freeeed.main.ZipFileProcessor.emitAsMap(ZipFileProcessor.java:279) > at > org.freeeed.main.ZipFileProcessor.processWithTrueZip(ZipFileProcessor.java:107) > at org.freeeed.main.ZipFileProcessor.process(ZipFileProcessor.java:55) > at org.freeeed.main.Map.map(Map.java:70) > at org.freeeed.main.Map.map(Map.java:24) > at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144) > at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:647) > at org.apache.hadoop.mapred.MapTask.run(MapTask.java:323) > at org.apache.hadoop.mapred.Child$4.run(Child.java:270) > at java.security.AccessController.doPrivileged(Native Method) > at javax.security.auth.Subject.doAs(Subject.java:415) > at org.apache.hadoop.security.UserGroupInformation.doAs(User > java.io.IOException: Spill failed > at > org.apache.hadoop.mapred.MapTask$MapOutputBuffer.collect(MapTask.java:886) > at > org.apache.hadoop.mapred.MapTask$NewOutputCollector.write(MapTask.java:574) > at > org.apache.hadoop.mapreduce.TaskInputOutputContext.write(TaskInputOutputContext.java:80) > at > org.freeeed.main.ZipFileProcessor.emitAsMap(ZipFileProcessor.java:279) > at > org.freeeed.main.ZipFileProcessor.processWithTrueZip(ZipFileProcessor.java:107) > at org.freeeed.main.ZipFileProcessor.process(ZipFileProcessor.java:55) > at org.freeeed.main.Map.map(Map.java:70) > at org.freeeed.main.Map.map(Map.java:24) > at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144) > at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:647) > at org.apache.hadoop.mapred.MapTask.run(MapTask.java:323) > at org.apache.hadoop.mapred.Child$4.run(Child.java:270) > at java.security.AccessController.doPrivileged(Native Method) > at javax.security.auth.Subject.doAs(Subject.java:415) > at org.apache.hadoop.security.UserGroupInformation.doAs(User > org.apache.hadoop.io.SecureIOUtils$AlreadyExistsException: EEXIST: File exists > at > org.apache.hadoop.io.SecureIOUtils.createForWrite(SecureIOUtils.java:178) > at org.apache.hadoop.mapred.TaskLog.writeToIndexFile(TaskLog.java:292) > at org.apache.hadoop.mapred.TaskLog.syncLogs(TaskLog.java:365) > at org.apache.hadoop.mapred.Child$4.run(Child.java:272) > at java.security.AccessController.doPrivileged(Native Method) > at javax.security.auth.Subject.doAs(Subject.java:415) > at > org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1157) > at org.apache.hadoop.mapred.Child.main(Child.java:264) > Caused by: EEXIST: File exists > at org.apache.hadoop.io.nativeio.NativeIO.open(Native Method) > at > org.apache.hadoop.io.SecureIOUtils.createForWrite(SecureIOUtils.java:172) > ... 7 more -- Harsh J