YARN-6972. Adding RM ClusterId in AppInfo. (#4673)

This commit is contained in:
slfan1989 2022-08-04 00:35:40 +08:00 committed by GitHub
parent 0fc7dd8228
commit c5eba323bc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 1 deletions

View File

@ -27,6 +27,8 @@
import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient; import javax.xml.bind.annotation.XmlTransient;
import org.apache.hadoop.HadoopIllegalArgumentException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.yarn.api.records.ApplicationId; import org.apache.hadoop.yarn.api.records.ApplicationId;
import org.apache.hadoop.yarn.api.records.ApplicationResourceUsageReport; import org.apache.hadoop.yarn.api.records.ApplicationResourceUsageReport;
import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext; import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
@ -38,6 +40,8 @@
import org.apache.hadoop.yarn.api.records.ResourceRequest; import org.apache.hadoop.yarn.api.records.ResourceRequest;
import org.apache.hadoop.yarn.api.records.SchedulingRequest; import org.apache.hadoop.yarn.api.records.SchedulingRequest;
import org.apache.hadoop.yarn.api.records.YarnApplicationState; import org.apache.hadoop.yarn.api.records.YarnApplicationState;
import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterIdInfo;
import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager; import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager;
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMApp; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMApp;
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppMetrics; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppMetrics;
@ -69,6 +73,8 @@ public class AppInfo {
protected ApplicationId applicationId; protected ApplicationId applicationId;
@XmlTransient @XmlTransient
private String schemePrefix; private String schemePrefix;
@XmlTransient
private SubClusterIdInfo subClusterId;
// these are ok for any user to see // these are ok for any user to see
protected String id; protected String id;
@ -82,6 +88,7 @@ public class AppInfo {
protected String trackingUrl; protected String trackingUrl;
protected String diagnostics; protected String diagnostics;
protected long clusterId; protected long clusterId;
protected String rmClusterId;
protected String applicationType; protected String applicationType;
protected String applicationTags = ""; protected String applicationTags = "";
protected int priority; protected int priority;
@ -182,6 +189,16 @@ public AppInfo(ResourceManager rm, RMApp app, Boolean hasAccess,
this.finalStatus = app.getFinalApplicationStatus(); this.finalStatus = app.getFinalApplicationStatus();
this.clusterId = ResourceManager.getClusterTimeStamp(); this.clusterId = ResourceManager.getClusterTimeStamp();
if (hasAccess) { if (hasAccess) {
if (rm != null && rm.getConfig() != null) {
try {
Configuration yarnConfig = rm.getConfig();
subClusterId = new SubClusterIdInfo(YarnConfiguration.getClusterId(yarnConfig));
rmClusterId = this.subClusterId.toId().toString();
} catch (HadoopIllegalArgumentException e) {
subClusterId = null;
rmClusterId = null;
}
}
this.startedTime = app.getStartTime(); this.startedTime = app.getStartTime();
this.launchTime = app.getLaunchTime(); this.launchTime = app.getLaunchTime();
this.finishedTime = app.getFinishTime(); this.finishedTime = app.getFinishTime();
@ -454,6 +471,14 @@ public long getClusterId() {
return this.clusterId; return this.clusterId;
} }
public SubClusterIdInfo getSubClusterIdInfo() {
return this.subClusterId;
}
public String getRmClusterId() {
return this.rmClusterId;
}
public String getApplicationType() { public String getApplicationType() {
return this.applicationType; return this.applicationType;
} }

View File

@ -103,6 +103,7 @@ protected void configureServlets() {
YarnConfiguration.DEFAULT_RM_AM_MAX_ATTEMPTS); YarnConfiguration.DEFAULT_RM_AM_MAX_ATTEMPTS);
conf.setClass(YarnConfiguration.RM_SCHEDULER, scheduler, conf.setClass(YarnConfiguration.RM_SCHEDULER, scheduler,
ResourceScheduler.class); ResourceScheduler.class);
conf.set(YarnConfiguration.RM_CLUSTER_ID, "subCluster1");
rm = new MockRM(conf); rm = new MockRM(conf);
bind(ResourceManager.class).toInstance(rm); bind(ResourceManager.class).toInstance(rm);
serve("/*").with(GuiceContainer.class); serve("/*").with(GuiceContainer.class);
@ -1805,7 +1806,7 @@ public void verifyAppsXML(NodeList nodes, RMApp app, boolean hasResourceReq)
public void verifyAppInfo(JSONObject info, RMApp app, boolean hasResourceReqs) public void verifyAppInfo(JSONObject info, RMApp app, boolean hasResourceReqs)
throws JSONException, Exception { throws JSONException, Exception {
int expectedNumberOfElements = 40 + (hasResourceReqs ? 2 : 0); int expectedNumberOfElements = 41 + (hasResourceReqs ? 2 : 0);
String appNodeLabelExpression = null; String appNodeLabelExpression = null;
String amNodeLabelExpression = null; String amNodeLabelExpression = null;
if (app.getApplicationSubmissionContext() if (app.getApplicationSubmissionContext()
@ -1825,6 +1826,7 @@ public void verifyAppInfo(JSONObject info, RMApp app, boolean hasResourceReqs)
} }
assertEquals("incorrect number of elements", expectedNumberOfElements, assertEquals("incorrect number of elements", expectedNumberOfElements,
info.length()); info.length());
assertEquals("rmClusterId is incorrect", "subCluster1", info.getString("rmClusterId"));
verifyAppInfoGeneric(app, info.getString("id"), info.getString("user"), verifyAppInfoGeneric(app, info.getString("id"), info.getString("user"),
info.getString("name"), info.getString("applicationType"), info.getString("name"), info.getString("applicationType"),
info.getString("queue"), info.getInt("priority"), info.getString("queue"), info.getInt("priority"),