YARN-5286. Add RPC port info in RM web service's response when getting app status. (Jun Gong via Varun Saxena).

This commit is contained in:
Varun Saxena 2016-07-05 22:56:07 +05:30
parent 8b4b5259d5
commit 8e672e3c71
3 changed files with 43 additions and 6 deletions

View File

@ -82,6 +82,7 @@ public class AppInfo {
protected long elapsedTime;
protected String amContainerLogs;
protected String amHostHttpAddress;
private String amRPCAddress;
protected long allocatedMB;
protected long allocatedVCores;
protected int runningContainers;
@ -168,7 +169,9 @@ public AppInfo(ResourceManager rm, RMApp app, Boolean hasAccess,
masterContainer.getId().toString(), app.getUser());
this.amHostHttpAddress = masterContainer.getNodeHttpAddress();
}
this.amRPCAddress = getAmRPCAddressFromRMAppAttempt(attempt);
ApplicationResourceUsageReport resourceReport = attempt
.getApplicationResourceUsageReport();
if (resourceReport != null) {
@ -281,6 +284,22 @@ public String getAMHostHttpAddress() {
return this.amHostHttpAddress;
}
public String getAmRPCAddress() {
return amRPCAddress;
}
static public String getAmRPCAddressFromRMAppAttempt(RMAppAttempt attempt) {
String amRPCAddress = null;
if (attempt != null) {
String amHost = attempt.getHost();
int amRpcPort = attempt.getRpcPort();
if (!"N/A".equals(amHost) && amRpcPort != -1) {
amRPCAddress = amHost + ":" + amRpcPort;
}
}
return amRPCAddress;
}
public boolean amContainerLogsExist() {
return this.amContainerLogsExist;
}

View File

@ -46,6 +46,7 @@
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptState;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ResourceScheduler;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fifo.FifoScheduler;
import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.AppInfo;
import org.apache.hadoop.yarn.webapp.GenericExceptionHandler;
import org.apache.hadoop.yarn.webapp.GuiceServletConfig;
import org.apache.hadoop.yarn.webapp.JerseyTestBase;
@ -1319,7 +1320,8 @@ public void verifyAppsXML(NodeList nodes, RMApp app) throws JSONException,
WebServicesTestUtils.getXmlString(element, "logAggregationStatus"),
WebServicesTestUtils.getXmlBoolean(element, "unmanagedApplication"),
WebServicesTestUtils.getXmlString(element, "appNodeLabelExpression"),
WebServicesTestUtils.getXmlString(element, "amNodeLabelExpression"));
WebServicesTestUtils.getXmlString(element, "amNodeLabelExpression"),
WebServicesTestUtils.getXmlString(element, "amRPCAddress"));
}
}
@ -1338,6 +1340,12 @@ public void verifyAppInfo(JSONObject info, RMApp app) throws JSONException,
expectedNumberOfElements++;
amNodeLabelExpression = info.getString("amNodeLabelExpression");
}
String amRPCAddress = null;
if (AppInfo.getAmRPCAddressFromRMAppAttempt(app.getCurrentAppAttempt())
!= null) {
expectedNumberOfElements++;
amRPCAddress = info.getString("amRPCAddress");
}
assertEquals("incorrect number of elements", expectedNumberOfElements,
info.length());
@ -1360,7 +1368,8 @@ public void verifyAppInfo(JSONObject info, RMApp app) throws JSONException,
info.getString("logAggregationStatus"),
info.getBoolean("unmanagedApplication"),
appNodeLabelExpression,
amNodeLabelExpression);
amNodeLabelExpression,
amRPCAddress);
}
public void verifyAppInfoGeneric(RMApp app, String id, String user,
@ -1373,9 +1382,8 @@ public void verifyAppInfoGeneric(RMApp app, String id, String user,
int preemptedResourceMB, int preemptedResourceVCores,
int numNonAMContainerPreempted, int numAMContainerPreempted,
String logAggregationStatus, boolean unmanagedApplication,
String appNodeLabelExpression, String amNodeLabelExpression)
throws JSONException,
Exception {
String appNodeLabelExpression, String amNodeLabelExpression,
String amRPCAddress) throws JSONException, Exception {
WebServicesTestUtils.checkStringMatch("id", app.getApplicationId()
.toString(), id);
@ -1436,6 +1444,9 @@ public void verifyAppInfoGeneric(RMApp app, String id, String user,
assertEquals("unmanagedApplication doesn't match",
app.getAMResourceRequest().getNodeLabelExpression(),
amNodeLabelExpression);
assertEquals("amRPCAddress",
AppInfo.getAmRPCAddressFromRMAppAttempt(app.getCurrentAppAttempt()),
amRPCAddress);
}
@Test

View File

@ -1381,6 +1381,7 @@ Response Body:
"clusterId" : 1326815542473,
"finalStatus" : "SUCCEEDED",
"amHostHttpAddress" : "host.domain.com:8042",
"amRPCAddress" : "host.domain.com:4201",
"progress" : 100,
"name" : "word count",
"startedTime" : 1326815573334,
@ -1410,6 +1411,7 @@ Response Body:
"clusterId" : 1326815542473,
"finalStatus" : "SUCCEEDED",
"amHostHttpAddress" : "host.domain.com:8042",
"amRPCAddress" : "host.domain.com:4202",
"progress" : 100,
"name" : "Sleep job",
"startedTime" : 1326815641380,
@ -1472,6 +1474,7 @@ Response Body:
<elapsedTime>25196</elapsedTime>
<amContainerLogs>http://host.domain.com:8042/node/containerlogs/container_1326815542473_0001_01_000001</amContainerLogs>
<amHostHttpAddress>host.domain.com:8042</amHostHttpAddress>
<amRPCAddress>host.domain.com:4201</amRPCAddress>
<allocatedMB>0</allocatedMB>
<allocatedVCores>0</allocatedVCores>
<runningContainers>0</runningContainers>
@ -1501,6 +1504,7 @@ Response Body:
<elapsedTime>148166</elapsedTime>
<amContainerLogs>http://host.domain.com:8042/node/containerlogs/container_1326815542473_0002_01_000001</amContainerLogs>
<amHostHttpAddress>host.domain.com:8042</amHostHttpAddress>
<amRPCAddress>host.domain.com:4202</amRPCAddress>
<allocatedMB>0</allocatedMB>
<allocatedVCores>0</allocatedVCores>
<runningContainers>0</runningContainers>
@ -1664,6 +1668,7 @@ Note that depending on security settings a user might not be able to see all the
| elapsedTime | long | The elapsed time since the application started (in ms) |
| amContainerLogs | string | The URL of the application master container logs |
| amHostHttpAddress | string | The nodes http address of the application master |
| amRPCAddress | string | The RPC address of the application master |
| allocatedMB | int | The sum of memory in MB allocated to the application's running containers |
| allocatedVCores | int | The sum of virtual cores allocated to the application's running containers |
| runningContainers | int | The number of containers currently running for the application |
@ -1703,6 +1708,7 @@ Response Body:
"clusterId" : 1326821518301,
"finalStatus" : "SUCCEEDED",
"amHostHttpAddress" : "host.domain.com:8042",
"amRPCAddress" : "host.domain.com:4201",
"progress" : 100,
"name" : "Sleep job",
"applicationType" : "Yarn",
@ -1756,6 +1762,7 @@ Response Body:
<elapsedTime>446748</elapsedTime>
<amContainerLogs>http://host.domain.com:8042/node/containerlogs/container_1326821518301_0005_01_000001</amContainerLogs>
<amHostHttpAddress>host.domain.com:8042</amHostHttpAddress>
<amRPCAddress>host.domain.com:4201</amRPCAddress>
<memorySeconds>151730</memorySeconds>
<vcoreSeconds>103</vcoreSeconds>
<unmanagedApplication>false</unmanagedApplication>