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 su...@apache.org on 2016/10/12 15:07:51 UTC

[37/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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/a570f734/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