You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by yu...@apache.org on 2013/08/07 18:52:46 UTC

git commit: AMBARI-2831. YARN specific heatmaps need to be provided. (onechiporenko via yusaku)

Updated Branches:
  refs/heads/trunk 842125aa9 -> 3bc7d8336


AMBARI-2831. YARN specific heatmaps need to be provided. (onechiporenko via yusaku)


Project: http://git-wip-us.apache.org/repos/asf/incubator-ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ambari/commit/3bc7d833
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ambari/tree/3bc7d833
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ambari/diff/3bc7d833

Branch: refs/heads/trunk
Commit: 3bc7d8336ce8afd0a6bdd7bf0d2d4141fac70990
Parents: 842125a
Author: Yusaku Sako <yu...@hortonworks.com>
Authored: Wed Aug 7 09:52:34 2013 -0700
Committer: Yusaku Sako <yu...@hortonworks.com>
Committed: Wed Aug 7 09:52:34 2013 -0700

----------------------------------------------------------------------
 ambari-web/app/assets/test/tests.js             |   3 +-
 ambari-web/app/controllers.js                   |   1 +
 .../app/controllers/main/charts/heatmap.js      |   3 +-
 .../heatmap_metric_yarn_ResourceUsed.js         |  52 ++++++++
 ambari-web/app/messages.js                      |   1 +
 .../heatmap_metric_yarn_ResourceUsed_test.js    | 130 +++++++++++++++++++
 6 files changed, 188 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/3bc7d833/ambari-web/app/assets/test/tests.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/test/tests.js b/ambari-web/app/assets/test/tests.js
index 16b466a..aa1e6f2 100644
--- a/ambari-web/app/assets/test/tests.js
+++ b/ambari-web/app/assets/test/tests.js
@@ -26,6 +26,7 @@ require('test/controllers/main/admin/security/add/step3_test');
 require('test/controllers/main/admin/security/add/step4_test');
 require('test/controllers/main/charts/heatmap_test');
 require('test/controllers/main/charts/heatmap_metrics/heatmap_metric_test');
+require('test/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_ResourceUsed_test');
 require('test/controllers/main/service/reassign_controller_test');
 require('test/controllers/main/dashboard_test');
 require('test/controllers/main/host_test');
@@ -64,4 +65,4 @@ require('test/views/common/chart/linear_time_test');
 require('test/views/common/filter_view_test');
 require('test/views/common/configs/services_config_test');
 require('test/models/host_test');
