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 wa...@apache.org on 2016/10/30 20:21:40 UTC
[27/50] [abbrv] hadoop git commit: YARN-5321. [YARN-3368] Add
resource usage for application by node managers (Wangda Tan via Sunil G)
YARN-5320. [YARN-3368] Add resource usage by applications and queues to
cluster overview page (Wangda Tan via Sunil G)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps.js
index ff49403..b945451 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps.js
@@ -20,7 +20,9 @@ import Ember from 'ember';
export default Ember.Route.extend({
model() {
- var apps = this.store.findAll('yarn-app');
- return apps;
+ return Ember.RSVP.hash({
+ apps: this.store.findAll('yarn-app'),
+ clusterMetrics: this.store.findAll('ClusterMetric'),
+ });
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps/apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps/apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps/apps.js
new file mode 100644
index 0000000..8719170
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps/apps.js
@@ -0,0 +1,22 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps/services.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps/services.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps/services.js
new file mode 100644
index 0000000..8719170
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps/services.js
@@ -0,0 +1,22 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node.js
index 6e57388..64a1b3e 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node.js
@@ -22,6 +22,7 @@ export default Ember.Route.extend({
model(param) {
// Fetches data from both NM and RM. RM is queried to get node usage info.
return Ember.RSVP.hash({
+ nodeInfo: { id: param.node_id, addr: param.node_addr },
node: this.store.findRecord('yarn-node', param.node_addr),
rmNode: this.store.findRecord('yarn-rm-node', param.node_id)
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes.js
index 5c46630..5639369 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes.js
@@ -20,6 +20,9 @@ import Ember from 'ember';
export default Ember.Route.extend({
model() {
- return this.store.findAll('yarn-rm-node');
+ return Ember.RSVP.hash({
+ nodes: this.store.findAll('yarn-rm-node'),
+ clusterMetrics: this.store.findAll('ClusterMetric'),
+ });
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes/heatmap.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes/heatmap.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes/heatmap.js
new file mode 100644
index 0000000..8719170
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes/heatmap.js
@@ -0,0 +1,22 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes/table.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes/table.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes/table.js
new file mode 100644
index 0000000..38ae5d1
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes/table.js
@@ -0,0 +1,22 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue-apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue-apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue-apps.js
new file mode 100644
index 0000000..dff4ee9
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue-apps.js
@@ -0,0 +1,36 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model(param) {
+ return Ember.RSVP.hash({
+ selected : param.queue_name,
+ queues: this.store.findAll('yarn-queue'),
+ selectedQueue : undefined,
+ apps: undefined, // apps of selected queue
+ });
+ },
+
+ afterModel(model) {
+ var store = this.store;
+ model.selectedQueue = this.store.peekRecord('yarn-queue', model.selected);
+ model.apps = store.findAll('yarn-app');
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues.js
new file mode 100644
index 0000000..06ceafb
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues.js
@@ -0,0 +1,38 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model(param) {
+ return Ember.RSVP.hash({
+ selected : param.queue_name,
+ queues: this.store.findAll('yarn-queue'),
+ selectedQueue : undefined,
+ apps: undefined, // apps of selected queue
+ });
+ },
+
+ afterModel(model) {
+ model.selectedQueue = this.store.peekRecord('yarn-queue', model.selected);
+ model.apps = this.store.findAll('yarn-app');
+ model.apps.forEach(function(o) {
+ console.log(o);
+ })
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app-attempt.js
index 4c542c4..3de377a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app-attempt.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app-attempt.js
@@ -40,7 +40,8 @@ export default DS.JSONAPISerializer.extend({
nodeId: payload.nodeId,
hosts: payload.host,
state: payload.appAttemptState,
- logsLink: payload.logsLink
+ logsLink: payload.logsLink,
+ appAttemptId: payload.appAttemptId
}
};
@@ -59,12 +60,16 @@ export default DS.JSONAPISerializer.extend({
// return expected is { data: [ {}, {} ] }
var normalizedArrayResponse = {};
- // payload has apps : { app: [ {},{},{} ] }
- // need some error handling for ex apps or app may not be defined.
- normalizedArrayResponse.data = payload.appAttempts.appAttempt.map(singleApp => {
- return this.internalNormalizeSingleResponse(store, primaryModelClass,
- singleApp, singleApp.id, requestType);
- }, this);
+ if (payload.appAttempts && payload.appAttempts.appAttempt) {
+ // payload has apps : { app: [ {},{},{} ] }
+ // need some error handling for ex apps or app may not be defined.
+ normalizedArrayResponse.data = payload.appAttempts.appAttempt.map(singleApp => {
+ return this.internalNormalizeSingleResponse(store, primaryModelClass,
+ singleApp, singleApp.id, requestType);
+ }, this);
+ } else {
+ normalizedArrayResponse.data = [];
+ }
return normalizedArrayResponse;
}
});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app.js
index ba8c1f4..427c3d8 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app.js
@@ -39,6 +39,7 @@ export default DS.JSONAPISerializer.extend({
finishedTime: Converter.timeStampToDate(payload.finishedTime),
finalStatus: payload.finalStatus,
progress: payload.progress,
+ applicationType: payload.applicationType,
diagnostics: payload.diagnostics,
amContainerLogs: payload.amContainerLogs,
amHostHttpAddress: payload.amHostHttpAddress,
@@ -54,7 +55,10 @@ export default DS.JSONAPISerializer.extend({
preemptedResourceMB: payload.preemptedResourceMB,
preemptedResourceVCores: payload.preemptedResourceVCores,
numNonAMContainerPreempted: payload.numNonAMContainerPreempted,
- numAMContainerPreempted: payload.numAMContainerPreempted
+ numAMContainerPreempted: payload.numAMContainerPreempted,
+ clusterUsagePercentage: payload.clusterUsagePercentage,
+ queueUsagePercentage: payload.queueUsagePercentage,
+ currentAppAttemptId: payload.currentAppAttemptId
}
};
@@ -75,7 +79,7 @@ export default DS.JSONAPISerializer.extend({
// payload has apps : { app: [ {},{},{} ] }
// need some error handling for ex apps or app may not be defined.
- if(payload.apps) {
+ if(payload.apps && payload.apps.app) {
normalizedArrayResponse.data = payload.apps.app.map(singleApp => {
return this.internalNormalizeSingleResponse(store, primaryModelClass,
singleApp, singleApp.id, requestType);
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-container.js
index e051396..b9b923d 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-container.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-container.js
@@ -57,13 +57,19 @@ export default DS.JSONAPISerializer.extend({
var normalizedArrayResponse = {};
if (payload && payload.container) {
- // payload has apps : { app: [ {},{},{} ] }
- // need some error handling for ex apps or app may not be defined.
- normalizedArrayResponse.data = payload.container.map(singleContainer => {
- return this.internalNormalizeSingleResponse(store, primaryModelClass,
- singleContainer, singleContainer.id, requestType);
- }, this);
- return normalizedArrayResponse;
+ if (Array.isArray(payload.container)) {
+ // payload has apps : { app: [ {},{},{} ] }
+ // need some error handling for ex apps or app may not be defined.
+ normalizedArrayResponse.data = payload.container.map(singleContainer => {
+ return this.internalNormalizeSingleResponse(store, primaryModelClass,
+ singleContainer, singleContainer.id, requestType);
+ }, this);
+ } else {
+ normalizedArrayResponse.data = [this.internalNormalizeSingleResponse(
+ store, primaryModelClass, payload.container, payload.container.id,
+ requestType)];
+ }
+ return normalizedArrayResponse;
} else {
normalizedArrayResponse.data = [];
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
index e2d09dc..409aa15 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
@@ -16,11 +16,20 @@
* limitations under the License.
*/
+body, html, body > .ember-view {
+ height: 100%;
+ overflow: visible;
+ color: @text-color;
+}
+body, html {
+ min-width: 1024px;
+}
+
/*
Over all style
*/
text {
- font: 12px sans-serif;
+ font: 16px sans-serif;
}
text.small {
@@ -35,6 +44,7 @@ html, body
width: 100%;
}
+
/*
queue's style (left banner of queues)
*/
@@ -45,14 +55,30 @@ text.queue {
fill : gray;
}
-path.queue {
- stroke: gray;
- fill: none;
+text.heatmap-cell {
+ font: 14px sans-serif;
+ font-weight: bold;
+ text-anchor: middle;
+ fill: Azure;
+ text-align: center;
+}
+
+text.heatmap-cell-notselected {
+ font: 14px sans-serif;
+ font-weight: bold;
+ text-anchor: middle;
+ fill: Silver;
+ text-align: center;
}
-circle.queue {
- r: 10;
- fill: Steelblue;
+text.heatmap-rack {
+ font: 20px sans-serif;
+ fill: DimGray;
+}
+
+path.queue {
+ stroke: "red";
+ fill: none;
}
/*
@@ -76,24 +102,21 @@ text.chart-title {
fill: Gray;
}
-text.donut-highlight-text {
- font-size: 20px;
+text.donut-highlight-text, text.donut-highlight-sub {
+ font-size: 15px;
font-family: sans-serif;
text-anchor: middle;
fill: Gray;
vertical-align: middle;
}
-rect.chart-frame {
- fill: none;
- stroke: gray;
- stroke-dasharray: 10,10;
+text.donut-highlight-sub {
+ font-size: 23px;
+ margin-top: 10px;
}
-line.chart-leftbanner {
- stroke-width: 2;
- stroke: gray;
- stroke-dasharray: 10,10;
+rect.chart-frame {
+ fill: none;
}
text.bar-chart-text {
@@ -106,9 +129,8 @@ text.bar-chart-text {
div.tooltip {
position: absolute;
text-align: center;
- /*height: 28px;*/
- padding: 2px;
- font: 12px sans-serif;
+ padding: 2px;
+ font: 24px sans-serif;
background: lightsteelblue;
border: 0px;
border-radius: 8px;
@@ -135,6 +157,19 @@ table.dataTable thead .sorting_desc_disabled {
background-image: url("/assets/images/datatables/sort_desc_disabled.png");
}
+.add-ellipsis {
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.breadcrumb {
+ padding-bottom: 3px;
+}
+
+.navbar-default .navbar-nav > li > a {
+ color: #337ab7;
+}
+
/*
* Queue selector
*/
@@ -158,6 +193,70 @@ table.dataTable thead .sorting_desc_disabled {
stroke-width: 2px;
}
+.lr-margin {
+ margin: 0px 30px;
+}
+
+.footer {
+ background-color: @white;
+ color: @text-color;
+
+ padding: 10px 0px;
+ margin: 0px;
+
+ border-top: 1px lightgrey solid;
+
+ font-size: .9em;
+}
+
+.table {
+ margin-bottom: 0px;
+ border: none;
+
+ overflow: hidden;
+}
+
+.table-bordered > thead > tr > th, .table-bordered > tbody > tr > th, .table-bordered > tfoot > tr > th, .table-bordered > thead > tr > td, .table-bordered > tbody > tr > td, .table-bordered > tfoot > tr > td {
+ border: none !important;
+}
+
+.dataTables_wrapper .table {
+ border: 1px solid lightgrey;
+ border-bottom: 1px solid lightgrey !important;
+ border-radious: 5px;
+}
+
+.dataTables_wrapper .table-bordered > thead > tr > th, .table-bordered > tbody > tr > th, .table-bordered > tfoot > tr > th, .table-bordered > thead > tr > td, .table-bordered > tbody > tr > td, .table-bordered > tfoot > tr > td {
+ border: 1px solid lightgrey;
+}
+
+td {
+ padding: 8px 15px 8px 15px !important;
+}
+
+.footer-frame {
+ height: 60px;
+}
+.footer {
+ height: 40px;
+}
+
+.footer-pusher {
+ min-height: 100%;
+ height: auto !important;
+ height: 100%;
+ margin: 0 auto -40px; // Must be same as footer & footer-frame
+}
+
+.panel-default .container-fluid {
+ margin-top: -45px !important;
+ margin-bottom: -10px !important;
+}
+
+.panel-heading {
+ font-weight: bold;
+}
+
.hadoop-brand-image {
margin-top: -10px;
width: auto;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
index 03b2c4a..7783db4 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
@@ -16,47 +16,70 @@
* limitations under the License.
}}
-<nav class="navbar navbar-default">
- <div class="container-fluid">
- <!-- Brand and toggle get grouped for better mobile display -->
- <div class="navbar-header">
- <a class="navbar-brand" href="#">
- <img class="hadoop-brand-image" alt="Apache Hadoop" src="assets/images/hadoop_logo.png" />
- </a>
- <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
- <span class="sr-only">Toggle navigation</span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </button>
- </div>
+<div class="footer-pusher">
- <!-- Collect the nav links, forms, and other content for toggling -->
- <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
- <ul class="nav navbar-nav">
- {{#link-to 'yarn-queue' 'root' tagName="li"}}
- {{#link-to 'yarn-queue' 'root' class="navigation-link"}}Queues
- <span class="sr-only">(current)</span>
+ <nav class="navbar navbar-default">
+ <div class="container-fluid">
+ <!-- Brand and toggle get grouped for better mobile display -->
+ <div class="navbar-header">
+ <a class="navbar-brand" href="#">
+ <img class="hadoop-brand-image" alt="Apache Hadoop" src="assets/images/hadoop_logo.png" />
+ </a>
+ <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ </div>
+
+ <!-- Collect the nav links, forms, and other content for toggling -->
+ <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
+ <ul class="nav navbar-nav">
+ {{#link-to 'cluster-overview' tagName="li"}}
+ {{#link-to 'cluster-overview' class="navigation-link"}}Cluster Overview
+ <span class="sr-only">(current)</span>
+ {{/link-to}}
{{/link-to}}
- {{/link-to}}
- {{#link-to 'yarn-apps' tagName="li"}}
- {{#link-to 'yarn-apps' class="navigation-link"}}Applications
- <span class="sr-only">(current)</span>
+ {{#link-to 'yarn-queues' 'root' tagName="li"}}
+ {{#link-to 'yarn-queues' 'root' class="navigation-link"}}Queues
+ <span class="sr-only">(current)</span>
+ {{/link-to}}
{{/link-to}}
- {{/link-to}}
- {{#link-to 'cluster-overview' tagName="li"}}
- {{#link-to 'cluster-overview' class="navigation-link"}}Cluster Overview
- <span class="sr-only">(current)</span>
+ {{#link-to 'yarn-apps.apps' tagName="li"}}
+ {{#link-to 'yarn-apps.apps' class="navigation-link"}}Applications
+ <span class="sr-only">(current)</span>
+ {{/link-to}}
{{/link-to}}
- {{/link-to}}
- {{#link-to 'yarn-nodes' tagName="li"}}
- {{#link-to 'yarn-nodes' class="navigation-link"}}Nodes
- <span class="sr-only">(current)</span>
+ {{#link-to 'yarn-nodes.table' tagName="li"}}
+ {{#link-to 'yarn-nodes.table' class="navigation-link"}}Nodes
+ <span class="sr-only">(current)</span>
+ {{/link-to}}
{{/link-to}}
- {{/link-to}}
- </ul>
- </div><!-- /.navbar-collapse -->
- </div><!-- /.container-fluid -->
-</nav>
+ </ul>
+ </div><!-- /.navbar-collapse -->
+ </div><!-- /.container-fluid -->
+ </nav>
+
+ <div class="container-fluid">
+ {{outlet}}
+ </div>
+
+ <br/>
+ <br/>
+ <br/>
-{{outlet}}
+</div>
+
+<div class="footer">
+ <div class="container-fluid content">
+ <a href={{env.app.hrefs.license}} target="_blank">
+ Licensed under the Apache License, Version 2.0.
+ </a>
+ <div class="ui-info">
+ {{#if env.app.timezone}}
+ <span>Timezone <b>{{env.app.timezone}}</b></span>
+ {{/if}}
+ </div>
+ </div>
+</div>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/cluster-overview.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/cluster-overview.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/cluster-overview.hbs
index 2094092..fa90799 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/cluster-overview.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/cluster-overview.hbs
@@ -16,59 +16,137 @@
* limitations under the License.
}}
-<div class="row">
- <div class="col-lg-3 container-fluid" id="finishedapps-donut-chart">
- {{donut-chart data=model.firstObject.getFinishedAppsDataForDonutChart
- title="Finished Apps"
- showLabels=true
- parentId="finishedapps-donut-chart"
- ratio=0.55
- maxHeight=350}}
- </div>
-
- <div class="col-lg-3 container-fluid" id="runningapps-donut-chart">
- {{donut-chart data=model.firstObject.getRunningAppsDataForDonutChart
- title="Running Apps"
- showLabels=true
- parentId="runningapps-donut-chart"
- ratio=0.55
- maxHeight=350}}
- </div>
+<div class="col-md-12 container-fluid">
+ {{em-breadcrumbs items=breadcrumbs}}
</div>
-<hr>
+{{#if model}}
-<div class="row">
- <div class="col-lg-3 container-fluid" id="nodes-donut-chart">
- {{donut-chart data=model.firstObject.getNodesDataForDonutChart
- title="Node Managers"
- showLabels=true
- parentId="nodes-donut-chart"
- ratio=0.55
- maxHeight=350}}
- </div>
-</div>
+ <div class="col-md-12 container-fluid">
+ <div class="row">
+ <div class="col-lg-6 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Cluster Resource Usage By Applications
+ </div>
+ <div class="container-fluid" id="appusage-donut-chart">
+ {{app-usage-donut-chart data=model.apps
+ showLabels=true
+ parentId="appusage-donut-chart"
+ ratio=0.6
+ maxHeight=400}}
+ </div>
+ </div>
+ </div>
+
+ <div class="col-lg-6 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Cluster Resource Usage By Leaf Queues
+ </div>
+ <div class="container-fluid" id="queueusage-donut-chart">
+ {{queue-usage-donut-chart data=model.queues
+ showLabels=true
+ parentId="queueusage-donut-chart"
+ ratio=0.6
+ maxHeight=400}}
+ </div>
+ </div>
+ </div>
+ </div>
+ <hr>
-<hr>
+ <div class="row">
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Finished Apps
+ </div>
+ <div class="container-fluid" id="finishedapps-donut-chart">
+ {{donut-chart data=model.clusterMetrics.firstObject.getFinishedAppsDataForDonutChart
+ showLabels=true
+ parentId="finishedapps-donut-chart"
+ ratio=0.6
+ maxHeight=350
+ colorTargets="good warn error"}}
+ </div>
+ </div>
+ </div>
-<div class="row">
- <div class="col-lg-3 container-fluid" id="mem-donut-chart">
- {{donut-chart data=model.firstObject.getMemoryDataForDonutChart
- title="Resource - Memory"
- showLabels=true
- parentId="mem-donut-chart"
- ratio=0.55
- maxHeight=350}}
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Running Apps
+ </div>
+ <div class="container-fluid" id="runningapps-donut-chart">
+ {{donut-chart data=model.clusterMetrics.firstObject.getRunningAppsDataForDonutChart
+ showLabels=true
+ parentId="runningapps-donut-chart"
+ ratio=0.6
+ maxHeight=350
+ colorTargets="warn good"}}
+ </div>
+ </div>
+ </div>
+
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Node Managers
+ </div>
+ <div class="container-fluid" id="nodes-donut-chart">
+ {{donut-chart data=model.clusterMetrics.firstObject.getNodesDataForDonutChart
+ showLabels=true
+ parentId="nodes-donut-chart"
+ ratio=0.6
+ maxHeight=350
+ colorTargets="good error warn"}}
+ </div>
+ </div>
+ </div>
</div>
- <div class="col-lg-3 container-fluid" id="vcore-donut-chart">
- {{donut-chart data=model.firstObject.getVCoreDataForDonutChart
- title="Resource - VCores"
- showLabels=true
- parentId="vcore-donut-chart"
- ratio=0.6
- maxHeight=350}}
+ <hr>
+ <div class="row">
+
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Resource - Memory
+ </div>
+ <div class="container-fluid" id="mem-donut-chart">
+ {{donut-chart data=model.clusterMetrics.firstObject.getMemoryDataForDonutChart
+ showLabels=true
+ parentId="mem-donut-chart"
+ ratio=0.6
+ maxHeight=350
+ colorTargets="good"
+ colorTargetReverse=true
+ type="memory"}}
+ </div>
+ </div>
+ </div>
+
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Resource - VCores
+ </div>
+ <div class="container-fluid" id="vcore-donut-chart">
+ {{donut-chart data=model.clusterMetrics.firstObject.getVCoreDataForDonutChart
+ showLabels=true
+ parentId="vcore-donut-chart"
+ ratio=0.6
+ maxHeight=350
+ colorTargets="good"
+ colorTargetReverse=true}}
+ </div>
+ </div>
+ </div>
</div>
</div>
+{{/if}}
+
+
{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs
index 0788d9c..a036a0c 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs
@@ -20,6 +20,7 @@
<thead>
<tr>
<th>Application ID</th>
+ <th>Application Type</th>
<th>Name</th>
<th>User</th>
<th>Queue</th>
@@ -30,13 +31,15 @@
<th>Finished Time</th>
<th>Priority</th>
<th>Progress</th>
- </tr>
+ <th>%Cluster</th>
+ </tr>
</thead>
<tbody>
{{#if arr}}
{{#each arr as |app|}}
<tr>
<td><a href="#/yarn-app/{{app.id}}">{{app.id}}</a></td>
+ <td>{{app.applicationType}}</td>
<td>{{app.appName}}</td>
<td>{{app.user}}</td>
<td>{{app.queue}}</td>
@@ -53,11 +56,13 @@
</div>
</div>
</td>
+ <td>{{app.clusterUsagePercentage}}</td>
</tr>
{{/each}}
{{else}}
<tr>
<td><a href="#/yarn-app/{{app.id}}">{{app.id}}</a></td>
+ <td>{{app.applicationType}}</td>
<td>{{app.appName}}</td>
<td>{{app.user}}</td>
<td>{{app.queue}}</td>
@@ -74,7 +79,8 @@
</div>
</div>
</td>
- </tr>
+ <td>{{app.clusterUsagePercentage}}</td>
+ </tr>
{{/if}}
</tbody>
</table>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/node-menu-panel.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/node-menu-panel.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/node-menu-panel.hbs
index 1e07e89..d2486c9 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/node-menu-panel.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/node-menu-panel.hbs
@@ -19,7 +19,7 @@
<div class="col-md-2 container-fluid">
<div class="panel panel-default">
<div class="panel-heading">
- <h4>Node Manager<br>({{node-name nodeId}})</h4>
+ <h4>Node Manager</h4>
</div>
<div class="panel-body">
<ul class="nav nav-pills nav-stacked" id="stacked-menu">
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/nodes-heatmap.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/nodes-heatmap.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/nodes-heatmap.hbs
new file mode 100644
index 0000000..e9e6261
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/nodes-heatmap.hbs
@@ -0,0 +1,27 @@
+{{!
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+}}
+
+<div class="container-fluid">
+ <div class="row">
+ <div class="col-md-6 container-fluid">
+ <input type="text" class="form-control" aria-label="..." placeholder="Enter part of host/rack to filter nodes"
+ onchange={{action "applyFilter"}}>
+ </div>
+ </div>
+</div>
+<p/>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-configuration-table.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-configuration-table.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-configuration-table.hbs
index 9045976..17a1e1a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-configuration-table.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-configuration-table.hbs
@@ -25,10 +25,6 @@
</thead>
<tbody>
<tr>
- <td>Queue Name</td>
- <td>{{queue.id}}</td>
- </tr>
- <tr>
<td>Configured Capacity</td>
<td>{{queue.capacity}}</td>
</tr>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-navigator.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-navigator.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-navigator.hbs
index fb9c6c8..d8dd236 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-navigator.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-navigator.hbs
@@ -16,21 +16,13 @@
* limitations under the License.
}}
-<div class="row">
- <div class="col-lg-4">
- <select class="js-example-basic-single" width="100%" id="queue-name-selector">
- {{item-selector element-id="queue-name-selector" prefix="Queue : " model=model}}
- </select>
- </div>
-</div><!-- /.row -->
-
<!-- queue selector -->
<div class="row">
- <div class="col-md-12 container-fluid" id="tree-selector-container">
+ <div class="col-md-12 container-fluid">
+ <div class="panel panel-default" id="tree-selector-container">
{{tree-selector model=model parentId="tree-selector-container" selected=selected}}
+ </div>
</div>
</div>
-<hr>
-
{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/timeline-view.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/timeline-view.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/timeline-view.hbs
index 6f529ba..b110268 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/timeline-view.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/timeline-view.hbs
@@ -26,12 +26,13 @@
{{/if}}
</div>
<div class="panel-body">
+ <br/><br/>
<div class="col-md-8 container-fluid" id={{parent-id}}>
</div>
<!-- diag info -->
<div class="col-md-4 container-fluid">
- <div class="panel panel-default">
+ <div class="panel panel-default add-ellipsis">
<div class="panel-heading">
{{#if selected.link}}
{{#link-to selected.linkname selected.id}}{{selected.id}}{{/link-to}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempt.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempt.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempt.hbs
index b01eceb..c30040b 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempt.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempt.hbs
@@ -16,10 +16,21 @@
* limitations under the License.
}}
+<div class="col-md-12 container-fluid">
+ {{em-breadcrumbs items=breadcrumbs}}
+</div>
+<br/><br/><br/>
<div class="container-fluid">
<div class="row">
{{#if model.attempt}}
- {{app-attempt-table attempt=model.attempt}}
+ <div class="container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Application attempt Information
+ </div>
+ {{app-attempt-table attempt=model.attempt}}
+ </div>
+ </div>
{{/if}}
</div>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempts.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempts.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempts.hbs
new file mode 100644
index 0000000..ffaa60d
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempts.hbs
@@ -0,0 +1,57 @@
+{{!
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+}}
+
+<div class="col-md-12 container-fluid">
+ {{em-breadcrumbs items=breadcrumbs}}
+</div>
+
+<div class="col-md-12 container-fluid">
+ <div class="row">
+
+ <div class="col-md-2 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4>Application</h4>
+ </div>
+ <div class="panel-body">
+ <ul class="nav nav-pills nav-stacked" id="stacked-menu">
+ <ul class="nav nav-pills nav-stacked collapse in">
+ {{#link-to 'yarn-app' tagName="li"}}
+ {{#link-to 'yarn-app' model.appId}}Information
+ {{/link-to}}
+ {{/link-to}}
+ {{#link-to 'yarn-app-attempts' tagName="li"}}
+ {{#link-to 'yarn-app-attempts' model.appId}}Attempts List
+ {{/link-to}}
+ {{/link-to}}
+ </ul>
+ </ul>
+ </div>
+ </div>
+ </div>
+
+ <div class="col-md-10 container-fluid">
+ <!-- timeline view of children -->
+ <div class="row">
+ {{timeline-view parent-id="attempt-timeline-div" my-id="timeline-view" height="100%" rmModel=model.attempts label="shortAppAttemptId" attemptModel=true}}
+ </div>
+ </div>
+
+ </div>
+</div>
+{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
index 2bc20f2..4db4f8a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
@@ -16,148 +16,238 @@
* limitations under the License.
}}
-<div class="container-fluid">
- <!-- app table -->
- <div class="row">
- <div class="col-md-12 container-fluid">
- <div class="panel panel-default">
- <div class="panel-heading">
- Application Basic Information
- </div>
- {{app-table table-id="app-table" app=model.app}}
- </div>
- </div>
- </div>
+<div class="col-md-12 container-fluid">
+ {{em-breadcrumbs items=breadcrumbs}}
+</div>
- <!-- diag info and other infos -->
+{{#if model.app}}
+<div class="col-md-12 container-fluid">
<div class="row">
- <!-- diag info -->
- <div class="col-md-4 container-fluid">
- {{#if model.app.isFailed}}
- <div class="panel panel-danger">
- <div class="panel-heading">
- Diagnostics
- </div>
- <div class="panel-body">{{model.app.diagnostics}}</div>
+
+ <div class="col-md-2 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4>Application</h4>
</div>
- {{else}}
- <div class="panel panel-default">
- <div class="panel-body">
- Diagnostics
- </div>
- <div class="panel-footer">{{model.app.diagnostics}}</div>
+ <div class="panel-body">
+ <ul class="nav nav-pills nav-stacked" id="stacked-menu">
+ <ul class="nav nav-pills nav-stacked collapse in">
+ {{#link-to 'yarn-app' tagName="li"}}
+ {{#link-to 'yarn-app' model.app.id}}Information
+ {{/link-to}}
+ {{/link-to}}
+ {{#link-to 'yarn-app-attempts' tagName="li"}}
+ {{#link-to 'yarn-app-attempts' model.app.id}}Attempts List
+ {{/link-to}}
+ {{/link-to}}
+ </ul>
+ </ul>
</div>
- {{/if}}
+ </div>
</div>
- <div class="col-md-5 container-fluid">
- <div class="panel panel-default">
- <div class="panel-heading">Scheduling Info</div>
- <table class="table">
- <tbody>
- <tr>
- <td>Allocated Resource</td>
- <td>{{model.app.allocatedResource}}</td>
- </tr>
- <tr>
- <td>Running Containers</td>
- <td>{{model.app.runningContainersNumber}}</td>
- </tr>
- <tr>
- <td>Preempted Resource</td>
- <td>{{model.app.preemptedResource}}</td>
- </tr>
- <tr>
- <td>Num Non-AM container preempted</td>
- <td>{{model.app.numAMContainerPreempted}}</td>
- </tr>
- <tr>
- <td>Num AM container preempted</td>
- <td>{{model.app.numAMContainerPreempted}}</td>
- </tr>
- <tr>
- <td>Aggregated Resource Usage</td>
- <td>{{model.app.aggregatedResourceUsage}}</td>
- </tr>
- </tbody>
- </table>
+ <div class="col-md-10 container-fluid">
+ <div class="row">
+ <div class="col-md-12 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">Basic Info</div>
+ <table class="display table table-striped table-bordered"
+ cellspacing="0" width="100%">
+ <thead>
+ <tr>
+ <th>Application ID</th>
+ <th>Name</th>
+ <th>User</th>
+ <th>Queue</th>
+ <th>State</th>
+ <th>Final Status</th>
+ <th>Start Time</th>
+ <th>Elapsed Time</th>
+ <th>Finished Time</th>
+ <th>Priority</th>
+ <th>Progress</th>
+ <th>Is Unmanaged AM</th>
+ </tr>
+ </thead>
+
+ <tbody>
+ <tr>
+ <td>{{model.app.id}}</td>
+ <td>{{model.app.appName}}</td>
+ <td>{{model.app.user}}</td>
+ <td>{{model.app.queue}}</td>
+ <td>{{model.app.state}}</td>
+ <td>
+ <span class={{model.app.finalStatusStyle}}>
+ {{model.app.finalStatus}}
+ </span>
+ </td>
+ <td>{{model.app.startTime}}</td>
+ <td>{{model.app.elapsedTime}}</td>
+ <td>{{model.app.validatedFinishedTs}}</td>
+ <td>{{model.app.priority}}</td>
+ <td>
+ <div class="progress" style="margin-bottom: 0;">
+ <div class="progress-bar" role="progressbar"
+ aria-valuenow="60" aria-valuemin="0"
+ aria-valuemax="100"
+ style={{model.app.progressStyle}}>
+ {{model.app.progress}}%
+ </div>
+ </div>
+ </td>
+ <td>{{model.app.unmanagedApplication}}</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
</div>
- </div>
- <!-- other info -->
- <div class="col-md-3 container-fluid">
- <div class="panel panel-default">
- <div class="panel-heading">Other Info</div>
- <table class="table">
- <tbody>
- <tr>
- <td>AM Container Log</td>
- <td><a href={{model.app.amContainerLogs}}>Link</a></td>
- </tr>
- <tr>
- <td>AM Host Http Addr</td>
- <td><a href={{model.app.amHostHttpAddress}}>Link</a></td>
- </tr>
- <tr>
- <td>Log Aggregation Status</td>
- <td>{{model.app.logAggregationStatus}}</td>
- </tr>
- <tr>
- <td>Is Unmanaged AM</td>
- <td>{{model.app.unmanagedApplication}}</td>
- </tr>
- <tr>
- <td>AM Node Label Expression</td>
- <td>{{model.app.amNodeLabelExpression}}</td>
- </tr>
- </tbody>
- </table>
+ <div class="row">
+ {{#if model.app.diagnostics}}
+ <div class="col-md-12 container-fluid">
+ {{#if model.app.isFailed}}
+ <div class="panel panel-danger">
+ <div class="panel-heading">
+ Diagnostics
+ </div>
+ <div class="panel-body">{{model.app.diagnostics}}</div>
+ </div>
+ {{else}}
+ <div class="panel panel-default">
+ <div class="panel-body">
+ Diagnostics
+ </div>
+ <div class="panel-footer">{{model.app.diagnostics}}</div>
+ </div>
+ {{/if}}
+ </div>
+ {{/if}}
</div>
- </div>
- </div>
-<!--
- <div class="row">
- <div class="col-md-12 container-fluid">
- <div class="panel panel-default">
- <div class="panel-heading">
- Application Attempts
+ <div class="row">
+ <div class="col-md-8 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">Scheduling Info</div>
+ <table class="display table table-striped table-bordered"
+ cellspacing="0" width="100%">
+ <thead>
+ <tr>
+ <th>Allocated Resource</th>
+ <th>Running Containers</th>
+ <th>Preempted Resource</th>
+ <th>Num Non-AM container preempted</th>
+ <th>Num AM container preempted</th>
+ <th>Aggregated Resource Usage</th>
+ </tr>
+ </thead>
+
+ <tbody>
+ <tr>
+ <td>{{model.app.allocatedResource}}</td>
+ <td>{{model.app.runningContainersNumber}}</td>
+ <td>{{model.app.preemptedResource}}</td>
+ <td>{{model.app.numAMContainerPreempted}}</td>
+ <td>{{model.app.numAMContainerPreempted}}</td>
+ <td>{{model.app.aggregatedResourceUsage}}</td>
+ </tr>
+ </tbody>
+ </table>
</div>
- <table id="app-attempt-table" class="table table-striped table-bordered" cellspacing="0" width="100%" height="100%">
- <thead>
+ </div>
+
+ <div class="col-md-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">App Master Info</div>
+ <table class="display table table-striped table-bordered"
+ cellspacing="0" width="100%">
+ <thead>
<tr>
- <th>Start Time</th>
- <th>Master ContainerId</th>
- <th>Node Http Address</th>
- <th>Node Id</th>
- <th>Logs Link</th>
- </tr>
- </thead>
- <tbody>
- {{#each model.attempts as |attempt|}}
- <tr>
- <td>{{attempt.startTime}}</td>
- <td>{{attempt.containerId}}</td>
- <td><a href={{attempt.nodeHttpAddress}}>{{attempt.nodeHttpAddress}}</a></td>
- <td>{{attempt.nodeId}}</td>
- <td><a href={{attempt.logsLink}}>link</a></td>
- </tr>
- {{/each}}
- </tbody>
- </table>
+ <th>Master Container Log</th>
+ <td>Master Node</td>
+ <td>Master Node Label Expr</td>
+ </tr>
+ </thead>
+
+ <tbody>
+ <tr>
+ <td><a href={{model.app.amContainerLogs}}>Link</a></td>
+ <td><a href={{model.app.amHostHttpAddress}}>Link</a></td>
+ <td>{{model.app.amNodeLabelExpression}}</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
</div>
- </div>
- </div>
--->
- <!-- timeline view of children -->
- <div class="row">
- {{timeline-view parent-id="attempt-timeline-div" my-id="timeline-view" height="100%" rmModel=model.attempts label="shortAppAttemptId" attemptModel=true}}
- </div>
-</div>
+ </div>
+
+ {{#if model.nodes}}
+ {{#if model.rmContainers}}
+ <div class="row" id="stackd-bar-chart-mem">
+ {{per-app-memusage-by-nodes-stacked-barchart
+ nodes=model.nodes
+ rmContainers=model.rmContainers
+ parentId="stackd-bar-chart-mem"
+ title=(concat 'Memory usage by nodes for: [' model.app.id ']')}}
+ </div>
+
+ <hr>
+
+ <div class="row" id="stackd-bar-chart-ncontainer">
+ {{per-app-ncontainers-by-nodes-stacked-barchart
+ nodes=model.nodes
+ rmContainers=model.rmContainers
+ parentId="stackd-bar-chart-ncontainer"
+ title=(concat 'Running #Containers by nodes for: [' model.app.id ']')}}
+ </div>
+ {{/if}}
+ {{/if}}
-<!--
-{{simple-table table-id="app-attempt-table" paging=false bFilter=false}}
--->
+ </div>
+
+ <!--
+ <div class="row">
+ <div class="col-md-12 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Application Attempts
+ </div>
+ <table id="app-attempt-table" class="table table-striped table-bordered" cellspacing="0" width="100%" height="100%">
+ <thead>
+ <tr>
+ <th>Start Time</th>
+ <th>Master ContainerId</th>
+ <th>Node Http Address</th>
+ <th>Node Id</th>
+ <th>Logs Link</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#each model.attempts as |attempt|}}
+ <tr>
+ <td>{{attempt.startTime}}</td>
+ <td>{{attempt.containerId}}</td>
+ <td><a href={{attempt.nodeHttpAddress}}>{{attempt.nodeHttpAddress}}</a></td>
+ <td>{{attempt.nodeId}}</td>
+ <td><a href={{attempt.logsLink}}>link</a></td>
+ </tr>
+ {{/each}}
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ -->
+ <!-- timeline view of children -->
+ <!--
+ <div class="row">
+ {{timeline-view parent-id="attempt-timeline-div" my-id="timeline-view" height="100%" rmModel=model.attempts label="shortAppAttemptId" attemptModel=true}}
+ </div>
+ -->
+ </div>
+</div>
+{{/if}}
{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs
index 0fc6edf..ec17379 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs
@@ -15,10 +15,78 @@
* See the License for the specific language governing permissions and
* limitations under the License.
}}
-{{#if model}}
- {{app-table table-id="apps-table" arr=model}}
- {{simple-table table-id="apps-table" bFilter=true colsOrder="0,desc" colTypes="natural elapsed-time" colTargets="0 7"}}
-{{else}}
- <h4 align = "center">Could not find any applications from this cluster</h4>
-{{/if}}
-{{outlet}}
+
+<div class="col-md-12 container-fluid">
+ {{em-breadcrumbs items=breadcrumbs}}
+</div>
+
+<div class="col-md-12 container-fluid">
+ <div class="row">
+
+ <div class="col-md-2 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4>Application</h4>
+ </div>
+ <div class="panel-body">
+ <ul class="nav nav-pills nav-stacked" id="stacked-menu">
+ <ul class="nav nav-pills nav-stacked collapse in">
+ {{#link-to 'yarn-apps.apps' tagName="li"}}
+ {{#link-to 'yarn-apps.apps'}}All Applications
+ {{/link-to}}
+ {{/link-to}}
+ {{#link-to 'yarn-apps.services' tagName="li"}}
+ {{#link-to 'yarn-apps.services'}}Long Running Services
+ {{/link-to}}
+ {{/link-to}}
+ </ul>
+ </ul>
+ </div>
+ </div>
+ </div>
+
+ <div class="col-md-10 container-fluid">
+ {{#if model.clusterMetrics}}
+ <div class="row">
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Finished Apps
+ </div>
+ <div class="container-fluid" id="finishedapps-donut-chart">
+ {{donut-chart data=model.clusterMetrics.firstObject.getFinishedAppsDataForDonutChart
+ showLabels=true
+ parentId="finishedapps-donut-chart"
+ ratio=0.6
+ maxHeight=350
+ colorTargets="good warn error"
+ }}
+ </div>
+ </div>
+ </div>
+
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Running Apps
+ </div>
+ <div class="container-fluid" id="runningapps-donut-chart">
+ {{donut-chart data=model.clusterMetrics.firstObject.getRunningAppsDataForDonutChart
+ showLabels=true
+ parentId="runningapps-donut-chart"
+ ratio=0.6
+ maxHeight=350
+ colorTargets="warn good"
+ }}
+ </div>
+ </div>
+ </div>
+ </div>
+ {{/if}}
+
+ <div class="row">
+ {{outlet}}
+ </div>
+ </div>
+ </div>
+</div>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps/apps.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps/apps.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps/apps.hbs
new file mode 100644
index 0000000..a2ba163
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps/apps.hbs
@@ -0,0 +1,24 @@
+{{!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+--}}
+
+{{#if model.apps}}
+ {{app-table table-id="apps-table" arr=model.apps}}
+ {{simple-table table-id="apps-table" bFilter=true colsOrder="0,desc" colTypes="natural elapsed-time" colTargets="0 7"}}
+{{else}}
+ <h4 align="center">Could not find any applications from this cluster</h4>
+{{/if}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps/services.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps/services.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps/services.hbs
new file mode 100644
index 0000000..e472e8e
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps/services.hbs
@@ -0,0 +1,27 @@
+{{!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+--}}
+
+{{#if model.apps}}
+ {{app-table table-id="apps-table" arr=model.apps}}
+ {{simple-table table-id="apps-table" bFilter=true colsOrder="0,desc"
+ colTypes="natural elapsed-time" colTargets="0 7" defaultSearch="slider"}}
+{{else}}
+ <h4 align="center">Could not find any applications from this cluster</h4>
+{{/if}}
+
+{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs
index 42de7eb..832e452 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs
@@ -17,6 +17,10 @@
--}}
<div class="col-md-12 container-fluid">
+ {{em-breadcrumbs items=breadcrumbs}}
+</div>
+
+<div class="col-md-12 container-fluid">
<div class="row">
{{node-menu-panel path="yarn-node-apps" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
{{#if model.apps}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs
index 4104eec..224c695 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs
@@ -17,6 +17,10 @@
--}}
<div class="col-md-12 container-fluid">
+ {{em-breadcrumbs items=breadcrumbs}}
+</div>
+
+<div class="col-md-12 container-fluid">
<div class="row">
{{node-menu-panel path="yarn-node-container" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
<div class="col-md-10 container-fluid">
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs
index 3ebcc6f..e96c83f 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs
@@ -17,6 +17,10 @@
--}}
<div class="col-md-12 container-fluid">
+ {{em-breadcrumbs items=breadcrumbs}}
+</div>
+
+<div class="col-md-12 container-fluid">
<div class="row">
{{node-menu-panel path="yarn-node-containers" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
{{#if model.containers}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
index d6f30ec..ddec5c4 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
@@ -17,78 +17,104 @@
--}}
<div class="col-md-12 container-fluid">
+ {{em-breadcrumbs items=breadcrumbs}}
+</div>
+
+<div class="col-md-12 container-fluid">
<div class="row">
+
{{node-menu-panel path="yarn-node" nodeId=model.rmNode.id nodeAddr=model.node.id}}
+
<div class="col-md-10 container-fluid">
- <div class="panel panel-default">
- <div class="panel-heading">Node Information</div>
+
+ <div class="row">
+ <div class="col-md-12 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">Node Information</div>
<table class="table">
<tbody>
- <tr>
- <td>Total Vmem allocated for Containers</td>
- <td>{{divide num=model.node.totalVmemAllocatedContainersMB den=1024}} GB</td>
- </tr>
- <tr>
- <td>Vmem enforcement enabled</td>
- <td>{{model.node.vmemCheckEnabled}}</td>
- </tr>
- <tr>
- <td>Total Pmem allocated for Containers</td>
- <td>{{divide num=model.node.totalPmemAllocatedContainersMB den=1024}} GB</td>
- </tr>
- <tr>
- <td>Pmem enforcement enabled</td>
- <td>{{model.node.pmemCheckEnabled}}</td>
- </tr>
- <tr>
- <td>Total VCores allocated for Containers</td>
- <td>{{model.node.totalVCoresAllocatedContainers}}</td>
- </tr>
- <tr>
- <td>Node Healthy Status</td>
- <td>{{model.node.nodeHealthy}}</td>
- </tr>
- <tr>
- <td>Last Node Health Report Time</td>
- <td>{{model.node.lastNodeUpdateTime}}</td>
- </tr>
- <tr>
- <td>Node Health Report</td>
- <td>{{model.node.healthReport}}</td>
- </tr>
- <tr>
- <td>Node Manager Start Time</td>
- <td>{{model.node.nmStartupTime}}</td>
- </tr>
- <tr>
- <td>Node Manager Version</td>
- <td>{{model.node.nodeManagerBuildVersion}}</td>
- </tr>
- <tr>
- <td>Hadoop Version</td>
- <td>{{model.node.hadoopBuildVersion}}</td>
- </tr>
+ <tr>
+ <td>Total Vmem allocated for Containers</td>
+ <td>{{divide num=model.node.totalVmemAllocatedContainersMB den=1024}} GB</td>
+ </tr>
+ <tr>
+ <td>Vmem enforcement enabled</td>
+ <td>{{model.node.vmemCheckEnabled}}</td>
+ </tr>
+ <tr>
+ <td>Total Pmem allocated for Containers</td>
+ <td>{{divide num=model.node.totalPmemAllocatedContainersMB den=1024}} GB</td>
+ </tr>
+ <tr>
+ <td>Pmem enforcement enabled</td>
+ <td>{{model.node.pmemCheckEnabled}}</td>
+ </tr>
+ <tr>
+ <td>Total VCores allocated for Containers</td>
+ <td>{{model.node.totalVCoresAllocatedContainers}}</td>
+ </tr>
+ <tr>
+ <td>Node Healthy Status</td>
+ <td>{{model.node.nodeHealthy}}</td>
+ </tr>
+ <tr>
+ <td>Last Node Health Report Time</td>
+ <td>{{model.node.lastNodeUpdateTime}}</td>
+ </tr>
+ <tr>
+ <td>Node Health Report</td>
+ <td>{{model.node.healthReport}}</td>
+ </tr>
+ <tr>
+ <td>Node Manager Start Time</td>
+ <td>{{model.node.nmStartupTime}}</td>
+ </tr>
+ <tr>
+ <td>Node Manager Version</td>
+ <td>{{model.node.nodeManagerBuildVersion}}</td>
+ </tr>
+ <tr>
+ <td>Hadoop Version</td>
+ <td>{{model.node.hadoopBuildVersion}}</td>
+ </tr>
</tbody>
</table>
</div>
- <div class="col-lg-4 container-fluid" id="mem-donut-chart">
- {{donut-chart data=model.rmNode.getMemoryDataForDonutChart
- title="Resource - Memory (in MB)"
- showLabels=true
- parentId="mem-donut-chart"
- ratio=0.55
- maxHeight=350}}
+ </div>
</div>
- <div class="col-lg-4 container-fluid" id="vcore-donut-chart">
- {{donut-chart data=model.rmNode.getVCoreDataForDonutChart
- title="Resource - VCores"
- showLabels=true
- parentId="vcore-donut-chart"
- ratio=0.55
- maxHeight=350}}
- </div>
+ <div class="row">
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Resource - Memory (in MB)
+ </div>
+ <div class="container-fluid" id="mem-donut-chart">
+ {{donut-chart data=model.rmNode.getMemoryDataForDonutChart
+ showLabels=true
+ parentId="mem-donut-chart"
+ ratio=0.6
+ maxHeight=350}}
+ </div>
+ </div>
+ </div>
+
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Resource - VCores
+ </div>
+ <div class="container-fluid" id="vcore-donut-chart">
+ {{donut-chart data=model.rmNode.getVCoreDataForDonutChart
+ showLabels=true
+ parentId="vcore-donut-chart"
+ ratio=0.6
+ maxHeight=350}}
+ </div>
+ </div>
+ </div>
</div>
</div>
+ </div>
</div>
{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs
index 3c78498..ffab3e9 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs
@@ -16,48 +16,57 @@
limitations under the License.
--}}
-{{#if model}}
-<table id="nodes-table" class="display table table-striped table-bordered" cellspacing="0" width="100%">
- <thead>
- <tr>
- <th>Node Labels</th>
- <th>Rack</th>
- <th>Node State</th>
- <th>Node Address</th>
- <th>Node HTTP Address</th>
- <th>Last Health Update</th>
- <th>Health-Report</th>
- <th>Containers</th>
- <th>Mem Used</th>
- <th>Mem Avail</th>
- <th>VCores Used</th>
- <th>VCores Avail</th>
- <th>Version</th>
- </tr>
- </thead>
- <tbody>
- {{#each model as |node|}}
- <tr>
- <td>{{node.nodeLabelsAsString}}</td>
- <td>{{node.rack}}</td>
- <td><span class={{node.nodeStateStyle}}>{{node.state}}</span></td>
- <td>{{node.id}}</td>
- {{node-link nodeId=node.id nodeHTTPAddress=node.nodeHTTPAddress nodeState=node.state}}
- <td>{{node.lastHealthUpdate}}</td>
- <td>{{node.healthReport}}</td>
- <td>{{node.numContainers}}</td>
- <td>{{divide num=node.usedMemoryMB den=1024}} GB</td>
- <td>{{divide num=node.availMemoryMB den=1024}} GB</td>
- <td>{{node.usedVirtualCores}}</td>
- <td>{{node.availableVirtualCores}}</td>
- <td>{{node.version}}</td>
- </tr>
- {{/each}}
- </tbody>
-</table>
-
-{{simple-table table-id="nodes-table" bFilter=true}}
-{{else}}
- <h4 align = "center">No nodes found on this cluster</h4>
-{{/if}}
-{{outlet}}
+<div class="col-md-12 container-fluid">
+ {{em-breadcrumbs items=breadcrumbs}}
+</div>
+
+<div class="row">
+ <div class="col-md-2 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4>Nodes</h4>
+ </div>
+ <div class="panel-body">
+ <ul class="nav nav-pills nav-stacked" id="stacked-menu">
+ <ul class="nav nav-pills nav-stacked collapse in">
+
+ {{#link-to "yarn-nodes.table" tagName="li"}}
+ {{#link-to 'yarn-nodes.table'}}Nodes Table
+ {{/link-to}}
+ {{/link-to}}
+
+ {{#link-to 'yarn-nodes.heatmap' tagName="li"}}
+ {{#link-to 'yarn-nodes.heatmap'}}Nodes Heatmap Chart
+ {{/link-to}}
+ {{/link-to}}
+
+ </ul>
+ </ul>
+ </div>
+ </div>
+ </div>
+
+ <div class="col-md-10 container-fluid">
+ {{#if model.clusterMetrics}}
+ <div class="row">
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Node Managers
+ </div>
+ <div class="container-fluid" id="nodes-donut-chart">
+ {{donut-chart data=model.clusterMetrics.firstObject.getNodesDataForDonutChart
+ showLabels=true
+ parentId="nodes-donut-chart"
+ ratio=0.6
+ maxHeight=350
+ colorTargets="good error warn"}}
+ </div>
+ </div>
+ </div>
+ </div>
+ {{/if}}
+
+ {{outlet}}
+ </div>
+</div>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes/heatmap.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes/heatmap.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes/heatmap.hbs
new file mode 100644
index 0000000..e06249f
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes/heatmap.hbs
@@ -0,0 +1,30 @@
+{{!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+--}}
+
+{{#if model.nodes}}
+
+ <div class="row">
+ <div class="col-lg-12 container-fluid" id="nodes-heatmap-chart">
+ {{nodes-heatmap model=model.nodes parentId="nodes-heatmap-chart"
+ title="Node Heatmap Chart (Usage of Memory)"}}
+ </div>
+ </div>
+
+{{/if}}
+
+{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes/table.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes/table.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes/table.hbs
new file mode 100644
index 0000000..d9fae3a
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes/table.hbs
@@ -0,0 +1,67 @@
+{{!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+--}}
+<div class="row">
+
+ {{#if model.nodes}}
+ <table id="nodes-table" class="display table table-striped table-bordered"
+ cellspacing="0" width="100%">
+ <thead>
+ <tr>
+ <th>Node Labels</th>
+ <th>Rack</th>
+ <th>Node State</th>
+ <th>Node Address</th>
+ <th>Node HTTP Address</th>
+ <th>Last Health Update</th>
+ <th>Health-Report</th>
+ <th>Containers</th>
+ <th>Mem Used</th>
+ <th>Mem Avail</th>
+ <th>VCores Used</th>
+ <th>VCores Avail</th>
+ <th>Version</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#each model.nodes as |node|}}
+ <tr>
+ <td>{{node.nodeLabelsAsString}}</td>
+ <td>{{node.rack}}</td>
+ <td><span class={{node.nodeStateStyle}}>{{node.state}}</span></td>
+ <td>{{node.id}}</td>
+ {{node-link nodeId=node.id nodeHTTPAddress=node.nodeHTTPAddress nodeState=node.state}}
+ <td>{{node.lastHealthUpdate}}</td>
+ <td>{{node.healthReport}}</td>
+ <td>{{node.numContainers}}</td>
+ <td>{{divide num=node.usedMemoryMB den=1024}} GB</td>
+ <td>{{divide num=node.availMemoryMB den=1024}} GB</td>
+ <td>{{node.usedVirtualCores}}</td>
+ <td>{{node.availableVirtualCores}}</td>
+ <td>{{node.version}}</td>
+ </tr>
+ {{/each}}
+ </tbody>
+ </table>
+
+ {{simple-table table-id="nodes-table" bFilter=true}}
+ {{else}}
+ <h4 align="center">No nodes found on this cluster</h4>
+ {{/if}}
+</div>
+
+{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7190ddf6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue-apps.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue-apps.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue-apps.hbs
new file mode 100644
index 0000000..7cfd4c6
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue-apps.hbs
@@ -0,0 +1,66 @@
+{{!
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+}}
+
+<div class="col-md-12 container-fluid">
+ {{em-breadcrumbs items=breadcrumbs}}
+</div>
+
+<div class="col-md-12 container-fluid">
+ <div class="row">
+
+ <div class="col-md-2 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4>Application</h4>
+ </div>
+ <div class="panel-body">
+ <ul class="nav nav-pills nav-stacked" id="stacked-menu">
+ <ul class="nav nav-pills nav-stacked collapse in">
+ {{#link-to 'yarn-queue' tagName="li"}}
+ {{#link-to 'yarn-queue' model.selected}}Information
+ {{/link-to}}
+ {{/link-to}}
+ {{#link-to 'yarn-queue-apps' tagName="li"}}
+ {{#link-to 'yarn-queue-apps' model.selected}}Applications List
+ {{/link-to}}
+ {{/link-to}}
+ </ul>
+ </ul>
+ </div>
+ </div>
+ </div>
+
+ <div class="col-md-10 container-fluid">
+ <!-- timeline view of children -->
+ <div class="row">
+
+ <div class="col-lg-12 container-fluid">
+ {{#if model.apps}}
+ {{app-table table-id="apps-table" arr=model.apps}}
+ {{simple-table table-id="apps-table" bFilter=true colTypes="elapsed-time" colTargets="7"}}
+ {{else}}
+ <h4 align = "center">Could not find any applications from this cluster</h4>
+ {{/if}}
+ </div>
+
+ </div>
+ </div>
+
+ </div>
+</div>
+{{outlet}}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org