hadoop git commit: YARN-7617. Add a flag in distributed shell to automatically PROMOTE opportunistic containers to guaranteed once they are started. Contributed by Weiwei Yang.

2017-12-17 Thread wwei
Repository: hadoop
Updated Branches:
  refs/heads/trunk 5e81f32d1 -> 928964102


YARN-7617. Add a flag in distributed shell to automatically PROMOTE 
opportunistic containers to guaranteed once they are started. Contributed by 
Weiwei Yang.


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/92896410
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/92896410
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/92896410

Branch: refs/heads/trunk
Commit: 928964102029e96406f5482e8900802f38164501
Parents: 5e81f32
Author: Weiwei Yang 
Authored: Mon Dec 18 10:07:16 2017 +0800
Committer: Weiwei Yang 
Committed: Mon Dec 18 10:07:16 2017 +0800

--
 .../distributedshell/ApplicationMaster.java | 49 +++-
 .../applications/distributedshell/Client.java   | 11 +
 .../site/markdown/OpportunisticContainers.md.vm |  2 +-
 3 files changed, 59 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/92896410/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/ApplicationMaster.java
--
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/ApplicationMaster.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/ApplicationMaster.java
index 926de50..b3fa0ff 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/ApplicationMaster.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/ApplicationMaster.java
@@ -93,6 +93,8 @@ import org.apache.hadoop.yarn.api.records.URL;
 import org.apache.hadoop.yarn.api.records.UpdatedContainer;
 import org.apache.hadoop.yarn.api.records.ExecutionType;
 import org.apache.hadoop.yarn.api.records.ExecutionTypeRequest;
+import org.apache.hadoop.yarn.api.records.UpdateContainerRequest;
+import org.apache.hadoop.yarn.api.records.ContainerUpdateType;
 import org.apache.hadoop.yarn.api.records.timeline.TimelineEntity;
 import org.apache.hadoop.yarn.api.records.timeline.TimelineEntityGroupId;
 import org.apache.hadoop.yarn.api.records.timeline.TimelineEvent;
