MiniMRCluster does not utilize multiple local directories in "mapred.local.dir"
-------------------------------------------------------------------------------

                 Key: HADOOP-2462
                 URL: https://issues.apache.org/jira/browse/HADOOP-2462
             Project: Hadoop
          Issue Type: Bug
          Components: test
    Affects Versions: 0.15.0
            Reporter: Konstantin Shvachko
             Fix For: 0.16.0


My hadoop-site.xml specifies 4 local directories
{code}
<property>
  <name>mapred.local.dir</name>
  <value>${hadoop.tmp.dir}/mapred/local1, ${hadoop.tmp.dir}/mapred/local2, 
         ${hadoop.tmp.dir}/mapred/local3, 
${hadoop.tmp.dir}/mapred/local4</value>
</property>
{code}
and I am looking at MiniMRCluster.TaskTrackerRunner

There are several things here:
# localDirBase value is set to
{code}
"/tmp/h/mapred/local1, /tmp/h/mapred/local2, /tmp/h/mapred/local3, 
/tmp/h/mapred/local4"
{code}
and I get a hierarchy of directories with commas and spaces in the names. 
I think this was not designed to work with multiple dirs.
# Further down, all new directories are generated with the same name
{code}
        File ttDir = new File(localDirBase, 
                              Integer.toString(trackerId) + "_" + 0);
{code}
So in fact only one directory is created. I think the intension was to have i 
instead of 0
{code}
        File ttDir = new File(localDirBase, 
                              Integer.toString(trackerId) + "_" + i);
{code}
# On windows MiniMRCluster.TaskTrackerRunner in this case throws an 
IOException, 
which is silently ignored by all but the TestMiniMRMapRedDebugScript   MiniMR 
tests.
{code}
java.io.IOException: Mkdirs failed to create 
/tmp/h/mapred/local1, /tmp/h/mapred/local2, /tmp/h/mapred/local3, 
/tmp/h/mapred/local4/0_0
        at 
org.apache.hadoop.mapred.MiniMRCluster$TaskTrackerRunner.<init>(MiniMRCluster.java:124)
        at org.apache.hadoop.mapred.MiniMRCluster.<init>(MiniMRCluster.java:293)
        at org.apache.hadoop.mapred.MiniMRCluster.<init>(MiniMRCluster.java:244)
        at 
org.apache.hadoop.mapred.TestMiniMRClasspath.testClassPath(TestMiniMRClasspath.java:163)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at junit.framework.TestCase.runTest(TestCase.java:154)
        at junit.framework.TestCase.runBare(TestCase.java:127)
        at junit.framework.TestResult$1.protect(TestResult.java:106)
        at junit.framework.TestResult.runProtected(TestResult.java:124)
        at junit.framework.TestResult.run(TestResult.java:109)
        at junit.framework.TestCase.run(TestCase.java:118)
        at junit.framework.TestSuite.runTest(TestSuite.java:208)
        at junit.framework.TestSuite.run(TestSuite.java:203)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
{code}

I am marking it as "Major" because we actually do not test multiple local 
directories.
Looks like it was introduced rather recently by HADOOP-1819.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to