From baf158178858ffb3e93e729f64c8a56d08a0786b Mon Sep 17 00:00:00 2001 From: Rohith Sharma K S Date: Wed, 24 Sep 2014 10:18:12 +0800 Subject: [PATCH] For 2301 : Improve yarn container command --- .../hadoop/yarn/client/cli/ApplicationCLI.java | 11 +++++++--- .../apache/hadoop/yarn/client/cli/TestYarnCLI.java | 25 ++++++++++++++++------ .../rmcontainer/RMContainerImpl.java | 6 ++++-- .../rmcontainer/TestRMContainerImpl.java | 4 ++-- 4 files changed, 32 insertions(+), 14 deletions(-) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java index a847cd5..6b7ffa4 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java @@ -44,6 +44,7 @@ import org.apache.hadoop.yarn.exceptions.ApplicationNotFoundException; import org.apache.hadoop.yarn.exceptions.YarnException; import org.apache.hadoop.yarn.util.ConverterUtils; +import org.apache.hadoop.yarn.util.Times; import com.google.common.annotations.VisibleForTesting; @@ -57,7 +58,7 @@ "%30s\t%20s\t%35s\t%35s" + System.getProperty("line.separator"); private static final String CONTAINER_PATTERN = - "%30s\t%20s\t%20s\t%20s\t%20s\t%35s" + "%30s\t%22s\t%22s\t%20s\t%20s\t%35s" + System.getProperty("line.separator"); private static final String APP_TYPE_CMD = "appTypes"; @@ -536,8 +537,12 @@ private void listContainers(String appAttemptId) throws YarnException, writer.printf(CONTAINER_PATTERN, "Container-Id", "Start Time", "Finish Time", "State", "Host", "LOG-URL"); for (ContainerReport containerReport : appsReport) { - writer.printf(CONTAINER_PATTERN, containerReport.getContainerId(), - containerReport.getCreationTime(), containerReport.getFinishTime(), + writer.printf( + CONTAINER_PATTERN, + containerReport.getContainerId(), + Times.format(containerReport.getCreationTime()), + (containerReport.getFinishTime() == 0 ? "N/A" : Times + .format(containerReport.getFinishTime())), containerReport.getContainerState(), containerReport .getAssignedNode(), containerReport.getLogUrl()); } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestYarnCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestYarnCLI.java index 980517f..2ca9894 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestYarnCLI.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestYarnCLI.java @@ -249,15 +249,20 @@ public void testGetContainers() throws Exception { applicationId, 1); ContainerId containerId = ContainerId.newInstance(attemptId, 1); ContainerId containerId1 = ContainerId.newInstance(attemptId, 2); + ContainerId containerId2 = ContainerId.newInstance(attemptId, 3); ContainerReport container = ContainerReport.newInstance(containerId, null, NodeId.newInstance("host", 1234), Priority.UNDEFINED, 1234, 5678, "diagnosticInfo", "logURL", 0, ContainerState.COMPLETE); ContainerReport container1 = ContainerReport.newInstance(containerId1, null, NodeId.newInstance("host", 1234), Priority.UNDEFINED, 1234, 5678, "diagnosticInfo", "logURL", 0, ContainerState.COMPLETE); + ContainerReport container2 = ContainerReport.newInstance(containerId2, null, + NodeId.newInstance("host", 1234), Priority.UNDEFINED, 1234,0, + "diagnosticInfo", "", 0, ContainerState.RUNNING); List reports = new ArrayList(); reports.add(container); reports.add(container1); + reports.add(container2); when(client.getContainers(any(ApplicationAttemptId.class))).thenReturn( reports); int result = cli.run(new String[] { "container", "-list", @@ -267,25 +272,31 @@ public void testGetContainers() throws Exception { Log.info(sysOutStream.toString()); ByteArrayOutputStream baos = new ByteArrayOutputStream(); PrintWriter pw = new PrintWriter(baos); - pw.println("Total number of containers :2"); + pw.println("Total number of containers :3"); pw.print(" Container-Id"); - pw.print("\t Start Time"); - pw.print("\t Finish Time"); + pw.print("\t Start Time"); + pw.print("\t Finish Time"); pw.print("\t State"); pw.print("\t Host"); pw.println("\t LOG-URL"); pw.print(" container_1234_0005_01_000001"); - pw.print("\t 1234"); - pw.print("\t 5678"); + pw.print("\t 1-Jan-1970 08:00:01"); + pw.print("\t 1-Jan-1970 08:00:05"); pw.print("\t COMPLETE"); pw.print("\t host:1234"); pw.println("\t logURL"); pw.print(" container_1234_0005_01_000002"); - pw.print("\t 1234"); - pw.print("\t 5678"); + pw.print("\t 1-Jan-1970 08:00:01"); + pw.print("\t 1-Jan-1970 08:00:05"); pw.print("\t COMPLETE"); pw.print("\t host:1234"); pw.println("\t logURL"); + pw.print(" container_1234_0005_01_000003"); + pw.print("\t 1-Jan-1970 08:00:01"); + pw.print("\t N/A"); + pw.print("\t RUNNING"); + pw.print("\t host:1234"); + pw.println("\t "); pw.close(); String appReportStr = baos.toString("UTF-8"); Assert.assertEquals(appReportStr, sysOutStream.toString()); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmcontainer/RMContainerImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmcontainer/RMContainerImpl.java index 885e864..61e3a64 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmcontainer/RMContainerImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmcontainer/RMContainerImpl.java @@ -285,8 +285,10 @@ public String getDiagnosticsInfo() { public String getLogURL() { try { readLock.lock(); - return WebAppUtils.getRunningLogURL("//" + container.getNodeHttpAddress(), - ConverterUtils.toString(containerId), user); + String schemePrefix="http://"; + return WebAppUtils.getURLWithScheme(schemePrefix, WebAppUtils + .getRunningLogURL(container.getNodeHttpAddress(), + ConverterUtils.toString(containerId), user)); } finally { readLock.unlock(); } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmcontainer/TestRMContainerImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmcontainer/TestRMContainerImpl.java index 553587e..699a0ac 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmcontainer/TestRMContainerImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmcontainer/TestRMContainerImpl.java @@ -130,7 +130,7 @@ public void testReleaseWhileRunning() { RMContainerEventType.LAUNCHED)); drainDispatcher.await(); assertEquals(RMContainerState.RUNNING, rmContainer.getState()); - assertEquals("//host:3465/node/containerlogs/container_1_0001_01_000001/user", + assertEquals("http://host:3465/node/containerlogs/container_1_0001_01_000001/user", rmContainer.getLogURL()); // In RUNNING state. Verify RELEASED and associated actions. @@ -220,7 +220,7 @@ public void testExpireWhileRunning() { RMContainerEventType.LAUNCHED)); drainDispatcher.await(); assertEquals(RMContainerState.RUNNING, rmContainer.getState()); - assertEquals("//host:3465/node/containerlogs/container_1_0001_01_000001/user", + assertEquals("http://host:3465/node/containerlogs/container_1_0001_01_000001/user", rmContainer.getLogURL()); // In RUNNING state. Verify EXPIRE and associated actions. -- 1.9.2.msysgit.0