Index: hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/resources/mapred-default.xml =================================================================== --- hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/resources/mapred-default.xml (revision 1518111) +++ hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/resources/mapred-default.xml (working copy) @@ -1332,11 +1332,11 @@ yarn.app.mapreduce.am.command-opts -Xmx1024m Java opts for the MR App Master processes. - The following symbol, if present, will be interpolated: @taskid@ is replaced - by current TaskID. Any other occurrences of '@' will go unchanged. + The following symbol, if present, will be interpolated: @appid@ is replaced + by current MRAppID. Any other occurrences of '@' will go unchanged. For example, to enable verbose gc logging to a file named for the taskid in /tmp and to set the heap maximum to be a gigabyte, pass a 'value' of: - -Xmx1024m -verbose:gc -Xloggc:/tmp/@taskid@.gc + -Xmx1024m -verbose:gc -Xloggc:/tmp/@appid@.gc Usage of -Djava.library.path can cause programs to no longer function if hadoop native libraries are used. These values should instead be set as part Index: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/amlauncher/AMLauncher.java =================================================================== --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/amlauncher/AMLauncher.java (revision 1518111) +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/amlauncher/AMLauncher.java (working copy) @@ -23,8 +23,10 @@ import java.nio.ByteBuffer; import java.security.PrivilegedAction; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Vector; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -233,6 +235,18 @@ DataOutputBuffer dob = new DataOutputBuffer(); credentials.writeTokenStorageToStream(dob); container.setTokens(ByteBuffer.wrap(dob.getData(), 0, dob.getLength())); + + // + @appid@ is interpolated with value of AppAttemptID. + // Other occurrences of @ will not be altered. + Vector vargsFinal = new Vector(1); + Iterator iterator = container.getCommands().iterator(); + while (iterator.hasNext()) { + String newCmds = iterator.next(); + newCmds = newCmds.replace("@appid@", application.getAppAttemptId() + .toString()); + vargsFinal.add(newCmds.toString()); + } + container.setCommands(vargsFinal); } @VisibleForTesting Index: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/MockRM.java =================================================================== --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/MockRM.java (revision 1518111) +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/MockRM.java (working copy) @@ -22,6 +22,7 @@ import java.nio.ByteBuffer; import java.security.PrivilegedAction; import java.util.Map; +import java.util.Vector; import junit.framework.Assert; @@ -193,6 +194,9 @@ ByteBuffer securityTokens = ByteBuffer.wrap(dob.getData(), 0, dob.getLength()); clc.setTokens(securityTokens); } + Vector vargsFinal = new Vector(1); + vargsFinal.add("-Xmx1024m -Xloggc:/tmp/@appid@.gc"); + clc.setCommands(vargsFinal); sub.setAMContainerSpec(clc); req.setApplicationSubmissionContext(sub); UserGroupInformation fakeUser =