YARN-7088. Add application launch time to Resource Manager REST API. (Kanwaljeet Sachdev via Haibo Chen)
(cherry picked from commit bb92bfb4ef96baa234966b60e464d1773fbf3f22) (cherry picked from commit 3a764250262e745a6762dd6551b0d0a6af39e891) (cherry picked from commit 75df8bed6eed86ad7c34460a1167c35d48b559d7)
This commit is contained in:
parent
c77f7e25c9
commit
c02c19121e
@ -89,7 +89,7 @@ private ApplicationReport getUnknownApplicationReport() {
|
|||||||
// used for a non running job
|
// used for a non running job
|
||||||
return ApplicationReport.newInstance(unknownAppId, unknownAttemptId,
|
return ApplicationReport.newInstance(unknownAppId, unknownAttemptId,
|
||||||
"N/A", "N/A", "N/A", "N/A", 0, null, YarnApplicationState.NEW, "N/A",
|
"N/A", "N/A", "N/A", "N/A", 0, null, YarnApplicationState.NEW, "N/A",
|
||||||
"N/A", 0, 0, FinalApplicationStatus.UNDEFINED, null, "N/A", 0.0f,
|
"N/A", 0, 0, 0, FinalApplicationStatus.UNDEFINED, null, "N/A", 0.0f,
|
||||||
YarnConfiguration.DEFAULT_APPLICATION_TYPE, null);
|
YarnConfiguration.DEFAULT_APPLICATION_TYPE, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -515,7 +515,7 @@ private ApplicationReport getFinishedApplicationReport() {
|
|||||||
appId, 0);
|
appId, 0);
|
||||||
return ApplicationReport.newInstance(appId, attemptId, "user", "queue",
|
return ApplicationReport.newInstance(appId, attemptId, "user", "queue",
|
||||||
"appname", "host", 124, null, YarnApplicationState.FINISHED,
|
"appname", "host", 124, null, YarnApplicationState.FINISHED,
|
||||||
"diagnostics", "url", 0, 0, FinalApplicationStatus.SUCCEEDED, null,
|
"diagnostics", "url", 0, 0, 0, FinalApplicationStatus.SUCCEEDED, null,
|
||||||
"N/A", 0.0f, YarnConfiguration.DEFAULT_APPLICATION_TYPE, null);
|
"N/A", 0.0f, YarnConfiguration.DEFAULT_APPLICATION_TYPE, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -525,7 +525,7 @@ private ApplicationReport getRunningApplicationReport(String host, int port) {
|
|||||||
appId, 0);
|
appId, 0);
|
||||||
return ApplicationReport.newInstance(appId, attemptId, "user", "queue",
|
return ApplicationReport.newInstance(appId, attemptId, "user", "queue",
|
||||||
"appname", host, port, null, YarnApplicationState.RUNNING, "diagnostics",
|
"appname", host, port, null, YarnApplicationState.RUNNING, "diagnostics",
|
||||||
"url", 0, 0, FinalApplicationStatus.UNDEFINED, null, "N/A", 0.0f,
|
"url", 0, 0, 0, FinalApplicationStatus.UNDEFINED, null, "N/A", 0.0f,
|
||||||
YarnConfiguration.DEFAULT_APPLICATION_TYPE, null);
|
YarnConfiguration.DEFAULT_APPLICATION_TYPE, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -206,7 +206,8 @@ public ClientServiceDelegate answer(InvocationOnMock invocation)
|
|||||||
.thenReturn(
|
.thenReturn(
|
||||||
ApplicationReport.newInstance(appId, null, "tmp", "tmp", "tmp",
|
ApplicationReport.newInstance(appId, null, "tmp", "tmp", "tmp",
|
||||||
"tmp", 0, null, YarnApplicationState.FINISHED, "tmp", "tmp",
|
"tmp", 0, null, YarnApplicationState.FINISHED, "tmp", "tmp",
|
||||||
0l, 0l, FinalApplicationStatus.SUCCEEDED, null, null, 0f,
|
0L, 0L, 0L,
|
||||||
|
FinalApplicationStatus.SUCCEEDED, null, null, 0f,
|
||||||
"tmp", null));
|
"tmp", null));
|
||||||
yarnRunner.killJob(jobId);
|
yarnRunner.killJob(jobId);
|
||||||
verify(clientDelegate).killJob(jobId);
|
verify(clientDelegate).killJob(jobId);
|
||||||
|
@ -58,7 +58,8 @@ public static ApplicationReport newInstance(ApplicationId applicationId,
|
|||||||
ApplicationAttemptId applicationAttemptId, String user, String queue,
|
ApplicationAttemptId applicationAttemptId, String user, String queue,
|
||||||
String name, String host, int rpcPort, Token clientToAMToken,
|
String name, String host, int rpcPort, Token clientToAMToken,
|
||||||
YarnApplicationState state, String diagnostics, String url,
|
YarnApplicationState state, String diagnostics, String url,
|
||||||
long startTime, long finishTime, FinalApplicationStatus finalStatus,
|
long startTime, long launchTime, long finishTime,
|
||||||
|
FinalApplicationStatus finalStatus,
|
||||||
ApplicationResourceUsageReport appResources, String origTrackingUrl,
|
ApplicationResourceUsageReport appResources, String origTrackingUrl,
|
||||||
float progress, String applicationType, Token amRmToken) {
|
float progress, String applicationType, Token amRmToken) {
|
||||||
ApplicationReport report = Records.newRecord(ApplicationReport.class);
|
ApplicationReport report = Records.newRecord(ApplicationReport.class);
|
||||||
@ -74,6 +75,7 @@ public static ApplicationReport newInstance(ApplicationId applicationId,
|
|||||||
report.setDiagnostics(diagnostics);
|
report.setDiagnostics(diagnostics);
|
||||||
report.setTrackingUrl(url);
|
report.setTrackingUrl(url);
|
||||||
report.setStartTime(startTime);
|
report.setStartTime(startTime);
|
||||||
|
report.setLaunchTime(launchTime);
|
||||||
report.setFinishTime(finishTime);
|
report.setFinishTime(finishTime);
|
||||||
report.setFinalApplicationStatus(finalStatus);
|
report.setFinalApplicationStatus(finalStatus);
|
||||||
report.setApplicationResourceUsageReport(appResources);
|
report.setApplicationResourceUsageReport(appResources);
|
||||||
@ -84,13 +86,40 @@ public static ApplicationReport newInstance(ApplicationId applicationId,
|
|||||||
return report;
|
return report;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Private
|
@Private
|
||||||
@Unstable
|
@Unstable
|
||||||
public static ApplicationReport newInstance(ApplicationId applicationId,
|
public static ApplicationReport newInstance(ApplicationId applicationId,
|
||||||
ApplicationAttemptId applicationAttemptId, String user, String queue,
|
ApplicationAttemptId applicationAttemptId, String user, String queue,
|
||||||
String name, String host, int rpcPort, Token clientToAMToken,
|
String name, String host, int rpcPort, Token clientToAMToken,
|
||||||
YarnApplicationState state, String diagnostics, String url,
|
YarnApplicationState state, String diagnostics, String url,
|
||||||
long startTime, long finishTime, FinalApplicationStatus finalStatus,
|
long startTime, long finishTime,
|
||||||
|
FinalApplicationStatus finalStatus,
|
||||||
|
ApplicationResourceUsageReport appResources, String origTrackingUrl,
|
||||||
|
float progress, String applicationType, Token amRmToken,
|
||||||
|
Set<String> tags, boolean unmanagedApplication, Priority priority,
|
||||||
|
String appNodeLabelExpression, String amNodeLabelExpression) {
|
||||||
|
ApplicationReport report =
|
||||||
|
newInstance(applicationId, applicationAttemptId, user, queue, name,
|
||||||
|
host, rpcPort, clientToAMToken, state, diagnostics, url,
|
||||||
|
startTime, 0, finishTime, finalStatus, appResources,
|
||||||
|
origTrackingUrl, progress, applicationType, amRmToken);
|
||||||
|
report.setApplicationTags(tags);
|
||||||
|
report.setUnmanagedApp(unmanagedApplication);
|
||||||
|
report.setPriority(priority);
|
||||||
|
report.setAppNodeLabelExpression(appNodeLabelExpression);
|
||||||
|
report.setAmNodeLabelExpression(amNodeLabelExpression);
|
||||||
|
return report;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
|
public static ApplicationReport newInstance(ApplicationId applicationId,
|
||||||
|
ApplicationAttemptId applicationAttemptId, String user, String queue,
|
||||||
|
String name, String host, int rpcPort, Token clientToAMToken,
|
||||||
|
YarnApplicationState state, String diagnostics, String url,
|
||||||
|
long startTime, long launchTime, long finishTime,
|
||||||
|
FinalApplicationStatus finalStatus,
|
||||||
ApplicationResourceUsageReport appResources, String origTrackingUrl,
|
ApplicationResourceUsageReport appResources, String origTrackingUrl,
|
||||||
float progress, String applicationType, Token amRmToken, Set<String> tags,
|
float progress, String applicationType, Token amRmToken, Set<String> tags,
|
||||||
boolean unmanagedApplication, Priority priority,
|
boolean unmanagedApplication, Priority priority,
|
||||||
@ -98,8 +127,8 @@ public static ApplicationReport newInstance(ApplicationId applicationId,
|
|||||||
ApplicationReport report =
|
ApplicationReport report =
|
||||||
newInstance(applicationId, applicationAttemptId, user, queue, name,
|
newInstance(applicationId, applicationAttemptId, user, queue, name,
|
||||||
host, rpcPort, clientToAMToken, state, diagnostics, url, startTime,
|
host, rpcPort, clientToAMToken, state, diagnostics, url, startTime,
|
||||||
finishTime, finalStatus, appResources, origTrackingUrl, progress,
|
launchTime, finishTime, finalStatus, appResources,
|
||||||
applicationType, amRmToken);
|
origTrackingUrl, progress, applicationType, amRmToken);
|
||||||
report.setApplicationTags(tags);
|
report.setApplicationTags(tags);
|
||||||
report.setUnmanagedApp(unmanagedApplication);
|
report.setUnmanagedApp(unmanagedApplication);
|
||||||
report.setPriority(priority);
|
report.setPriority(priority);
|
||||||
@ -282,6 +311,14 @@ public static ApplicationReport newInstance(ApplicationId applicationId,
|
|||||||
@Unstable
|
@Unstable
|
||||||
public abstract void setStartTime(long startTime);
|
public abstract void setStartTime(long startTime);
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
|
public abstract void setLaunchTime(long setLaunchTime);
|
||||||
|
|
||||||
|
@Public
|
||||||
|
@Unstable
|
||||||
|
public abstract long getLaunchTime();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the <em>finish time</em> of the application.
|
* Get the <em>finish time</em> of the application.
|
||||||
* @return <em>finish time</em> of the application
|
* @return <em>finish time</em> of the application
|
||||||
|
@ -246,6 +246,7 @@ message ApplicationReportProto {
|
|||||||
optional string appNodeLabelExpression = 24;
|
optional string appNodeLabelExpression = 24;
|
||||||
optional string amNodeLabelExpression = 25;
|
optional string amNodeLabelExpression = 25;
|
||||||
repeated AppTimeoutsMapProto appTimeouts = 26;
|
repeated AppTimeoutsMapProto appTimeouts = 26;
|
||||||
|
optional int64 launchTime = 27;
|
||||||
}
|
}
|
||||||
|
|
||||||
message AppTimeoutsMapProto {
|
message AppTimeoutsMapProto {
|
||||||
|
@ -627,7 +627,7 @@ public ApplicationReport createFakeAppReport() {
|
|||||||
ApplicationReport.newInstance(appId, attemptId, "fakeUser",
|
ApplicationReport.newInstance(appId, attemptId, "fakeUser",
|
||||||
"fakeQueue", "fakeApplicationName", "localhost", 0, null,
|
"fakeQueue", "fakeApplicationName", "localhost", 0, null,
|
||||||
YarnApplicationState.FINISHED, "fake an application report", "",
|
YarnApplicationState.FINISHED, "fake an application report", "",
|
||||||
1000l, 1200l, FinalApplicationStatus.FAILED, null, "", 50f,
|
1000l, 1000l, 1200l, FinalApplicationStatus.FAILED, null, "", 50f,
|
||||||
"fakeApplicationType", null);
|
"fakeApplicationType", null);
|
||||||
return report;
|
return report;
|
||||||
}
|
}
|
||||||
|
@ -332,7 +332,7 @@ private void createAppReports() {
|
|||||||
ApplicationReport.newInstance(applicationId,
|
ApplicationReport.newInstance(applicationId,
|
||||||
ApplicationAttemptId.newInstance(applicationId, 1), "user",
|
ApplicationAttemptId.newInstance(applicationId, 1), "user",
|
||||||
"queue", "appname", "host", 124, null,
|
"queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0,
|
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN",
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN",
|
||||||
null);
|
null);
|
||||||
List<ApplicationReport> applicationReports =
|
List<ApplicationReport> applicationReports =
|
||||||
@ -389,7 +389,7 @@ private void createAppReports() {
|
|||||||
ApplicationReport.newInstance(applicationId2,
|
ApplicationReport.newInstance(applicationId2,
|
||||||
ApplicationAttemptId.newInstance(applicationId2, 2), "user2",
|
ApplicationAttemptId.newInstance(applicationId2, 2), "user2",
|
||||||
"queue2", "appname2", "host2", 125, null,
|
"queue2", "appname2", "host2", 125, null,
|
||||||
YarnApplicationState.FINISHED, "diagnostics2", "url2", 2, 2,
|
YarnApplicationState.FINISHED, "diagnostics2", "url2", 2, 2, 2,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.63789f,
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.63789f,
|
||||||
"NON-YARN", null);
|
"NON-YARN", null);
|
||||||
applicationReports.add(newApplicationReport2);
|
applicationReports.add(newApplicationReport2);
|
||||||
@ -399,7 +399,7 @@ private void createAppReports() {
|
|||||||
ApplicationReport.newInstance(applicationId3,
|
ApplicationReport.newInstance(applicationId3,
|
||||||
ApplicationAttemptId.newInstance(applicationId3, 3), "user3",
|
ApplicationAttemptId.newInstance(applicationId3, 3), "user3",
|
||||||
"queue3", "appname3", "host3", 126, null,
|
"queue3", "appname3", "host3", 126, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics3", "url3", 3, 3,
|
YarnApplicationState.RUNNING, "diagnostics3", "url3", 3, 3, 3,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.73789f,
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.73789f,
|
||||||
"MAPREDUCE", null);
|
"MAPREDUCE", null);
|
||||||
applicationReports.add(newApplicationReport3);
|
applicationReports.add(newApplicationReport3);
|
||||||
@ -409,7 +409,7 @@ private void createAppReports() {
|
|||||||
ApplicationReport.newInstance(applicationId4,
|
ApplicationReport.newInstance(applicationId4,
|
||||||
ApplicationAttemptId.newInstance(applicationId4, 4), "user4",
|
ApplicationAttemptId.newInstance(applicationId4, 4), "user4",
|
||||||
"queue4", "appname4", "host4", 127, null,
|
"queue4", "appname4", "host4", 127, null,
|
||||||
YarnApplicationState.FAILED, "diagnostics4", "url4", 4, 4,
|
YarnApplicationState.FAILED, "diagnostics4", "url4", 4, 4, 4,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.83789f,
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.83789f,
|
||||||
"NON-MAPREDUCE", null);
|
"NON-MAPREDUCE", null);
|
||||||
applicationReports.add(newApplicationReport4);
|
applicationReports.add(newApplicationReport4);
|
||||||
|
@ -738,7 +738,7 @@ private List<ApplicationReport> createAppReports() {
|
|||||||
ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
||||||
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0,
|
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
||||||
List<ApplicationReport> applicationReports = new ArrayList<ApplicationReport>();
|
List<ApplicationReport> applicationReports = new ArrayList<ApplicationReport>();
|
||||||
applicationReports.add(newApplicationReport);
|
applicationReports.add(newApplicationReport);
|
||||||
@ -813,7 +813,7 @@ private List<ApplicationReport> createAppReports() {
|
|||||||
ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
||||||
applicationId2, ApplicationAttemptId.newInstance(applicationId2, 2),
|
applicationId2, ApplicationAttemptId.newInstance(applicationId2, 2),
|
||||||
"user2", "queue2", "appname2", "host2", 125, null,
|
"user2", "queue2", "appname2", "host2", 125, null,
|
||||||
YarnApplicationState.FINISHED, "diagnostics2", "url2", 2, 2,
|
YarnApplicationState.FINISHED, "diagnostics2", "url2", 2, 2, 2,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.63789f, "NON-YARN",
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.63789f, "NON-YARN",
|
||||||
null);
|
null);
|
||||||
applicationReports.add(newApplicationReport2);
|
applicationReports.add(newApplicationReport2);
|
||||||
@ -822,7 +822,7 @@ private List<ApplicationReport> createAppReports() {
|
|||||||
ApplicationReport newApplicationReport3 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport3 = ApplicationReport.newInstance(
|
||||||
applicationId3, ApplicationAttemptId.newInstance(applicationId3, 3),
|
applicationId3, ApplicationAttemptId.newInstance(applicationId3, 3),
|
||||||
"user3", "queue3", "appname3", "host3", 126, null,
|
"user3", "queue3", "appname3", "host3", 126, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics3", "url3", 3, 3,
|
YarnApplicationState.RUNNING, "diagnostics3", "url3", 3, 3, 3,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.73789f, "MAPREDUCE",
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.73789f, "MAPREDUCE",
|
||||||
null);
|
null);
|
||||||
applicationReports.add(newApplicationReport3);
|
applicationReports.add(newApplicationReport3);
|
||||||
@ -833,7 +833,7 @@ private List<ApplicationReport> createAppReports() {
|
|||||||
applicationId4,
|
applicationId4,
|
||||||
ApplicationAttemptId.newInstance(applicationId4, 4),
|
ApplicationAttemptId.newInstance(applicationId4, 4),
|
||||||
"user4", "queue4", "appname4", "host4", 127, null,
|
"user4", "queue4", "appname4", "host4", 127, null,
|
||||||
YarnApplicationState.FAILED, "diagnostics4", "url4", 4, 4,
|
YarnApplicationState.FAILED, "diagnostics4", "url4", 4, 4, 4,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.83789f,
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.83789f,
|
||||||
"NON-MAPREDUCE", null);
|
"NON-MAPREDUCE", null);
|
||||||
applicationReports.add(newApplicationReport4);
|
applicationReports.add(newApplicationReport4);
|
||||||
|
@ -124,7 +124,7 @@ public void testGetApplicationReport() throws Exception {
|
|||||||
ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
||||||
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0,
|
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, usageReport, "N/A", 0.53789f, "YARN",
|
FinalApplicationStatus.SUCCEEDED, usageReport, "N/A", 0.53789f, "YARN",
|
||||||
null, null, false, Priority.newInstance(0), "high-mem", "high-mem");
|
null, null, false, Priority.newInstance(0), "high-mem", "high-mem");
|
||||||
newApplicationReport.setLogAggregationStatus(LogAggregationStatus.SUCCEEDED);
|
newApplicationReport.setLogAggregationStatus(LogAggregationStatus.SUCCEEDED);
|
||||||
@ -371,7 +371,7 @@ public void testGetApplications() throws Exception {
|
|||||||
ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
||||||
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0,
|
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null,
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null,
|
||||||
Sets.newHashSet("tag1", "tag3"), false, Priority.UNDEFINED, "", "");
|
Sets.newHashSet("tag1", "tag3"), false, Priority.UNDEFINED, "", "");
|
||||||
List<ApplicationReport> applicationReports =
|
List<ApplicationReport> applicationReports =
|
||||||
@ -382,7 +382,7 @@ public void testGetApplications() throws Exception {
|
|||||||
ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
||||||
applicationId2, ApplicationAttemptId.newInstance(applicationId2, 2),
|
applicationId2, ApplicationAttemptId.newInstance(applicationId2, 2),
|
||||||
"user2", "queue2", "appname2", "host2", 125, null,
|
"user2", "queue2", "appname2", "host2", 125, null,
|
||||||
YarnApplicationState.FINISHED, "diagnostics2", "url2", 2, 2,
|
YarnApplicationState.FINISHED, "diagnostics2", "url2", 2, 2, 2,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.63789f, "NON-YARN",
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.63789f, "NON-YARN",
|
||||||
null, Sets.newHashSet("tag2", "tag3"), false, Priority.UNDEFINED,
|
null, Sets.newHashSet("tag2", "tag3"), false, Priority.UNDEFINED,
|
||||||
"", "");
|
"", "");
|
||||||
@ -392,7 +392,7 @@ public void testGetApplications() throws Exception {
|
|||||||
ApplicationReport newApplicationReport3 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport3 = ApplicationReport.newInstance(
|
||||||
applicationId3, ApplicationAttemptId.newInstance(applicationId3, 3),
|
applicationId3, ApplicationAttemptId.newInstance(applicationId3, 3),
|
||||||
"user3", "queue3", "appname3", "host3", 126, null,
|
"user3", "queue3", "appname3", "host3", 126, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics3", "url3", 3, 3,
|
YarnApplicationState.RUNNING, "diagnostics3", "url3", 3, 3, 3,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.73789f, "MAPREDUCE",
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.73789f, "MAPREDUCE",
|
||||||
null, Sets.newHashSet("tag1", "tag4"), false, Priority.UNDEFINED,
|
null, Sets.newHashSet("tag1", "tag4"), false, Priority.UNDEFINED,
|
||||||
"", "");
|
"", "");
|
||||||
@ -402,7 +402,7 @@ public void testGetApplications() throws Exception {
|
|||||||
ApplicationReport newApplicationReport4 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport4 = ApplicationReport.newInstance(
|
||||||
applicationId4, ApplicationAttemptId.newInstance(applicationId4, 4),
|
applicationId4, ApplicationAttemptId.newInstance(applicationId4, 4),
|
||||||
"user4", "queue4", "appname4", "host4", 127, null,
|
"user4", "queue4", "appname4", "host4", 127, null,
|
||||||
YarnApplicationState.FAILED, "diagnostics4", "url4", 4, 4,
|
YarnApplicationState.FAILED, "diagnostics4", "url4", 4, 4, 4,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.83789f,
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.83789f,
|
||||||
"NON-MAPREDUCE", null, Sets.newHashSet("tag1"), false,
|
"NON-MAPREDUCE", null, Sets.newHashSet("tag1"), false,
|
||||||
Priority.UNDEFINED, "", "");
|
Priority.UNDEFINED, "", "");
|
||||||
@ -412,7 +412,7 @@ public void testGetApplications() throws Exception {
|
|||||||
ApplicationReport newApplicationReport5 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport5 = ApplicationReport.newInstance(
|
||||||
applicationId5, ApplicationAttemptId.newInstance(applicationId5, 5),
|
applicationId5, ApplicationAttemptId.newInstance(applicationId5, 5),
|
||||||
"user5", "queue5", "appname5", "host5", 128, null,
|
"user5", "queue5", "appname5", "host5", 128, null,
|
||||||
YarnApplicationState.ACCEPTED, "diagnostics5", "url5", 5, 5,
|
YarnApplicationState.ACCEPTED, "diagnostics5", "url5", 5, 5, 5,
|
||||||
FinalApplicationStatus.KILLED, null, "N/A", 0.93789f, "HIVE", null,
|
FinalApplicationStatus.KILLED, null, "N/A", 0.93789f, "HIVE", null,
|
||||||
Sets.newHashSet("tag2", "tag4"), false, Priority.UNDEFINED, "", "");
|
Sets.newHashSet("tag2", "tag4"), false, Priority.UNDEFINED, "", "");
|
||||||
applicationReports.add(newApplicationReport5);
|
applicationReports.add(newApplicationReport5);
|
||||||
@ -421,7 +421,7 @@ public void testGetApplications() throws Exception {
|
|||||||
ApplicationReport newApplicationReport6 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport6 = ApplicationReport.newInstance(
|
||||||
applicationId6, ApplicationAttemptId.newInstance(applicationId6, 6),
|
applicationId6, ApplicationAttemptId.newInstance(applicationId6, 6),
|
||||||
"user6", "queue6", "appname6", "host6", 129, null,
|
"user6", "queue6", "appname6", "host6", 129, null,
|
||||||
YarnApplicationState.SUBMITTED, "diagnostics6", "url6", 6, 6,
|
YarnApplicationState.SUBMITTED, "diagnostics6", "url6", 6, 6, 6,
|
||||||
FinalApplicationStatus.KILLED, null, "N/A", 0.99789f, "PIG",
|
FinalApplicationStatus.KILLED, null, "N/A", 0.99789f, "PIG",
|
||||||
null, new HashSet<String>(), false, Priority.UNDEFINED, "", "");
|
null, new HashSet<String>(), false, Priority.UNDEFINED, "", "");
|
||||||
applicationReports.add(newApplicationReport6);
|
applicationReports.add(newApplicationReport6);
|
||||||
@ -995,7 +995,7 @@ public void testKillApplication() throws Exception {
|
|||||||
ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
||||||
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0,
|
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
||||||
when(client.getApplicationReport(any(ApplicationId.class))).thenReturn(
|
when(client.getApplicationReport(any(ApplicationId.class))).thenReturn(
|
||||||
newApplicationReport2);
|
newApplicationReport2);
|
||||||
@ -1008,7 +1008,7 @@ public void testKillApplication() throws Exception {
|
|||||||
ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
||||||
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0,
|
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
||||||
when(client.getApplicationReport(any(ApplicationId.class))).thenReturn(
|
when(client.getApplicationReport(any(ApplicationId.class))).thenReturn(
|
||||||
newApplicationReport);
|
newApplicationReport);
|
||||||
@ -1047,12 +1047,12 @@ public void testKillApplications() throws Exception {
|
|||||||
ApplicationReport newApplicationReport1 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport1 = ApplicationReport.newInstance(
|
||||||
applicationId1, ApplicationAttemptId.newInstance(applicationId1, 1),
|
applicationId1, ApplicationAttemptId.newInstance(applicationId1, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0,
|
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
||||||
ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
||||||
applicationId2, ApplicationAttemptId.newInstance(applicationId2, 1),
|
applicationId2, ApplicationAttemptId.newInstance(applicationId2, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0,
|
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.34344f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.34344f, "YARN", null);
|
||||||
when(client.getApplicationReport(applicationId1)).thenReturn(
|
when(client.getApplicationReport(applicationId1)).thenReturn(
|
||||||
newApplicationReport1);
|
newApplicationReport1);
|
||||||
@ -1072,12 +1072,12 @@ public void testKillApplications() throws Exception {
|
|||||||
ApplicationReport newApplicationReport3 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport3 = ApplicationReport.newInstance(
|
||||||
applicationId1, ApplicationAttemptId.newInstance(applicationId1, 1),
|
applicationId1, ApplicationAttemptId.newInstance(applicationId1, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0,
|
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
||||||
ApplicationReport newApplicationReport4 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport4 = ApplicationReport.newInstance(
|
||||||
applicationId2, ApplicationAttemptId.newInstance(applicationId2, 1),
|
applicationId2, ApplicationAttemptId.newInstance(applicationId2, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0,
|
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53345f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53345f, "YARN", null);
|
||||||
when(client.getApplicationReport(applicationId1)).thenReturn(
|
when(client.getApplicationReport(applicationId1)).thenReturn(
|
||||||
newApplicationReport3);
|
newApplicationReport3);
|
||||||
@ -1115,7 +1115,7 @@ public void testKillApplications() throws Exception {
|
|||||||
ApplicationReport newApplicationReport5 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport5 = ApplicationReport.newInstance(
|
||||||
applicationId1, ApplicationAttemptId.newInstance(applicationId1, 1),
|
applicationId1, ApplicationAttemptId.newInstance(applicationId1, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0,
|
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53345f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53345f, "YARN", null);
|
||||||
when(client.getApplicationReport(applicationId1)).thenReturn(
|
when(client.getApplicationReport(applicationId1)).thenReturn(
|
||||||
newApplicationReport5);
|
newApplicationReport5);
|
||||||
@ -1142,12 +1142,12 @@ public void testKillApplicationsOfDifferentEndStates() throws Exception {
|
|||||||
ApplicationReport newApplicationReport5 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport5 = ApplicationReport.newInstance(
|
||||||
applicationId1, ApplicationAttemptId.newInstance(applicationId1, 1),
|
applicationId1, ApplicationAttemptId.newInstance(applicationId1, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0,
|
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
||||||
ApplicationReport newApplicationReport6 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport6 = ApplicationReport.newInstance(
|
||||||
applicationId2, ApplicationAttemptId.newInstance(applicationId2, 1),
|
applicationId2, ApplicationAttemptId.newInstance(applicationId2, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0,
|
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53345f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53345f, "YARN", null);
|
||||||
when(client.getApplicationReport(applicationId1)).thenReturn(
|
when(client.getApplicationReport(applicationId1)).thenReturn(
|
||||||
newApplicationReport5);
|
newApplicationReport5);
|
||||||
@ -1170,7 +1170,7 @@ public void testMoveApplicationAcrossQueues() throws Exception {
|
|||||||
ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
||||||
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0,
|
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
||||||
when(client.getApplicationReport(any(ApplicationId.class))).thenReturn(
|
when(client.getApplicationReport(any(ApplicationId.class))).thenReturn(
|
||||||
newApplicationReport2);
|
newApplicationReport2);
|
||||||
@ -1185,7 +1185,7 @@ public void testMoveApplicationAcrossQueues() throws Exception {
|
|||||||
ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
||||||
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0,
|
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
||||||
when(client.getApplicationReport(any(ApplicationId.class))).thenReturn(
|
when(client.getApplicationReport(any(ApplicationId.class))).thenReturn(
|
||||||
newApplicationReport);
|
newApplicationReport);
|
||||||
@ -1220,7 +1220,7 @@ public void testMoveApplicationAcrossQueuesWithNewCommand() throws Exception {
|
|||||||
ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
||||||
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0,
|
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
||||||
when(client.getApplicationReport(any(ApplicationId.class)))
|
when(client.getApplicationReport(any(ApplicationId.class)))
|
||||||
.thenReturn(newApplicationReport2);
|
.thenReturn(newApplicationReport2);
|
||||||
@ -1235,7 +1235,7 @@ public void testMoveApplicationAcrossQueuesWithNewCommand() throws Exception {
|
|||||||
ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
||||||
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0,
|
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
||||||
when(client.getApplicationReport(any(ApplicationId.class)))
|
when(client.getApplicationReport(any(ApplicationId.class)))
|
||||||
.thenReturn(newApplicationReport);
|
.thenReturn(newApplicationReport);
|
||||||
@ -2003,7 +2003,7 @@ public void testUpdateApplicationPriority() throws Exception {
|
|||||||
ApplicationReport.newInstance(applicationId,
|
ApplicationReport.newInstance(applicationId,
|
||||||
ApplicationAttemptId.newInstance(applicationId, 1), "user",
|
ApplicationAttemptId.newInstance(applicationId, 1), "user",
|
||||||
"queue", "appname", "host", 124, null,
|
"queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0,
|
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.UNDEFINED, null, "N/A", 0.53789f, "YARN",
|
FinalApplicationStatus.UNDEFINED, null, "N/A", 0.53789f, "YARN",
|
||||||
null);
|
null);
|
||||||
when(client.getApplicationReport(any(ApplicationId.class))).thenReturn(
|
when(client.getApplicationReport(any(ApplicationId.class))).thenReturn(
|
||||||
|
@ -220,6 +220,17 @@ public long getStartTime() {
|
|||||||
return p.getStartTime();
|
return p.getStartTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getLaunchTime() {
|
||||||
|
ApplicationReportProtoOrBuilder p = viaProto ? proto : builder;
|
||||||
|
return p.getLaunchTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setLaunchTime(long launchTime) {
|
||||||
|
maybeInitBuilder();
|
||||||
|
builder.setLaunchTime(launchTime);
|
||||||
|
}
|
||||||
@Override
|
@Override
|
||||||
public long getFinishTime() {
|
public long getFinishTime() {
|
||||||
ApplicationReportProtoOrBuilder p = viaProto ? proto : builder;
|
ApplicationReportProtoOrBuilder p = viaProto ? proto : builder;
|
||||||
|
@ -58,7 +58,7 @@ protected static ApplicationReport createApplicationReport(
|
|||||||
ApplicationReport appReport =
|
ApplicationReport appReport =
|
||||||
ApplicationReport.newInstance(appId, appAttemptId, "user", "queue",
|
ApplicationReport.newInstance(appId, appAttemptId, "user", "queue",
|
||||||
"appname", "host", 124, null, YarnApplicationState.FINISHED,
|
"appname", "host", 124, null, YarnApplicationState.FINISHED,
|
||||||
"diagnostics", "url", 0, 0, FinalApplicationStatus.SUCCEEDED, null,
|
"diagnostics", "url", 0, 0, 0, FinalApplicationStatus.SUCCEEDED, null,
|
||||||
"N/A", 0.53789f, YarnConfiguration.DEFAULT_APPLICATION_TYPE, null,
|
"N/A", 0.53789f, YarnConfiguration.DEFAULT_APPLICATION_TYPE, null,
|
||||||
null, false, Priority.newInstance(0),"","");
|
null, false, Priority.newInstance(0),"","");
|
||||||
return appReport;
|
return appReport;
|
||||||
|
@ -137,7 +137,7 @@ private ApplicationReport convertToApplicationReport(
|
|||||||
currentApplicationAttemptId, appHistory.getUser(), appHistory.getQueue(),
|
currentApplicationAttemptId, appHistory.getUser(), appHistory.getQueue(),
|
||||||
appHistory.getApplicationName(), host, rpcPort, null,
|
appHistory.getApplicationName(), host, rpcPort, null,
|
||||||
appHistory.getYarnApplicationState(), appHistory.getDiagnosticsInfo(),
|
appHistory.getYarnApplicationState(), appHistory.getDiagnosticsInfo(),
|
||||||
trackingUrl, appHistory.getStartTime(), appHistory.getFinishTime(),
|
trackingUrl, appHistory.getStartTime(), 0, appHistory.getFinishTime(),
|
||||||
appHistory.getFinalApplicationStatus(), null, "", 100,
|
appHistory.getFinalApplicationStatus(), null, "", 100,
|
||||||
appHistory.getApplicationType(), null);
|
appHistory.getApplicationType(), null);
|
||||||
}
|
}
|
||||||
|
@ -375,7 +375,7 @@ public static ApplicationReport newApplicationReport(
|
|||||||
ApplicationId applicationId, ApplicationAttemptId applicationAttemptId,
|
ApplicationId applicationId, ApplicationAttemptId applicationAttemptId,
|
||||||
String user, String queue, String name, String host, int rpcPort,
|
String user, String queue, String name, String host, int rpcPort,
|
||||||
Token clientToAMToken, YarnApplicationState state, String diagnostics,
|
Token clientToAMToken, YarnApplicationState state, String diagnostics,
|
||||||
String url, long startTime, long finishTime,
|
String url, long startTime, long launchTime, long finishTime,
|
||||||
FinalApplicationStatus finalStatus,
|
FinalApplicationStatus finalStatus,
|
||||||
ApplicationResourceUsageReport appResources, String origTrackingUrl,
|
ApplicationResourceUsageReport appResources, String origTrackingUrl,
|
||||||
float progress, String appType, Token amRmToken, Set<String> tags,
|
float progress, String appType, Token amRmToken, Set<String> tags,
|
||||||
@ -394,6 +394,7 @@ public static ApplicationReport newApplicationReport(
|
|||||||
report.setDiagnostics(diagnostics);
|
report.setDiagnostics(diagnostics);
|
||||||
report.setTrackingUrl(url);
|
report.setTrackingUrl(url);
|
||||||
report.setStartTime(startTime);
|
report.setStartTime(startTime);
|
||||||
|
report.setLaunchTime(launchTime);
|
||||||
report.setFinishTime(finishTime);
|
report.setFinishTime(finishTime);
|
||||||
report.setFinalApplicationStatus(finalStatus);
|
report.setFinalApplicationStatus(finalStatus);
|
||||||
report.setApplicationResourceUsageReport(appResources);
|
report.setApplicationResourceUsageReport(appResources);
|
||||||
|
@ -194,10 +194,9 @@ public ApplicationReport run() throws Exception {
|
|||||||
._("FinalStatus Reported by AM:",
|
._("FinalStatus Reported by AM:",
|
||||||
clairfyAppFinalStatus(app.getFinalAppStatus()))
|
clairfyAppFinalStatus(app.getFinalAppStatus()))
|
||||||
._("Started:", Times.format(app.getStartedTime()))
|
._("Started:", Times.format(app.getStartedTime()))
|
||||||
._(
|
._("Launched:", Times.format(app.getLaunchTime()))
|
||||||
"Elapsed:",
|
._("Finished:", Times.format(app.getFinishedTime()))
|
||||||
StringUtils.formatTime(Times.elapsed(app.getStartedTime(),
|
._("Elapsed:", StringUtils.formatTime(app.getElapsedTime()))
|
||||||
app.getFinishedTime())))
|
|
||||||
._(
|
._(
|
||||||
"Tracking URL:",
|
"Tracking URL:",
|
||||||
app.getTrackingUrl() == null
|
app.getTrackingUrl() == null
|
||||||
|
@ -150,7 +150,9 @@ protected void renderData(Block html) {
|
|||||||
html.table("#apps").thead().tr().th(".id", "ID").th(".user", "User")
|
html.table("#apps").thead().tr().th(".id", "ID").th(".user", "User")
|
||||||
.th(".name", "Name").th(".type", "Application Type")
|
.th(".name", "Name").th(".type", "Application Type")
|
||||||
.th(".queue", "Queue").th(".priority", "Application Priority")
|
.th(".queue", "Queue").th(".priority", "Application Priority")
|
||||||
.th(".starttime", "StartTime").th(".finishtime", "FinishTime")
|
.th(".starttime", "StartTime")
|
||||||
|
.th(".launchtime", "LaunchTime")
|
||||||
|
.th(".finishtime", "FinishTime")
|
||||||
.th(".state", "State").th(".finalstatus", "FinalStatus")
|
.th(".state", "State").th(".finalstatus", "FinalStatus")
|
||||||
.th(".progress", "Progress").th(".ui", "Tracking UI")._()._().tbody();
|
.th(".progress", "Progress").th(".ui", "Tracking UI")._()._().tbody();
|
||||||
|
|
||||||
@ -188,6 +190,7 @@ protected void renderData(Block html) {
|
|||||||
.getQueue()))).append("\",\"").append(String
|
.getQueue()))).append("\",\"").append(String
|
||||||
.valueOf(app.getPriority()))
|
.valueOf(app.getPriority()))
|
||||||
.append("\",\"").append(app.getStartedTime())
|
.append("\",\"").append(app.getStartedTime())
|
||||||
|
.append("\",\"").append(app.getLaunchTime())
|
||||||
.append("\",\"").append(app.getFinishedTime())
|
.append("\",\"").append(app.getFinishedTime())
|
||||||
.append("\",\"")
|
.append("\",\"")
|
||||||
.append(app.getAppState() == null ? UNAVAILABLE : app.getAppState())
|
.append(app.getAppState() == null ? UNAVAILABLE : app.getAppState())
|
||||||
|
@ -51,7 +51,7 @@ private static String getAppsTableColumnDefs(
|
|||||||
sb.append("[\n")
|
sb.append("[\n")
|
||||||
.append("{'sType':'natural', 'aTargets': [0]")
|
.append("{'sType':'natural', 'aTargets': [0]")
|
||||||
.append(", 'mRender': parseHadoopID }")
|
.append(", 'mRender': parseHadoopID }")
|
||||||
.append("\n, {'sType':'numeric', 'aTargets': [6, 7]")
|
.append("\n, {'sType':'numeric', 'aTargets': [6, 7, 8]")
|
||||||
.append(", 'mRender': renderHadoopDate }")
|
.append(", 'mRender': renderHadoopDate }")
|
||||||
.append("\n, {'sType':'numeric', bSearchable:false, 'aTargets':");
|
.append("\n, {'sType':'numeric', bSearchable:false, 'aTargets':");
|
||||||
if (isFairSchedulerPage) {
|
if (isFairSchedulerPage) {
|
||||||
|
@ -55,6 +55,7 @@ public class AppInfo {
|
|||||||
protected FinalApplicationStatus finalAppStatus;
|
protected FinalApplicationStatus finalAppStatus;
|
||||||
protected long submittedTime;
|
protected long submittedTime;
|
||||||
protected long startedTime;
|
protected long startedTime;
|
||||||
|
private long launchTime;
|
||||||
protected long finishedTime;
|
protected long finishedTime;
|
||||||
protected long elapsedTime;
|
protected long elapsedTime;
|
||||||
protected String applicationTags;
|
protected String applicationTags;
|
||||||
@ -88,6 +89,7 @@ public AppInfo(ApplicationReport app) {
|
|||||||
originalTrackingUrl = app.getOriginalTrackingUrl();
|
originalTrackingUrl = app.getOriginalTrackingUrl();
|
||||||
submittedTime = app.getStartTime();
|
submittedTime = app.getStartTime();
|
||||||
startedTime = app.getStartTime();
|
startedTime = app.getStartTime();
|
||||||
|
launchTime = app.getLaunchTime();
|
||||||
finishedTime = app.getFinishTime();
|
finishedTime = app.getFinishTime();
|
||||||
elapsedTime = Times.elapsed(startedTime, finishedTime);
|
elapsedTime = Times.elapsed(startedTime, finishedTime);
|
||||||
finalAppStatus = app.getFinalApplicationStatus();
|
finalAppStatus = app.getFinalApplicationStatus();
|
||||||
@ -198,6 +200,10 @@ public long getSubmittedTime() {
|
|||||||
return submittedTime;
|
return submittedTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getLaunchTime() {
|
||||||
|
return launchTime;
|
||||||
|
}
|
||||||
|
|
||||||
public long getStartedTime() {
|
public long getStartedTime() {
|
||||||
return startedTime;
|
return startedTime;
|
||||||
}
|
}
|
||||||
|
@ -310,7 +310,7 @@ public void run() {
|
|||||||
LOG.info("Launching master" + application.getAppAttemptId());
|
LOG.info("Launching master" + application.getAppAttemptId());
|
||||||
launch();
|
launch();
|
||||||
handler.handle(new RMAppAttemptEvent(application.getAppAttemptId(),
|
handler.handle(new RMAppAttemptEvent(application.getAppAttemptId(),
|
||||||
RMAppAttemptEventType.LAUNCHED));
|
RMAppAttemptEventType.LAUNCHED, System.currentTimeMillis()));
|
||||||
} catch(Exception ie) {
|
} catch(Exception ie) {
|
||||||
onAMLaunchFailed(masterContainer.getId(), ie);
|
onAMLaunchFailed(masterContainer.getId(), ie);
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,8 @@ public abstract class ApplicationStateData {
|
|||||||
public static ApplicationStateData newInstance(long submitTime,
|
public static ApplicationStateData newInstance(long submitTime,
|
||||||
long startTime, String user,
|
long startTime, String user,
|
||||||
ApplicationSubmissionContext submissionContext, RMAppState state,
|
ApplicationSubmissionContext submissionContext, RMAppState state,
|
||||||
String diagnostics, long finishTime, CallerContext callerContext) {
|
String diagnostics, long launchTime, long finishTime,
|
||||||
|
CallerContext callerContext) {
|
||||||
ApplicationStateData appState = Records.newRecord(ApplicationStateData.class);
|
ApplicationStateData appState = Records.newRecord(ApplicationStateData.class);
|
||||||
appState.setSubmitTime(submitTime);
|
appState.setSubmitTime(submitTime);
|
||||||
appState.setStartTime(startTime);
|
appState.setStartTime(startTime);
|
||||||
@ -55,6 +56,7 @@ public static ApplicationStateData newInstance(long submitTime,
|
|||||||
appState.setApplicationSubmissionContext(submissionContext);
|
appState.setApplicationSubmissionContext(submissionContext);
|
||||||
appState.setState(state);
|
appState.setState(state);
|
||||||
appState.setDiagnostics(diagnostics);
|
appState.setDiagnostics(diagnostics);
|
||||||
|
appState.setLaunchTime(launchTime);
|
||||||
appState.setFinishTime(finishTime);
|
appState.setFinishTime(finishTime);
|
||||||
appState.setCallerContext(callerContext);
|
appState.setCallerContext(callerContext);
|
||||||
return appState;
|
return appState;
|
||||||
@ -63,7 +65,8 @@ public static ApplicationStateData newInstance(long submitTime,
|
|||||||
public static ApplicationStateData newInstance(long submitTime,
|
public static ApplicationStateData newInstance(long submitTime,
|
||||||
long startTime, String user,
|
long startTime, String user,
|
||||||
ApplicationSubmissionContext submissionContext, RMAppState state,
|
ApplicationSubmissionContext submissionContext, RMAppState state,
|
||||||
String diagnostics, long finishTime, CallerContext callerContext,
|
String diagnostics, long launchTime, long finishTime,
|
||||||
|
CallerContext callerContext,
|
||||||
Map<ApplicationTimeoutType, Long> applicationTimeouts) {
|
Map<ApplicationTimeoutType, Long> applicationTimeouts) {
|
||||||
ApplicationStateData appState =
|
ApplicationStateData appState =
|
||||||
Records.newRecord(ApplicationStateData.class);
|
Records.newRecord(ApplicationStateData.class);
|
||||||
@ -73,6 +76,7 @@ public static ApplicationStateData newInstance(long submitTime,
|
|||||||
appState.setApplicationSubmissionContext(submissionContext);
|
appState.setApplicationSubmissionContext(submissionContext);
|
||||||
appState.setState(state);
|
appState.setState(state);
|
||||||
appState.setDiagnostics(diagnostics);
|
appState.setDiagnostics(diagnostics);
|
||||||
|
appState.setLaunchTime(launchTime);
|
||||||
appState.setFinishTime(finishTime);
|
appState.setFinishTime(finishTime);
|
||||||
appState.setCallerContext(callerContext);
|
appState.setCallerContext(callerContext);
|
||||||
appState.setApplicationTimeouts(applicationTimeouts);
|
appState.setApplicationTimeouts(applicationTimeouts);
|
||||||
@ -82,7 +86,7 @@ public static ApplicationStateData newInstance(long submitTime,
|
|||||||
public static ApplicationStateData newInstance(long submitTime,
|
public static ApplicationStateData newInstance(long submitTime,
|
||||||
long startTime, ApplicationSubmissionContext context, String user,
|
long startTime, ApplicationSubmissionContext context, String user,
|
||||||
CallerContext callerContext) {
|
CallerContext callerContext) {
|
||||||
return newInstance(submitTime, startTime, user, context, null, "", 0,
|
return newInstance(submitTime, startTime, user, context, null, "", 0, 0,
|
||||||
callerContext);
|
callerContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -136,6 +140,20 @@ public int getFirstAttemptId() {
|
|||||||
@Unstable
|
@Unstable
|
||||||
public abstract void setStartTime(long startTime);
|
public abstract void setStartTime(long startTime);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the <em>launch time</em> of the application.
|
||||||
|
* @return <em>launch time</em> of the application
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
|
public abstract long getLaunchTime();
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
|
public abstract void setLaunchTime(long launchTime);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The application submitter
|
* The application submitter
|
||||||
*/
|
*/
|
||||||
|
@ -120,6 +120,19 @@ public void setStartTime(long startTime) {
|
|||||||
builder.setStartTime(startTime);
|
builder.setStartTime(startTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getLaunchTime() {
|
||||||
|
ApplicationStateDataProtoOrBuilder p = viaProto ? proto : builder;
|
||||||
|
return p.getLaunchTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setLaunchTime(long launchTime) {
|
||||||
|
maybeInitBuilder();
|
||||||
|
builder.setLaunchTime(launchTime);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getUser() {
|
public String getUser() {
|
||||||
ApplicationStateDataProtoOrBuilder p = viaProto ? proto : builder;
|
ApplicationStateDataProtoOrBuilder p = viaProto ? proto : builder;
|
||||||
|
@ -177,6 +177,14 @@ ApplicationReport createAndGetApplicationReport(String clientUserName,
|
|||||||
*/
|
*/
|
||||||
long getSubmitTime();
|
long getSubmitTime();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The launch time of the application.
|
||||||
|
* Since getStartTime() returns what is essentially submit time,
|
||||||
|
* this new field is to prevent potential backwards compatibility issues.
|
||||||
|
* @return the launch time of the application.
|
||||||
|
*/
|
||||||
|
long getLaunchTime();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The tracking url for the application master.
|
* The tracking url for the application master.
|
||||||
* @return the tracking url for the application master.
|
* @return the tracking url for the application master.
|
||||||
|
@ -37,6 +37,12 @@ public RMAppEvent(ApplicationId appId, RMAppEventType type,
|
|||||||
this.diagnosticMsg = diagnostic;
|
this.diagnosticMsg = diagnostic;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public RMAppEvent(ApplicationId appId, RMAppEventType type, long timeStamp) {
|
||||||
|
super(type, timeStamp);
|
||||||
|
this.appId = appId;
|
||||||
|
this.diagnosticMsg = "";
|
||||||
|
}
|
||||||
|
|
||||||
public ApplicationId getApplicationId() {
|
public ApplicationId getApplicationId() {
|
||||||
return this.appId;
|
return this.appId;
|
||||||
}
|
}
|
||||||
|
@ -37,6 +37,7 @@ public enum RMAppEventType {
|
|||||||
ATTEMPT_FAILED,
|
ATTEMPT_FAILED,
|
||||||
ATTEMPT_KILLED,
|
ATTEMPT_KILLED,
|
||||||
NODE_UPDATE,
|
NODE_UPDATE,
|
||||||
|
ATTEMPT_LAUNCHED,
|
||||||
|
|
||||||
// Source: Container and ResourceTracker
|
// Source: Container and ResourceTracker
|
||||||
APP_RUNNING_ON_NODE,
|
APP_RUNNING_ON_NODE,
|
||||||
|
@ -159,6 +159,7 @@ public class RMAppImpl implements RMApp, Recoverable {
|
|||||||
|
|
||||||
// Mutable fields
|
// Mutable fields
|
||||||
private long startTime;
|
private long startTime;
|
||||||
|
private long launchTime = 0;
|
||||||
private long finishTime = 0;
|
private long finishTime = 0;
|
||||||
private long storedFinishTime = 0;
|
private long storedFinishTime = 0;
|
||||||
private int firstAttemptIdInStateStore = 1;
|
private int firstAttemptIdInStateStore = 1;
|
||||||
@ -283,6 +284,10 @@ RMAppEventType.KILL, new KillAttemptTransition())
|
|||||||
.addTransition(RMAppState.ACCEPTED, RMAppState.ACCEPTED,
|
.addTransition(RMAppState.ACCEPTED, RMAppState.ACCEPTED,
|
||||||
RMAppEventType.APP_RUNNING_ON_NODE,
|
RMAppEventType.APP_RUNNING_ON_NODE,
|
||||||
new AppRunningOnNodeTransition())
|
new AppRunningOnNodeTransition())
|
||||||
|
// Handle AppAttemptLaunch to upate the launchTime and publish to ATS
|
||||||
|
.addTransition(RMAppState.ACCEPTED, RMAppState.ACCEPTED,
|
||||||
|
RMAppEventType.ATTEMPT_LAUNCHED,
|
||||||
|
new AttemptLaunchedTransition())
|
||||||
|
|
||||||
// Transitions from RUNNING state
|
// Transitions from RUNNING state
|
||||||
.addTransition(RMAppState.RUNNING, RMAppState.RUNNING,
|
.addTransition(RMAppState.RUNNING, RMAppState.RUNNING,
|
||||||
@ -769,9 +774,9 @@ public ApplicationReport createAndGetApplicationReport(String clientUserName,
|
|||||||
this.applicationId, currentApplicationAttemptId, this.user,
|
this.applicationId, currentApplicationAttemptId, this.user,
|
||||||
this.queue, this.name, host, rpcPort, clientToAMToken,
|
this.queue, this.name, host, rpcPort, clientToAMToken,
|
||||||
createApplicationState(), diags, trackingUrl, this.startTime,
|
createApplicationState(), diags, trackingUrl, this.startTime,
|
||||||
this.finishTime, finishState, appUsageReport, origTrackingUrl,
|
this.launchTime, this.finishTime, finishState, appUsageReport,
|
||||||
progress, this.applicationType, amrmToken, applicationTags,
|
origTrackingUrl, progress, this.applicationType, amrmToken,
|
||||||
this.getApplicationPriority());
|
applicationTags, this.getApplicationPriority());
|
||||||
report.setLogAggregationStatus(logAggregationStatus);
|
report.setLogAggregationStatus(logAggregationStatus);
|
||||||
report.setUnmanagedApp(submissionContext.getUnmanagedAM());
|
report.setUnmanagedApp(submissionContext.getUnmanagedAM());
|
||||||
report.setAppNodeLabelExpression(getAppNodeLabelExpression());
|
report.setAppNodeLabelExpression(getAppNodeLabelExpression());
|
||||||
@ -824,6 +829,17 @@ public long getStartTime() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getLaunchTime() {
|
||||||
|
this.readLock.lock();
|
||||||
|
|
||||||
|
try {
|
||||||
|
return this.launchTime;
|
||||||
|
} finally {
|
||||||
|
this.readLock.unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getSubmitTime() {
|
public long getSubmitTime() {
|
||||||
return this.submitTime;
|
return this.submitTime;
|
||||||
@ -921,6 +937,7 @@ public void recover(RMState state) {
|
|||||||
.getDiagnostics());
|
.getDiagnostics());
|
||||||
this.storedFinishTime = appState.getFinishTime();
|
this.storedFinishTime = appState.getFinishTime();
|
||||||
this.startTime = appState.getStartTime();
|
this.startTime = appState.getStartTime();
|
||||||
|
this.launchTime = appState.getLaunchTime();
|
||||||
this.callerContext = appState.getCallerContext();
|
this.callerContext = appState.getCallerContext();
|
||||||
this.applicationTimeouts = appState.getApplicationTimeouts();
|
this.applicationTimeouts = appState.getApplicationTimeouts();
|
||||||
// If interval > 0, some attempts might have been deleted.
|
// If interval > 0, some attempts might have been deleted.
|
||||||
@ -1023,6 +1040,21 @@ public void transition(RMAppImpl app, RMAppEvent event) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final class AttemptLaunchedTransition
|
||||||
|
extends RMAppTransition {
|
||||||
|
@Override
|
||||||
|
public void transition(RMAppImpl app, RMAppEvent event) {
|
||||||
|
|
||||||
|
if(app.launchTime == 0) {
|
||||||
|
LOG.info("update the launch time for applicationId: "+
|
||||||
|
app.getApplicationId()+", attemptId: "+
|
||||||
|
app.getCurrentAppAttempt().getAppAttemptId()+
|
||||||
|
"launchTime: "+event.getTimestamp());
|
||||||
|
app.launchTime = event.getTimestamp();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static final class AppRunningOnNodeTransition extends RMAppTransition {
|
private static final class AppRunningOnNodeTransition extends RMAppTransition {
|
||||||
public void transition(RMAppImpl app, RMAppEvent event) {
|
public void transition(RMAppImpl app, RMAppEvent event) {
|
||||||
RMAppRunningOnNodeEvent nodeAddedEvent = (RMAppRunningOnNodeEvent) event;
|
RMAppRunningOnNodeEvent nodeAddedEvent = (RMAppRunningOnNodeEvent) event;
|
||||||
@ -1278,7 +1310,8 @@ private void rememberTargetTransitionsAndStoreState(RMAppEvent event,
|
|||||||
ApplicationStateData appState =
|
ApplicationStateData appState =
|
||||||
ApplicationStateData.newInstance(this.submitTime, this.startTime,
|
ApplicationStateData.newInstance(this.submitTime, this.startTime,
|
||||||
this.user, this.submissionContext,
|
this.user, this.submissionContext,
|
||||||
stateToBeStored, diags, this.storedFinishTime, this.callerContext);
|
stateToBeStored, diags, this.launchTime, this.storedFinishTime,
|
||||||
|
this.callerContext);
|
||||||
appState.setApplicationTimeouts(this.applicationTimeouts);
|
appState.setApplicationTimeouts(this.applicationTimeouts);
|
||||||
this.rmContext.getStateStore().updateApplicationState(appState);
|
this.rmContext.getStateStore().updateApplicationState(appState);
|
||||||
}
|
}
|
||||||
|
@ -38,6 +38,13 @@ public RMAppAttemptEvent(ApplicationAttemptId appAttemptId,
|
|||||||
this.diagnosticMsg = diagnostics;
|
this.diagnosticMsg = diagnostics;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public RMAppAttemptEvent(ApplicationAttemptId appAttemptId,
|
||||||
|
RMAppAttemptEventType type, long timeStamp) {
|
||||||
|
super(type, timeStamp);
|
||||||
|
this.appAttemptId = appAttemptId;
|
||||||
|
this.diagnosticMsg = "";
|
||||||
|
}
|
||||||
|
|
||||||
public ApplicationAttemptId getApplicationAttemptId() {
|
public ApplicationAttemptId getApplicationAttemptId() {
|
||||||
return this.appAttemptId;
|
return this.appAttemptId;
|
||||||
}
|
}
|
||||||
|
@ -1519,7 +1519,9 @@ public void transition(RMAppAttemptImpl appAttempt,
|
|||||||
appAttempt.launchAMStartTime;
|
appAttempt.launchAMStartTime;
|
||||||
ClusterMetrics.getMetrics().addAMLaunchDelay(delay);
|
ClusterMetrics.getMetrics().addAMLaunchDelay(delay);
|
||||||
}
|
}
|
||||||
|
appAttempt.eventHandler.handle(
|
||||||
|
new RMAppEvent(appAttempt.getAppAttemptId().getApplicationId(),
|
||||||
|
RMAppEventType.ATTEMPT_LAUNCHED, event.getTimestamp()));
|
||||||
appAttempt
|
appAttempt
|
||||||
.updateAMLaunchDiagnostics(AMState.LAUNCHED.getDiagnosticMessage());
|
.updateAMLaunchDiagnostics(AMState.LAUNCHED.getDiagnosticMessage());
|
||||||
// Register with AMLivelinessMonitor
|
// Register with AMLivelinessMonitor
|
||||||
|
@ -89,6 +89,7 @@ public FairSchedulerAppsBlock(ResourceManager rm, ViewContext ctx,
|
|||||||
th(".queue", "Queue").
|
th(".queue", "Queue").
|
||||||
th(".fairshare", "Fair Share").
|
th(".fairshare", "Fair Share").
|
||||||
th(".starttime", "StartTime").
|
th(".starttime", "StartTime").
|
||||||
|
th(".launchTime", "LaunchTime").
|
||||||
th(".finishtime", "FinishTime").
|
th(".finishtime", "FinishTime").
|
||||||
th(".state", "State").
|
th(".state", "State").
|
||||||
th(".finalstatus", "FinalStatus").
|
th(".finalstatus", "FinalStatus").
|
||||||
@ -135,6 +136,7 @@ public FairSchedulerAppsBlock(ResourceManager rm, ViewContext ctx,
|
|||||||
appInfo.getQueue()))).append("\",\"")
|
appInfo.getQueue()))).append("\",\"")
|
||||||
.append(fairShare).append("\",\"")
|
.append(fairShare).append("\",\"")
|
||||||
.append(appInfo.getStartTime()).append("\",\"")
|
.append(appInfo.getStartTime()).append("\",\"")
|
||||||
|
.append(appInfo.getLaunchTime()).append("\",\"")
|
||||||
.append(appInfo.getFinishTime()).append("\",\"")
|
.append(appInfo.getFinishTime()).append("\",\"")
|
||||||
.append(appInfo.getState()).append("\",\"")
|
.append(appInfo.getState()).append("\",\"")
|
||||||
.append(appInfo.getFinalStatus()).append("\",\"")
|
.append(appInfo.getFinalStatus()).append("\",\"")
|
||||||
|
@ -63,6 +63,7 @@ protected void renderData(Block html) {
|
|||||||
.th(".name", "Name").th(".type", "Application Type")
|
.th(".name", "Name").th(".type", "Application Type")
|
||||||
.th(".queue", "Queue").th(".priority", "Application Priority")
|
.th(".queue", "Queue").th(".priority", "Application Priority")
|
||||||
.th(".starttime", "StartTime")
|
.th(".starttime", "StartTime")
|
||||||
|
.th("launchtime", "LaunchTime")
|
||||||
.th(".finishtime", "FinishTime").th(".state", "State")
|
.th(".finishtime", "FinishTime").th(".state", "State")
|
||||||
.th(".finalstatus", "FinalStatus")
|
.th(".finalstatus", "FinalStatus")
|
||||||
.th(".runningcontainer", "Running Containers")
|
.th(".runningcontainer", "Running Containers")
|
||||||
@ -135,6 +136,7 @@ protected void renderData(Block html) {
|
|||||||
.getQueue()))).append("\",\"").append(String
|
.getQueue()))).append("\",\"").append(String
|
||||||
.valueOf(app.getPriority()))
|
.valueOf(app.getPriority()))
|
||||||
.append("\",\"").append(app.getStartedTime())
|
.append("\",\"").append(app.getStartedTime())
|
||||||
|
.append("\",\"").append(app.getLaunchTime())
|
||||||
.append("\",\"").append(app.getFinishedTime())
|
.append("\",\"").append(app.getFinishedTime())
|
||||||
.append("\",\"")
|
.append("\",\"")
|
||||||
.append(app.getAppState() == null ? UNAVAILABLE : app.getAppState())
|
.append(app.getAppState() == null ? UNAVAILABLE : app.getAppState())
|
||||||
|
@ -87,6 +87,7 @@ public class AppInfo {
|
|||||||
|
|
||||||
// these are only allowed if acls allow
|
// these are only allowed if acls allow
|
||||||
protected long startedTime;
|
protected long startedTime;
|
||||||
|
private long launchTime;
|
||||||
protected long finishedTime;
|
protected long finishedTime;
|
||||||
protected long elapsedTime;
|
protected long elapsedTime;
|
||||||
protected String amContainerLogs;
|
protected String amContainerLogs;
|
||||||
@ -176,6 +177,7 @@ public AppInfo(ResourceManager rm, RMApp app, Boolean hasAccess,
|
|||||||
this.clusterId = ResourceManager.getClusterTimeStamp();
|
this.clusterId = ResourceManager.getClusterTimeStamp();
|
||||||
if (hasAccess) {
|
if (hasAccess) {
|
||||||
this.startedTime = app.getStartTime();
|
this.startedTime = app.getStartTime();
|
||||||
|
this.launchTime = app.getLaunchTime();
|
||||||
this.finishedTime = app.getFinishTime();
|
this.finishedTime = app.getFinishTime();
|
||||||
this.elapsedTime =
|
this.elapsedTime =
|
||||||
Times.elapsed(app.getStartTime(), app.getFinishTime());
|
Times.elapsed(app.getStartTime(), app.getFinishTime());
|
||||||
@ -386,6 +388,10 @@ public long getStartTime() {
|
|||||||
return this.startedTime;
|
return this.startedTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getLaunchTime() {
|
||||||
|
return this.launchTime;
|
||||||
|
}
|
||||||
|
|
||||||
public long getFinishTime() {
|
public long getFinishTime() {
|
||||||
return this.finishedTime;
|
return this.finishedTime;
|
||||||
}
|
}
|
||||||
|
@ -70,6 +70,7 @@ message ApplicationStateDataProto {
|
|||||||
optional int64 finish_time = 7;
|
optional int64 finish_time = 7;
|
||||||
optional hadoop.common.RPCCallerContextProto caller_context = 8;
|
optional hadoop.common.RPCCallerContextProto caller_context = 8;
|
||||||
repeated ApplicationTimeoutMapProto application_timeouts = 9;
|
repeated ApplicationTimeoutMapProto application_timeouts = 9;
|
||||||
|
optional int64 launch_time = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ApplicationAttemptStateDataProto {
|
message ApplicationAttemptStateDataProto {
|
||||||
|
@ -90,6 +90,11 @@ public long getSubmitTime() {
|
|||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getLaunchTime() {
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getFinishTime() {
|
public long getFinishTime() {
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
@ -258,6 +263,7 @@ public static RMApp newApplication(int i) {
|
|||||||
final String name = newAppName();
|
final String name = newAppName();
|
||||||
final String queue = newQueue();
|
final String queue = newQueue();
|
||||||
final long start = 123456 + i * 1000;
|
final long start = 123456 + i * 1000;
|
||||||
|
final long launch = start + i * 100;
|
||||||
final long finish = 234567 + i * 1000;
|
final long finish = 234567 + i * 1000;
|
||||||
final String type = YarnConfiguration.DEFAULT_APPLICATION_TYPE;
|
final String type = YarnConfiguration.DEFAULT_APPLICATION_TYPE;
|
||||||
YarnApplicationState[] allStates = YarnApplicationState.values();
|
YarnApplicationState[] allStates = YarnApplicationState.values();
|
||||||
@ -293,6 +299,11 @@ public long getStartTime() {
|
|||||||
return start;
|
return start;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getLaunchTime() {
|
||||||
|
return launch;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getFinishTime() {
|
public long getFinishTime() {
|
||||||
return finish;
|
return finish;
|
||||||
@ -342,7 +353,7 @@ public ApplicationReport createAndGetApplicationReport(
|
|||||||
ApplicationReport report = ApplicationReport.newInstance(
|
ApplicationReport report = ApplicationReport.newInstance(
|
||||||
getApplicationId(), appAttemptId, getUser(), getQueue(),
|
getApplicationId(), appAttemptId, getUser(), getQueue(),
|
||||||
getName(), null, 0, null, null, getDiagnostics().toString(),
|
getName(), null, 0, null, null, getDiagnostics().toString(),
|
||||||
getTrackingUrl(), getStartTime(), getFinishTime(),
|
getTrackingUrl(), getLaunchTime(), getStartTime(), getFinishTime(),
|
||||||
getFinalApplicationStatus(), usageReport , null, getProgress(),
|
getFinalApplicationStatus(), usageReport , null, getProgress(),
|
||||||
type, null);
|
type, null);
|
||||||
return report;
|
return report;
|
||||||
|
@ -356,7 +356,7 @@ void testRMAppStateStore(RMStateStoreHelper stateStoreHelper,
|
|||||||
ApplicationStateData.newInstance(appState.getSubmitTime(),
|
ApplicationStateData.newInstance(appState.getSubmitTime(),
|
||||||
appState.getStartTime(), appState.getUser(),
|
appState.getStartTime(), appState.getUser(),
|
||||||
appState.getApplicationSubmissionContext(), RMAppState.FINISHED,
|
appState.getApplicationSubmissionContext(), RMAppState.FINISHED,
|
||||||
"appDiagnostics", 1234, appState.getCallerContext());
|
"appDiagnostics", 123, 1234, appState.getCallerContext());
|
||||||
appState2.attempts.putAll(appState.attempts);
|
appState2.attempts.putAll(appState.attempts);
|
||||||
store.updateApplicationState(appState2);
|
store.updateApplicationState(appState2);
|
||||||
|
|
||||||
@ -381,7 +381,7 @@ void testRMAppStateStore(RMStateStoreHelper stateStoreHelper,
|
|||||||
ApplicationStateData dummyApp =
|
ApplicationStateData dummyApp =
|
||||||
ApplicationStateData.newInstance(appState.getSubmitTime(),
|
ApplicationStateData.newInstance(appState.getSubmitTime(),
|
||||||
appState.getStartTime(), appState.getUser(), dummyContext,
|
appState.getStartTime(), appState.getUser(), dummyContext,
|
||||||
RMAppState.FINISHED, "appDiagnostics", 1234, null);
|
RMAppState.FINISHED, "appDiagnostics", 123, 1234, null);
|
||||||
store.updateApplicationState(dummyApp);
|
store.updateApplicationState(dummyApp);
|
||||||
|
|
||||||
ApplicationAttemptId dummyAttemptId =
|
ApplicationAttemptId dummyAttemptId =
|
||||||
|
@ -410,7 +410,7 @@ public void run() {
|
|||||||
store.storeApplicationStateInternal(
|
store.storeApplicationStateInternal(
|
||||||
ApplicationId.newInstance(100L, 1),
|
ApplicationId.newInstance(100L, 1),
|
||||||
ApplicationStateData.newInstance(111, 111, "user", null,
|
ApplicationStateData.newInstance(111, 111, "user", null,
|
||||||
RMAppState.ACCEPTED, "diagnostics", 333, null));
|
RMAppState.ACCEPTED, "diagnostics", 222, 333, null));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
assertionFailedInThread.set(true);
|
assertionFailedInThread.set(true);
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -797,7 +797,7 @@ private static ApplicationStateData createAppState(
|
|||||||
long finishTime, boolean isFinished) {
|
long finishTime, boolean isFinished) {
|
||||||
return ApplicationStateData.newInstance(submitTime, startTime, "test",
|
return ApplicationStateData.newInstance(submitTime, startTime, "test",
|
||||||
ctxt, isFinished ? RMAppState.FINISHED : null, isFinished ?
|
ctxt, isFinished ? RMAppState.FINISHED : null, isFinished ?
|
||||||
"appDiagnostics" : "", isFinished ? finishTime : 0, null);
|
"appDiagnostics" : "", 0, isFinished ? finishTime : 0, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ApplicationAttemptStateData createFinishedAttempt(
|
private static ApplicationAttemptStateData createFinishedAttempt(
|
||||||
|
@ -55,6 +55,7 @@ public class MockRMApp implements RMApp {
|
|||||||
String name = MockApps.newAppName();
|
String name = MockApps.newAppName();
|
||||||
String queue = MockApps.newQueue();
|
String queue = MockApps.newQueue();
|
||||||
long start = System.currentTimeMillis() - (int) (Math.random() * DT);
|
long start = System.currentTimeMillis() - (int) (Math.random() * DT);
|
||||||
|
private long launch = start;
|
||||||
long submit = start - (int) (Math.random() * DT);
|
long submit = start - (int) (Math.random() * DT);
|
||||||
long finish = 0;
|
long finish = 0;
|
||||||
RMAppState state = RMAppState.NEW;
|
RMAppState state = RMAppState.NEW;
|
||||||
@ -185,6 +186,11 @@ public long getSubmitTime() {
|
|||||||
return submit;
|
return submit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getLaunchTime() {
|
||||||
|
return launch;
|
||||||
|
}
|
||||||
|
|
||||||
public void setStartTime(long time) {
|
public void setStartTime(long time) {
|
||||||
this.start = time;
|
this.start = time;
|
||||||
}
|
}
|
||||||
|
@ -1239,7 +1239,7 @@ public void createRMStateForApplications(
|
|||||||
ApplicationStateData appState =
|
ApplicationStateData appState =
|
||||||
ApplicationStateData.newInstance(app.getSubmitTime(), app.getStartTime(),
|
ApplicationStateData.newInstance(app.getSubmitTime(), app.getStartTime(),
|
||||||
app.getUser(), app.getApplicationSubmissionContext(), rmAppState,
|
app.getUser(), app.getApplicationSubmissionContext(), rmAppState,
|
||||||
null, app.getFinishTime(), null);
|
null, app.getLaunchTime(), app.getFinishTime(), null);
|
||||||
applicationState.put(app.getApplicationId(), appState);
|
applicationState.put(app.getApplicationId(), appState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -257,7 +257,7 @@ public static ClientRMService mockClientRMService(RMContext rmContext) {
|
|||||||
app.getName(), (String) null, 0, (Token) null,
|
app.getName(), (String) null, 0, (Token) null,
|
||||||
app.createApplicationState(),
|
app.createApplicationState(),
|
||||||
app.getDiagnostics().toString(), (String) null,
|
app.getDiagnostics().toString(), (String) null,
|
||||||
app.getStartTime(), app.getFinishTime(),
|
app.getStartTime(), app.getLaunchTime(), app.getFinishTime(),
|
||||||
app.getFinalApplicationStatus(),
|
app.getFinalApplicationStatus(),
|
||||||
(ApplicationResourceUsageReport) null, app.getTrackingUrl(),
|
(ApplicationResourceUsageReport) null, app.getTrackingUrl(),
|
||||||
app.getProgress(), app.getApplicationType(), (Token) null);
|
app.getProgress(), app.getApplicationType(), (Token) null);
|
||||||
|
@ -1498,6 +1498,7 @@ public void verifyAppsXML(NodeList nodes, RMApp app, boolean hasResourceReq)
|
|||||||
WebServicesTestUtils.getXmlString(element, "diagnostics"),
|
WebServicesTestUtils.getXmlString(element, "diagnostics"),
|
||||||
WebServicesTestUtils.getXmlLong(element, "clusterId"),
|
WebServicesTestUtils.getXmlLong(element, "clusterId"),
|
||||||
WebServicesTestUtils.getXmlLong(element, "startedTime"),
|
WebServicesTestUtils.getXmlLong(element, "startedTime"),
|
||||||
|
WebServicesTestUtils.getXmlLong(element, "launchTime"),
|
||||||
WebServicesTestUtils.getXmlLong(element, "finishedTime"),
|
WebServicesTestUtils.getXmlLong(element, "finishedTime"),
|
||||||
WebServicesTestUtils.getXmlLong(element, "elapsedTime"),
|
WebServicesTestUtils.getXmlLong(element, "elapsedTime"),
|
||||||
WebServicesTestUtils.getXmlString(element, "amHostHttpAddress"),
|
WebServicesTestUtils.getXmlString(element, "amHostHttpAddress"),
|
||||||
@ -1550,7 +1551,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 = 36 + (hasResourceReqs ? 2 : 0);
|
int expectedNumberOfElements = 37 + (hasResourceReqs ? 2 : 0);
|
||||||
String appNodeLabelExpression = null;
|
String appNodeLabelExpression = null;
|
||||||
String amNodeLabelExpression = null;
|
String amNodeLabelExpression = null;
|
||||||
if (app.getApplicationSubmissionContext()
|
if (app.getApplicationSubmissionContext()
|
||||||
@ -1576,8 +1577,10 @@ public void verifyAppInfo(JSONObject info, RMApp app, boolean hasResourceReqs)
|
|||||||
info.getString("state"), info.getString("finalStatus"),
|
info.getString("state"), info.getString("finalStatus"),
|
||||||
(float) info.getDouble("progress"), info.getString("trackingUI"),
|
(float) info.getDouble("progress"), info.getString("trackingUI"),
|
||||||
info.getString("diagnostics"), info.getLong("clusterId"),
|
info.getString("diagnostics"), info.getLong("clusterId"),
|
||||||
info.getLong("startedTime"), info.getLong("finishedTime"),
|
info.getLong("startedTime"), info.getLong("launchTime"),
|
||||||
info.getLong("elapsedTime"), info.getString("amHostHttpAddress"),
|
info.getLong("finishedTime"),
|
||||||
|
info.getLong("elapsedTime"),
|
||||||
|
info.getString("amHostHttpAddress"),
|
||||||
info.getString("amContainerLogs"), info.getInt("allocatedMB"),
|
info.getString("amContainerLogs"), info.getInt("allocatedMB"),
|
||||||
info.getInt("allocatedVCores"), info.getInt("runningContainers"),
|
info.getInt("allocatedVCores"), info.getInt("runningContainers"),
|
||||||
(float) info.getDouble("queueUsagePercentage"),
|
(float) info.getDouble("queueUsagePercentage"),
|
||||||
@ -1600,8 +1603,9 @@ public void verifyAppInfo(JSONObject info, RMApp app, boolean hasResourceReqs)
|
|||||||
public void verifyAppInfoGeneric(RMApp app, String id, String user,
|
public void verifyAppInfoGeneric(RMApp app, String id, String user,
|
||||||
String name, String applicationType, String queue, int prioirty,
|
String name, String applicationType, String queue, int prioirty,
|
||||||
String state, String finalStatus, float progress, String trackingUI,
|
String state, String finalStatus, float progress, String trackingUI,
|
||||||
String diagnostics, long clusterId, long startedTime, long finishedTime,
|
String diagnostics, long clusterId, long startedTime,
|
||||||
long elapsedTime, String amHostHttpAddress, String amContainerLogs,
|
long launchTime, long finishedTime, long elapsedTime,
|
||||||
|
String amHostHttpAddress, String amContainerLogs,
|
||||||
int allocatedMB, int allocatedVCores, int numContainers,
|
int allocatedMB, int allocatedVCores, int numContainers,
|
||||||
float queueUsagePerc, float clusterUsagePerc,
|
float queueUsagePerc, float clusterUsagePerc,
|
||||||
int preemptedResourceMB, int preemptedResourceVCores,
|
int preemptedResourceMB, int preemptedResourceVCores,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user