@@ -247,6 +249,8 @@ public class ApplicationMaster {
   // Execution type of the containers.
   // Default GUARANTEED.
   private ExecutionType containerType = ExecutionType.GUARANTEED;
+  // Whether to automatically promote opportunistic containers.
+  private boolean autoPromoteContainers = false;
 
   // Resource profile for the container
   private String containerResourceProfile = "";
@@ -420,6 +424,9 @@ public class ApplicationMaster {
 "Environment for shell script. Specified as env_key=env_val pairs");
 opts.addOption("container_type", true,
 "Container execution type, GUARANTEED or OPPORTUNISTIC");
+opts.addOption("promote_opportunistic_after_start", false,
+"Flag to indicate whether to automatically promote opportunistic"
++ " containers to guaranteed.");
 opts.addOption("container_memory", true,
 "Amount of memory in MB to be requested to run the shell command");
 opts.addOption("container_vcores", true,
@@ -576,6 +583,9 @@ public class ApplicationMaster {
   }
   containerType = ExecutionType.valueOf(containerTypeStr);
 }
+if (cliParser.hasOption("promote_opportunistic_after_start")) {
+  autoPromoteContainers = true;
+}
 containerMemory = Integer.parseInt(cliParser.getOptionValue(
 "container_memory", "-1"));
 containerVirtualCores = Integer.parseInt(cliParser.getOptionValue(
@@ -977,7 +987,24 @@ public class ApplicationMaster {
 
 @Override
 public void onContainersUpdated(
-List containers) {}
+List containers) {
+  for (UpdatedContainer container : containers) {
+LOG.info("Container {} updated, updateType={}, resource={}, "
++ "execType={}",
+container.getContainer().getId(),
+container.getUpdateType().toString(),
+container.getContainer().getResource().toString(),
+container.getContainer().getExecutionType());
+
+// TODO Remove this line with finalized updateContainer API.
+// Currently nm client needs to notify the NM to update container
+// execution type via NMClient#updateContaine

hadoop git commit: YARN-7617. Add a flag in distributed shell to automatically PROMOTE opportunistic containers to guaranteed once they are started. Contributed by Weiwei Yang.

2017-12-17 Thread wwei
Repository: hadoop
Updated Branches:
  refs/heads/branch-3.0 90636cf12 -> de2156dc9


YARN-7617. Add a flag in distributed shell to automatically PROMOTE 
opportunistic containers to guaranteed once they are started. Contributed by 
Weiwei Yang.

(cherry picked from commit 928964102029e96406f5482e8900802f38164501)


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/de2156dc
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/de2156dc
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/de2156dc

Branch: refs/heads/branch-3.0
Commit: de2156dc900b9a84e20e98edfd54ea5a19840511
Parents: 90636cf
Author: Weiwei Yang 
Authored: Mon Dec 18 10:07:16 2017 +0800
Committer: Weiwei Yang 
Committed: Mon Dec 18 10:27:17 2017 +0800

--
 .../distributedshell/ApplicationMaster.java | 49 +++-
 .../applications/distributedshell/Client.java   | 13 +-
 .../site/markdown/OpportunisticContainers.md.vm |  2 +-
 3 files changed, 60 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/de2156dc/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/ApplicationMaster.java
--
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/ApplicationMaster.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/ApplicationMaster.java
index b8a805b..1fa9f20 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/ApplicationMaster.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/ApplicationMaster.java
@@ -92,6 +92,8 @@ import org.apache.hadoop.yarn.api.records.URL;
 import org.apache.hadoop.yarn.api.records.UpdatedContainer;
 import org.apache.hadoop.yarn.api.records.ExecutionType;
 import org.apache.hadoop.yarn.api.records.ExecutionTypeRequest;
+import org.apache.hadoop.yarn.api.records.UpdateContainerRequest;
+import org.apache.hadoop.yarn.api.records.ContainerUpdateType;
 import org.apache.hadoop.yarn.api.records.timeline.TimelineEntity;
 import org.apache.hadoop.yarn.api.records.timeline.TimelineEntityGroupId;
 import org.apache.hadoop.yarn.api.records.timeline.TimelineEvent;
@@ -243,6 +245,8 @@ public class ApplicationMaster {
   // Execution type of the containers.
   // Default GUARANTEED.
   private ExecutionType containerType = ExecutionType.GUARANTEED;
+  // Whether to automatically promote opportunistic containers.
+  private boolean autoPromoteContainers = false;
 
   // Counter for completed containers ( complete denotes successful or failed )
   private AtomicInteger numCompletedContainers = new AtomicInteger();
@@ -412,6 +416,9 @@ public class ApplicationMaster {
 "Environment for shell script. Specified as env_key=env_val pairs");
 opts.addOption("container_type", true,
 "Container execution type, GUARANTEED or OPPORTUNISTIC");
+opts.addOption("promote_opportunistic_after_start", false,
+"Flag to indicate whether to automatically promote opportunistic"
++ " containers to guaranteed.");
 opts.addOption("container_memory", true,
 "Amount of memory in MB to be requested to run the shell command");
 opts.addOption("container_vcores", true,
@@ -566,6 +573,9 @@ public class ApplicationMaster {
   }
   containerType = ExecutionType.valueOf(containerTypeStr);
 }
+if (cliParser.hasOption("promote_opportunistic_after_start")) {
+  autoPromoteContainers = true;
+}
 containerMemory = Integer.parseInt(cliParser.getOptionValue(
 "container_memory", "10"));
 containerVirtualCores = Integer.parseInt(cliParser.getOptionValue(
@@ -964,7 +974,24 @@ public class ApplicationMaster {
 
 @Override
 public void onContainersUpdated(
-List containers) {}
+List containers) {
+  for (UpdatedContainer container : containers) {
+LOG.info("Container {} updated, updateType={}, resource={}, "
++ "execType={}",
+container.getContainer().getId(),
+container.getUpdateType().toString(),
+container.getContainer().getResource().toString(),
+container.getContainer().getExecutionType());
+
+// TODO Remove this line with finalized updateC