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 =