You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ji...@apache.org on 2015/12/29 00:53:11 UTC
hadoop git commit: YARN-4417. Make RM and Timeline-server REST APIs
more consistent. Contributed by Wangda Tan
Repository: hadoop
Updated Branches:
refs/heads/trunk 32b3dc11e -> d0a22bae9
YARN-4417. Make RM and Timeline-server REST APIs more consistent. Contributed by Wangda Tan
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/d0a22bae
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/d0a22bae
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/d0a22bae
Branch: refs/heads/trunk
Commit: d0a22bae9bd2c701c9d80896934fe07388cf5ae0
Parents: 32b3dc1
Author: Jian He <ji...@apache.org>
Authored: Mon Dec 28 15:52:45 2015 -0800
Committer: Jian He <ji...@apache.org>
Committed: Mon Dec 28 15:52:45 2015 -0800
----------------------------------------------------------------------
hadoop-yarn-project/CHANGES.txt | 3 +
.../resourcemanager/webapp/RMWebServices.java | 80 ++++++++++----------
.../webapp/dao/AppAttemptInfo.java | 8 ++
.../webapp/TestRMWebServicesApps.java | 2 +-
4 files changed, 54 insertions(+), 39 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d0a22bae/hadoop-yarn-project/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt
index e380893..b09823a 100644
--- a/hadoop-yarn-project/CHANGES.txt
+++ b/hadoop-yarn-project/CHANGES.txt
@@ -76,6 +76,9 @@ Release 2.9.0 - UNRELEASED
YARN-4341. add doc about timeline performance tool usage (Chang Li via
sjlee)
+ YARN-4417. Make RM and Timeline-server REST APIs more consistent.
+ (wtan via jianhe)
+
OPTIMIZATIONS
BUG FIXES
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d0a22bae/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java
index b744765..e107537 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java
@@ -169,6 +169,9 @@ import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.SchedulerTypeInf
import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.StatisticsItemInfo;
import org.apache.hadoop.yarn.server.security.ApplicationACLsManager;
import org.apache.hadoop.yarn.server.utils.BuilderUtils;
+import org.apache.hadoop.yarn.server.webapp.WebServices;
+import org.apache.hadoop.yarn.server.webapp.dao.ContainerInfo;
+import org.apache.hadoop.yarn.server.webapp.dao.ContainersInfo;
import org.apache.hadoop.yarn.util.AdHocLogDumper;
import org.apache.hadoop.yarn.util.ConverterUtils;
import org.apache.hadoop.yarn.webapp.BadRequestException;
@@ -182,7 +185,7 @@ import com.google.inject.Singleton;
@Singleton
@Path("/ws/v1/cluster")
-public class RMWebServices {
+public class RMWebServices extends WebServices {
private static final Log LOG =
LogFactory.getLog(RMWebServices.class.getName());
private static final String EMPTY = "";
@@ -201,6 +204,7 @@ public class RMWebServices {
@Inject
public RMWebServices(final ResourceManager rm, Configuration conf) {
+ super(rm.getClientRMService());
this.rm = rm;
this.conf = conf;
isCentralizedNodeLabelConfiguration =
@@ -335,8 +339,8 @@ public class RMWebServices {
}
}
- Collection<RMNode> rmNodes = RMServerUtils.queryRMNodes(this.rm.getRMContext(),
- acceptedStates);
+ Collection<RMNode> rmNodes = RMServerUtils.queryRMNodes(
+ this.rm.getRMContext(), acceptedStates);
NodesInfo nodesInfo = new NodesInfo();
for (RMNode rmNode : rmNodes) {
NodeInfo nodeInfo = new NodeInfo(rmNode, sched);
@@ -617,39 +621,6 @@ public class RMWebServices {
return appStatInfo;
}
- private static Set<String> parseQueries(
- Set<String> queries, boolean isState) {
- Set<String> params = new HashSet<String>();
- if (!queries.isEmpty()) {
- for (String query : queries) {
- if (query != null && !query.trim().isEmpty()) {
- String[] paramStrs = query.split(",");
- for (String paramStr : paramStrs) {
- if (paramStr != null && !paramStr.trim().isEmpty()) {
- if (isState) {
- try {
- // enum string is in the uppercase
- YarnApplicationState.valueOf(
- StringUtils.toUpperCase(paramStr.trim()));
- } catch (RuntimeException e) {
- YarnApplicationState[] stateArray =
- YarnApplicationState.values();
- String allAppStates = Arrays.toString(stateArray);
- throw new BadRequestException(
- "Invalid application-state " + paramStr.trim()
- + " specified. It should be one of " + allAppStates);
- }
- }
- params.add(
- StringUtils.toLowerCase(paramStr.trim()));
- }
- }
- }
- }
- }
- return params;
- }
-
private static Map<YarnApplicationState, Map<String, Long>> buildScoreboard(
Set<String> states, Set<String> types) {
Map<YarnApplicationState, Map<String, Long>> scoreboard
@@ -729,6 +700,40 @@ public class RMWebServices {
}
@GET
+ @Path("/apps/{appid}/appattempts/{appattemptid}")
+ @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+ @Override
+ public org.apache.hadoop.yarn.server.webapp.dao.AppAttemptInfo getAppAttempt(@Context HttpServletRequest req,
+ @Context HttpServletResponse res, @PathParam("appid") String appId,
+ @PathParam("appattemptid") String appAttemptId) {
+ init(res);
+ return super.getAppAttempt(req, res, appId, appAttemptId);
+ }
+
+ @GET
+ @Path("/apps/{appid}/appattempts/{appattemptid}/containers")
+ @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+ @Override
+ public ContainersInfo getContainers(@Context HttpServletRequest req,
+ @Context HttpServletResponse res, @PathParam("appid") String appId,
+ @PathParam("appattemptid") String appAttemptId) {
+ init(res);
+ return super.getContainers(req, res, appId, appAttemptId);
+ }
+
+ @GET
+ @Path("/apps/{appid}/appattempts/{appattemptid}/containers/{containerid}")
+ @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+ @Override
+ public ContainerInfo getContainer(@Context HttpServletRequest req,
+ @Context HttpServletResponse res, @PathParam("appid") String appId,
+ @PathParam("appattemptid") String appAttemptId,
+ @PathParam("containerid") String containerId) {
+ init(res);
+ return super.getContainer(req, res, appId, appAttemptId, containerId);
+ }
+
+ @GET
@Path("/apps/{appid}/state")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public AppState getAppState(@Context HttpServletRequest hsr,
@@ -885,8 +890,7 @@ public class RMWebServices {
NodeId nid = ConverterUtils.toNodeIdWithDefaultPort(nodeId);
Map<NodeId, Set<String>> newLabelsForNode =
new HashMap<NodeId, Set<String>>();
- newLabelsForNode.put(nid,
- new HashSet<String>(newNodeLabelsName));
+ newLabelsForNode.put(nid, new HashSet<String>(newNodeLabelsName));
return replaceLabelsOnNode(newLabelsForNode, hsr,
"/nodes/nodeid/replace-labels");
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d0a22bae/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/AppAttemptInfo.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/AppAttemptInfo.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/AppAttemptInfo.java
index b6e95a6..f465258 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/AppAttemptInfo.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/AppAttemptInfo.java
@@ -36,11 +36,13 @@ public class AppAttemptInfo {
protected int id;
protected long startTime;
+ protected long finishedTime;
protected String containerId;
protected String nodeHttpAddress;
protected String nodeId;
protected String logsLink;
protected String blacklistedNodes;
+ protected String appAttemptId;
public AppAttemptInfo() {
}
@@ -56,6 +58,7 @@ public class AppAttemptInfo {
if (attempt != null) {
this.id = attempt.getAppAttemptId().getAttemptId();
this.startTime = attempt.getStartTime();
+ this.finishedTime = attempt.getFinishTime();
Container masterContainer = attempt.getMasterContainer();
if (masterContainer != null) {
this.containerId = masterContainer.getId().toString();
@@ -75,6 +78,7 @@ public class AppAttemptInfo {
}
}
}
+ this.appAttemptId = attempt.getAppAttemptId().toString();
}
}
@@ -86,6 +90,10 @@ public class AppAttemptInfo {
return this.startTime;
}
+ public long getFinishedTime() {
+ return this.finishedTime;
+ }
+
public String getNodeHttpAddress() {
return this.nodeHttpAddress;
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d0a22bae/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesApps.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesApps.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesApps.java
index d0a8c27..05f141f 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesApps.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesApps.java
@@ -1643,7 +1643,7 @@ public class TestRMWebServicesApps extends JerseyTestBase {
String user)
throws JSONException, Exception {
- assertEquals("incorrect number of elements", 7, info.length());
+ assertEquals("incorrect number of elements", 9, info.length());
verifyAppAttemptInfoGeneric(appAttempt, info.getInt("id"),
info.getLong("startTime"), info.getString("containerId"),