Author: ddas Date: Mon Jan 14 02:56:35 2008 New Revision: 611760 URL: http://svn.apache.org/viewvc?rev=611760&view=rev Log: HADOOP-2570. "work" directory created unconditionally, and symlinks created from the task cwds. Contributed by Arun Murthy and Amareshwari Sri Ramadasu.
Modified: lucene/hadoop/trunk/CHANGES.txt lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java Modified: lucene/hadoop/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/CHANGES.txt?rev=611760&r1=611759&r2=611760&view=diff ============================================================================== --- lucene/hadoop/trunk/CHANGES.txt (original) +++ lucene/hadoop/trunk/CHANGES.txt Mon Jan 14 02:56:35 2008 @@ -443,6 +443,9 @@ HADOOP-2540. fsck reports missing blocks incorrectly. (dhruba) + HADOOP-2570. "work" directory created unconditionally, and symlinks + created from the task cwds. + Release 0.15.2 - 2008-01-02 BUG FIXES Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java?rev=611760&r1=611759&r2=611760&view=diff ============================================================================== --- lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java (original) +++ lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java Mon Jan 14 02:56:35 2008 @@ -655,6 +655,17 @@ } fs.copyToLocalFile(new Path(jobFile), localJobFile); JobConf localJobConf = new JobConf(localJobFile); + + // create the 'work' directory + File workDir = new File(new File(localJobFile.toString()).getParent(), + "work"); + if (!workDir.mkdirs()) { + if (!workDir.isDirectory()) { + throw new IOException("Mkdirs failed to create " + workDir.toString()); + } + } + + // unjar the job.jar files in workdir String jarFile = localJobConf.getJar(); if (jarFile != null) { localJarFile = new Path(jobDir,"job.jar"); @@ -667,15 +678,6 @@ out.close(); } - // also unjar the job.jar files in workdir - File workDir = new File( - new File(localJobFile.toString()).getParent(), - "work"); - if (!workDir.mkdirs()) { - if (!workDir.isDirectory()) { - throw new IOException("Mkdirs failed to create " + workDir.toString()); - } - } RunJar.unJar(new File(localJarFile.toString()), workDir); } rjob.keepJobFiles = ((localJobConf.getKeepTaskFilesPattern() != null) || @@ -1391,6 +1393,20 @@ Path.SEPARATOR + task.getJobId() + Path.SEPARATOR + task.getTaskId()), defaultJobConf ); FileSystem localFs = FileSystem.getLocal(fConf); + + // create symlink for ../work if it already doesnt exist + String workDir = lDirAlloc.getLocalPathToRead( + TaskTracker.getJobCacheSubdir() + + Path.SEPARATOR + task.getJobId() + + Path.SEPARATOR + + "work", defaultJobConf).toString(); + String link = localTaskDir.getParent().toString() + + Path.SEPARATOR + "work"; + File flink = new File(link); + if (!flink.exists()) + FileUtil.symLink(workDir, link); + + // create the working-directory of the task if (!localFs.mkdirs(localTaskDir)) { throw new IOException("Mkdirs failed to create " + localTaskDir.toString()); }