-require('test/models/rack_test');
+require('test/models/rack_test');
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/3bc7d833/ambari-web/app/controllers.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers.js b/ambari-web/app/controllers.js
index baa11f4..7ef651e 100644
--- a/ambari-web/app/controllers.js
+++ b/ambari-web/app/controllers.js
@@ -81,6 +81,7 @@ require('controllers/main/charts/heatmap_metrics/heatmap_metric_mapreduce_memHea
 require('controllers/main/charts/heatmap_metrics/heatmap_metric_yarn');
 require('controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_gctime');
 require('controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_memHeapUsed');
+require('controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_ResourceUsed');
 require('controllers/main/charts/heatmap_metrics/heatmap_metric_hbase');
 require('controllers/main/charts/heatmap_metrics/heatmap_metric_hbase_readrequest');
 require('controllers/main/charts/heatmap_metrics/heatmap_metric_hbase_writerequest');

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/3bc7d833/ambari-web/app/controllers/main/charts/heatmap.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/charts/heatmap.js b/ambari-web/app/controllers/main/charts/heatmap.js
index 771aa66..dbe8843 100644
--- a/ambari-web/app/controllers/main/charts/heatmap.js
+++ b/ambari-web/app/controllers/main/charts/heatmap.js
@@ -68,7 +68,8 @@ App.MainChartsHeatmapController = Em.Controller.extend({
           category: 'yarn',
           items: [
             App.MainChartHeatmapYarnGCTimeMillisMetric.create(),
-            App.MainChartHeatmapYarnMemHeapUsedMetric.create()
+            App.MainChartHeatmapYarnMemHeapUsedMetric.create(),
+            App.MainChartHeatmapYarnResourceUsedMetric.create()
           ]
         })
       );

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/3bc7d833/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_ResourceUsed.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_ResourceUsed.js b/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_ResourceUsed.js
new file mode 100644
index 0000000..e40282a
--- /dev/null
+++ b/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_ResourceUsed.js
@@ -0,0 +1,52 @@
+/**
+ * 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.
+ */
+
+var App = require('app');
+
+/**
+ *
+ */
+App.MainChartHeatmapYarnResourceUsedMetric = App.MainChartHeatmapYarnMetrics.extend({
+  metricUrlTemplate: '/clusters/{clusterName}/services/YARN/components/RESOURCEMANAGER?fields=ServiceComponentInfo/rm_metrics',
+  name: Em.I18n.t('charts.heatmap.metrics.YarnResourceUsed'),
+  maximumValue: 100,
+  defaultMetric: 'ServiceComponentInfo.rm_metrics.cluster.nodeManagers',
+  units: ' %',
+  slotDefinitionLabelSuffix: ' %',
+  metricMapper: function (json) {
+    var hostToValueMap = {};
+    var metricName = this.get('defaultMetric');
+    var props = metricName.split('.');
+    var value = json;
+    props.forEach(function (prop) {
+      if (value != null && prop in value) {
+        value = value[prop];
+      } else {
+        value = null;
+      }
+    });
+    if (value != null) {
+      value = JSON.parse(value);
+      if (value instanceof Array) {
+        value.forEach(function(host) {
+          hostToValueMap[host.HostName] = (host.UsedMemoryMB / host.AvailableMemoryMB * 100).toFixed(1);
+        });
+      }
+    }
+    return hostToValueMap;
+  }
+});

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/3bc7d833/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 9dc0604..363b810 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -1141,6 +1141,7 @@ Em.I18n.translations = {
   'charts.heatmap.metrics.reducesRunning' :'MapReduce Reduces Running',
   'charts.heatmap.metrics.memoryUsed' :'Host Memory Used %',
   'charts.heatmap.metrics.processRun' :'Total Running Processes',
+  'charts.heatmap.metrics.YarnResourceUsed' :'YARN Resource used %',
   'charts.heatmap.metrics.cpuWaitIO':'Host CPU Wait I/O %',
   'charts.heatmap.metrics.HbaseRegionServerReadCount': 'HBase Read Request Count',
   'charts.heatmap.metrics.HbaseRegionServerWriteCount': 'HBase Write Request Count',

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/3bc7d833/ambari-web/test/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_ResourceUsed_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_ResourceUsed_test.js b/ambari-web/test/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_ResourceUsed_test.js
new file mode 100644
index 0000000..26207c0
--- /dev/null
+++ b/ambari-web/test/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_ResourceUsed_test.js
@@ -0,0 +1,130 @@
+/**
+ * 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.
+ */
+
+var App = require('app');
+require('messages');
+require('controllers/main/charts/heatmap_metrics/heatmap_metric');
+require('controllers/main/charts/heatmap_metrics/heatmap_metric_yarn');
+require('controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_ResourceUsed');
+
+describe('App.MainChartHeatmapYarnResourceUsedMetric', function () {
+
+  var mainChartHeatmapYarnResourceUsedMetric = App.MainChartHeatmapYarnResourceUsedMetric.create({});
+
+  describe('#metricMapper', function () {
+    var tests = [
+      {
+        m: 'Correct JSON #1',
+        i: {
+          "ServiceComponentInfo" : {
+            "rm_metrics" : {
+              "cluster" : {
+                "nodeManagers" : "[{\"HostName\":\"dev01.hortonworks.com\",\"Rack\":\"/default-rack\",\"State\":\"RUNNING\",\"NodeId\":\"dev01.hortonworks.com:45454\",\"NodeHTTPAddress\":\"dev01.hortonworks.com:8042\",\"LastHealthUpdate\":1375869232870,\"HealthReport\":\"\",\"NumContainers\":0,\"UsedMemoryMB\":10,\"AvailableMemoryMB\":100}]"
+              }
+            }
+          }
+        },
+        e: {
+          length: 1,
+          val: '10.0',
+          host: 'dev01.hortonworks.com'
+        }
+      },
+      {
+        m: 'Correct JSON #2',
+        i: {
+          "ServiceComponentInfo" : {
+            "rm_metrics" : {
+              "cluster" : {
+                "nodeManagers" : "[{\"HostName\":\"dev01.hortonworks.com\",\"Rack\":\"/default-rack\",\"State\":\"RUNNING\",\"NodeId\":\"dev01.hortonworks.com:45454\",\"NodeHTTPAddress\":\"dev01.hortonworks.com:8042\",\"LastHealthUpdate\":1375869232870,\"HealthReport\":\"\",\"NumContainers\":0,\"UsedMemoryMB\":0,\"AvailableMemoryMB\":100}]"
+              }
+            }
+          }
+        },
+        e: {
+          length: 1,
+          val: '0.0',
+          host: 'dev01.hortonworks.com'
+        }
+      },
+      {
+        m: 'JSON without "cluster"',
+        i: {
+          "ServiceComponentInfo" : {
+            "rm_metrics" : {
+            }
+          }
+        },
+        e: {
+          length: 0,
+          val: null,
+          host: null
+        }
+      },
+      {
+        m: 'JSON without "nodeManagers"',
+        i: {
+          "ServiceComponentInfo" : {
+            "rm_metrics" : {
+              "cluster" : {
+              }
+            }
+          }
+        },
+        e: {
+          length: 0,
+          val: null,
+          host: null
+        }
+      },
+      {
+        m: 'Correct JSON #3 (with two nodeManagers)',
+        i: {
+          "ServiceComponentInfo" : {
+            "rm_metrics" : {
+              "cluster" : {
+                "nodeManagers" : "[{\"HostName\":\"dev01.hortonworks.com\",\"Rack\":\"/default-rack\",\"State\":\"RUNNING\",\"NodeId\":\"dev01.hortonworks.com:45454\",\"NodeHTTPAddress\":\"dev01.hortonworks.com:8042\",\"LastHealthUpdate\":1375869232870,\"HealthReport\":\"\",\"NumContainers\":0,\"UsedMemoryMB\":0,\"AvailableMemoryMB\":100}, {\"HostName\":\"dev02.hortonworks.com\",\"Rack\":\"/default-rack\",\"State\":\"RUNNING\",\"NodeId\":\"dev02.hortonworks.com:45454\",\"NodeHTTPAddress\":\"dev01.hortonworks.com:8042\",\"LastHealthUpdate\":1375869232870,\"HealthReport\":\"\",\"NumContainers\":0,\"UsedMemoryMB\":100,\"AvailableMemoryMB\":100}]"
+              }
+            }
+          }
+        },
+        e: {
+          length: 2,
+          val: '100.0',
+          host: 'dev02.hortonworks.com'
+        }
+      }
+    ];
+    tests.forEach(function(test) {
+      it(test.m, function () {
+        var result = mainChartHeatmapYarnResourceUsedMetric.metricMapper(test.i);
+        var length = 0;
+        for(var p in result) {
+          if (result.hasOwnProperty(p)) {
+            length++;
+          }
+        }
+        expect(length).to.equal(test.e.length);
+        if (test.e.host) {
+          expect(result.hasOwnProperty(test.e.host)).to.equal(true);
+          expect(result[test.e.host]).to.equal(test.e.val);
+        }
+      });
+    });
+  });
+
+});