From b8c74a8a25e950622964a5909e2169d174dc8f68 Mon Sep 17 00:00:00 2001 From: Hitesh Shah Date: Fri, 22 Mar 2013 19:11:01 +0000 Subject: [PATCH] MAPREDUCE-5083. MiniMRCluster should use a random component when creating an actual cluster. Contributed by Siddharth Seth. git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1459932 13f79535-47bb-0310-9956-ffa450edef68 --- hadoop-mapreduce-project/CHANGES.txt | 3 +++ .../hadoop/mapred/MiniMRClientClusterFactory.java | 13 +++++++++---- .../org/apache/hadoop/mapred/MiniMRCluster.java | 5 ++++- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/hadoop-mapreduce-project/CHANGES.txt b/hadoop-mapreduce-project/CHANGES.txt index 5bee7337582..771ea575828 100644 --- a/hadoop-mapreduce-project/CHANGES.txt +++ b/hadoop-mapreduce-project/CHANGES.txt @@ -250,6 +250,9 @@ Release 2.0.5-beta - UNRELEASED MAPREDUCE-3872. Fix an event handling races in ContainerLauncherImpl. (Robert Kanter via sseth) + MAPREDUCE-5083. MiniMRCluster should use a random component when creating an + actual cluster (Siddharth Seth via hitesh) + Release 2.0.4-alpha - UNRELEASED INCOMPATIBLE CHANGES diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/MiniMRClientClusterFactory.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/MiniMRClientClusterFactory.java index 99130ca331c..023da480822 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/MiniMRClientClusterFactory.java +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/MiniMRClientClusterFactory.java @@ -38,6 +38,11 @@ public class MiniMRClientClusterFactory { public static MiniMRClientCluster create(Class caller, int noOfNMs, Configuration conf) throws IOException { + return create(caller, caller.getSimpleName(), noOfNMs, conf); + } + + public static MiniMRClientCluster create(Class caller, String identifier, + int noOfNMs, Configuration conf) throws IOException { if (conf == null) { conf = new Configuration(); @@ -45,7 +50,7 @@ public class MiniMRClientClusterFactory { FileSystem fs = FileSystem.get(conf); - Path testRootDir = new Path("target", caller.getSimpleName() + "-tmpDir") + Path testRootDir = new Path("target", identifier + "-tmpDir") .makeQualified(fs); Path appJar = new Path(testRootDir, "MRAppJar.jar"); @@ -65,10 +70,10 @@ public class MiniMRClientClusterFactory { fs.setPermission(remoteCallerJar, new FsPermission("744")); job.addFileToClassPath(remoteCallerJar); - MiniMRYarnCluster miniMRYarnCluster = new MiniMRYarnCluster(caller - .getSimpleName(), noOfNMs); + MiniMRYarnCluster miniMRYarnCluster = new MiniMRYarnCluster(identifier, + noOfNMs); job.getConfiguration().set("minimrclientcluster.caller.name", - caller.getSimpleName()); + identifier); job.getConfiguration().setInt("minimrclientcluster.nodemanagers.number", noOfNMs); miniMRYarnCluster.init(job.getConfiguration()); diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/MiniMRCluster.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/MiniMRCluster.java index 627bae3c1ee..5320621c740 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/MiniMRCluster.java +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/MiniMRCluster.java @@ -18,6 +18,7 @@ package org.apache.hadoop.mapred; import java.io.IOException; +import java.util.Random; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -177,8 +178,10 @@ public class MiniMRCluster { int numTrackerToExclude, Clock clock) throws IOException { if (conf == null) conf = new JobConf(); FileSystem.setDefaultUri(conf, namenode); + String identifier = this.getClass().getSimpleName() + "_" + + Integer.toString(new Random().nextInt(Integer.MAX_VALUE)); mrClientCluster = MiniMRClientClusterFactory.create(this.getClass(), - numTaskTrackers, conf); + identifier, numTaskTrackers, conf); } public UserGroupInformation getUgi() {