http://git-wip-us.apache.org/repos/asf/hadoop/blob/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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/6b62d1a2/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-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org