在cdh5版本的yarn上运行一个map-reduce任务结果报错,信息如下
2013-11-28 15:31:04,978 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch: Failed to launch container.
java.io.FileNotFoundException: File /home/username/src/cdh5/hadoop/hdfs/nm-local-dir/usercache/username/appcache/application_1385623655330_0001/container_1385623655330_0001_01_000001 does not existat org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:520)
at org.apache.hadoop.fs.FileSystem.primitiveMkdir(FileSystem.java:1048)
at org.apache.hadoop.fs.DelegateToFileSystem.mkdir(DelegateToFileSystem.java:150)
at org.apache.hadoop.fs.FilterFs.mkdir(FilterFs.java:187)
at org.apache.hadoop.fs.FileContext$4.next(FileContext.java:720)
at org.apache.hadoop.fs.FileContext$4.next(FileContext.java:716)
at org.apache.hadoop.fs.FSLinkResolver.resolve(FSLinkResolver.java:91)
at org.apache.hadoop.fs.FileContext.mkdir(FileContext.java:716)
at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.createDir(DefaultContainerExecutor.java:425)
at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:139)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:283)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:79)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
查看了nodemanager的日志发现在/tmp目录下有过相同路径和名字的文件
2013-11-28 15:31:05,240 INFO org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor: Deleting absolute path : /tmp/hadoop-username/nm-local-dir/usercache/username/appcache/application_1385623655330_0001/container_1385623655330_0001_01_000001
怀疑是配置不正确引起的,查看了apache官网上的core-site.xml发现property:hadoop.tmp.dir默认是配置在/tmp/hadoop-useranem下的
而我是按照0.20的配置把hadoop.tmp.dir这个参数配置在hdfs-site.xml中,但奇怪的是在apache官网上的hdfs-site.xml中没有发现hadoop.tmp.dir这个参数
于是拷贝了这个参数到core-site.xml中,运行能通过