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

[01/14] AMBARI-2677. Merge from branch-1.4.0 (ncole)

Updated Branches:
  refs/heads/trunk a1322cecd -> a718fc45d


http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/views/main/service/info/metrics/yarn/tasks_running_waiting.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/metrics/yarn/tasks_running_waiting.js b/ambari-web/app/views/main/service/info/metrics/yarn/tasks_running_waiting.js
new file mode 100644
index 0000000..f1fc6dc
--- /dev/null
+++ b/ambari-web/app/views/main/service/info/metrics/yarn/tasks_running_waiting.js
@@ -0,0 +1,65 @@
+/**
+ * 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');
+
+/**
+ * @class
+ * 
+ * This is a view for showing cluster CPU metrics
+ * 
+ * @extends App.ChartLinearTimeView
+ * @extends Ember.Object
+ * @extends Ember.View
+ */
+App.ChartServiceMetricsYARN_TasksRunningWaiting = App.ChartLinearTimeView.extend({
+  id: "service-metrics-yarn-tasks-running-waiting",
+  title: Em.I18n.t('services.service.info.metrics.mapreduce.tasksRunningWaiting'),
+  renderer: 'line',
+
+  ajaxIndex: 'service.metrics.mapreduce.tasks_running_waiting',
+
+  transformToSeries: function (jsonData) {
+    var seriesArray = [];
+    if (jsonData && jsonData.metrics && jsonData.metrics.mapred && jsonData.metrics.mapred.jobtracker) {
+      for ( var name in jsonData.metrics.mapred.jobtracker) {
+        var displayName;
+        var seriesData = jsonData.metrics.mapred.jobtracker[name];
+        switch (name) {
+          case "running_maps":
+            displayName = Em.I18n.t('services.service.info.metrics.mapreduce.tasksRunningWaiting.displayNames.runningMaps');
+            break;
+          case "running_reduces":
+            displayName = Em.I18n.t('services.service.info.metrics.mapreduce.tasksRunningWaiting.displayNames.runningReduces');
+            break;
+          case "waiting_maps":
+            displayName = Em.I18n.t('services.service.info.metrics.mapreduce.tasksRunningWaiting.displayNames.waitingMaps');
+            break;
+          case "waiting_reduces":
+            displayName = Em.I18n.t('services.service.info.metrics.mapreduce.tasksRunningWaiting.displayNames.waitingReduces');
+            break;
+          default:
+            break;
+        }
+        if (seriesData) {
+          seriesArray.push(this.transformData(seriesData, displayName));
+        }
+      }
+    }
+    return seriesArray;
+  }
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/views/main/service/info/summary.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/summary.js b/ambari-web/app/views/main/service/info/summary.js
index 5cbe478..34a776c 100644
--- a/ambari-web/app/views/main/service/info/summary.js
+++ b/ambari-web/app/views/main/service/info/summary.js
@@ -36,6 +36,7 @@ App.MainServiceInfoSummaryView = Em.View.extend({
   attributes:null,
   serviceStatus:{
     hdfs:false,
+    yarn:false,
     mapreduce:false,
     mapreduce2:false,
     hbase:false,
@@ -126,6 +127,11 @@ App.MainServiceInfoSummaryView = Em.View.extend({
     return result;
   }.property('controller.content'),
 
+  historyServerUI: function(){
+    var service=this.get('controller.content');
+    return (App.singleNodeInstall ? "http://" + App.singleNodeAlias + ":19888" : "http://" + service.get("hostComponents").findProperty('isMaster', true).get("host").get("publicHostName")+":19888");
+  }.property('controller.content'),
+
   monitors: function () {
     var result = '';
     var service = this.get('controller.content');
@@ -267,6 +273,9 @@ App.MainServiceInfoSummaryView = Em.View.extend({
         case 'hdfs':
           svc = App.HDFSService.find().objectAt(0);
           break;
+        case 'yarn':
+          svc = App.YARNService.find().objectAt(0);
+          break;
         case 'mapreduce':
           svc = App.MapReduceService.find().objectAt(0);
           break;
@@ -320,6 +329,16 @@ App.MainServiceInfoSummaryView = Em.View.extend({
             App.ChartServiceMetricsHDFS_JVMHeap.extend(),
             App.ChartServiceMetricsHDFS_JVMThreads.extend()]];
           break;
+        case 'yarn':
+          graphs = [ /*[App.ChartServiceMetricsYARN_JobsStatus.extend(),
+            App.ChartServiceMetricsYARN_TasksRunningWaiting.extend(),
+            App.ChartServiceMetricsYARN_MapSlots.extend(),
+            App.ChartServiceMetricsYARN_ReduceSlots.extend()],*/
+            [App.ChartServiceMetricsYARN_RPC.extend(),
+            App.ChartServiceMetricsYARN_GC.extend(),
+            App.ChartServiceMetricsYARN_JVMHeap.extend(),
+            App.ChartServiceMetricsYARN_JVMThreads.extend()]];
+          break;
         case 'mapreduce':
           graphs = [ [App.ChartServiceMetricsMapReduce_JobsStatus.extend(),
             App.ChartServiceMetricsMapReduce_TasksRunningWaiting.extend(),

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/views/main/service/menu.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/menu.js b/ambari-web/app/views/main/service/menu.js
index 5cd9377..c00cb3e 100644
--- a/ambari-web/app/views/main/service/menu.js
+++ b/ambari-web/app/views/main/service/menu.js
@@ -21,7 +21,7 @@ var App = require('app');
 App.MainServiceMenuView = Em.CollectionView.extend({
   content:function () {
     var items = App.router.get('mainServiceController.content').filter(function(item){
-      if(['PIG', 'SQOOP', 'HCATALOG'].contains(item.get('id'))){
+      if(['PIG', 'SQOOP', 'HCATALOG', 'TEZ'].contains(item.get('id'))){
         return false;
       }
       return true;

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/test/installer/step2_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/installer/step2_test.js b/ambari-web/test/installer/step2_test.js
index 5971c8f..238d64b 100644
--- a/ambari-web/test/installer/step2_test.js
+++ b/ambari-web/test/installer/step2_test.js
@@ -20,7 +20,6 @@ var App = require('app');
 var Ember = require('ember');
 require('controllers/wizard/step2_controller');
 require('models/host');
-require('models/host_component');
 require('messages');
 
 describe('App.WizardStep2Controller', function () {

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/test/installer/step5_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/installer/step5_test.js b/ambari-web/test/installer/step5_test.js
index aaff8ab..c304b18 100644
--- a/ambari-web/test/installer/step5_test.js
+++ b/ambari-web/test/installer/step5_test.js
@@ -19,8 +19,6 @@
 var Ember = require('ember');
 var App = require('app');
 require('controllers/wizard/step5_controller');
-var components = require('data/service_components');
-
 
 describe('App.WizardStep5Controller', function () {
   var controller = App.WizardStep5Controller.create();
@@ -101,9 +99,7 @@ describe('App.WizardStep5Controller', function () {
           expect(controller.getHostForComponent(test.hosts.length, scheme).host_name).to.equal(test.hosts[test.equals[index]]);
         });
       });
-
     });
-
   });
 
   describe('#getZooKeeperServer', function() {

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/vendor/styles/cubism.css
----------------------------------------------------------------------
diff --git a/ambari-web/vendor/styles/cubism.css b/ambari-web/vendor/styles/cubism.css
index b572148..9a3b43f 100644
--- a/ambari-web/vendor/styles/cubism.css
+++ b/ambari-web/vendor/styles/cubism.css
@@ -43,7 +43,7 @@
 #dag_viewer rect {
   fill: #ccc;
   stroke: #333;
-  stroke-width: 1px;
+  stroke-width: 1.5px;
 }
 
 #dag_viewer rect.finished {

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/contrib/addons/src/addOns/nagios/scripts/nagios_alerts.php
----------------------------------------------------------------------
diff --git a/contrib/addons/src/addOns/nagios/scripts/nagios_alerts.php b/contrib/addons/src/addOns/nagios/scripts/nagios_alerts.php
index cc26bd0..a8cc963 100644
--- a/contrib/addons/src/addOns/nagios/scripts/nagios_alerts.php
+++ b/contrib/addons/src/addOns/nagios/scripts/nagios_alerts.php
@@ -389,6 +389,13 @@ function hdp_mon_generate_response( $response_data )
       case "FLUME":
             $pieces[0] = "FLUME";
       break;      
+      case "JOBHISTORY":
+        $pieces[0] = "MAPREDUCE2";
+        break;
+      case "RESOURCEMANAGER":
+      case "NODEMANAGER":
+        $pieces[0] = "YARN";
+        break;
       case "NAGIOS":
       case "HDFS":
       case "MAPREDUCE":


[05/14] AMBARI-2677. Merge from branch-1.4.0 (ncole)

Posted by nc...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HBASE/configuration/hbase-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HBASE/configuration/hbase-site.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HBASE/configuration/hbase-site.xml
new file mode 100644
index 0000000..84d3eea
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HBASE/configuration/hbase-site.xml
@@ -0,0 +1,350 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+/**
+ * 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.
+ */
+-->
+<configuration>
+  <property>
+    <name>hbase.rootdir</name>
+    <value></value>
+    <description>The directory shared by region servers and into
+    which HBase persists.  The URL should be 'fully-qualified'
+    to include the filesystem scheme.  For example, to specify the
+    HDFS directory '/hbase' where the HDFS instance's namenode is
+    running at namenode.example.org on port 9000, set this value to:
+    hdfs://namenode.example.org:9000/hbase.  By default HBase writes
+    into /tmp.  Change this configuration else all data will be lost
+    on machine restart.
+    </description>
+  </property>
+  <property>
+    <name>hbase.cluster.distributed</name>
+    <value>true</value>
+    <description>The mode the cluster will be in. Possible values are
+      false for standalone mode and true for distributed mode.  If
+      false, startup will run all HBase and ZooKeeper daemons together
+      in the one JVM.
+    </description>
+  </property>
+  <property>
+    <name>hbase.tmp.dir</name>
+    <value></value>
+    <description>Temporary directory on the local filesystem.
+    Change this setting to point to a location more permanent
+    than '/tmp' (The '/tmp' directory is often cleared on
+    machine restart).
+    </description>
+  </property>
+  <property>
+    <name>hbase.master.info.bindAddress</name>
+    <value></value>
+    <description>The bind address for the HBase Master web UI
+    </description>
+  </property>
+  <property>
+    <name>hbase.master.info.port</name>
+    <value></value>
+    <description>The port for the HBase Master web UI.</description>
+  </property>
+  <property>
+    <name>hbase.regionserver.info.port</name>
+    <value></value>
+    <description>The port for the HBase RegionServer web UI.</description>
+  </property>
+  <property>
+    <name>hbase.regionserver.global.memstore.upperLimit</name>
+    <value></value>
+    <description>Maximum size of all memstores in a region server before new
+      updates are blocked and flushes are forced. Defaults to 40% of heap
+    </description>
+  </property>
+  <property>
+    <name>hbase.regionserver.handler.count</name>
+    <value></value>
+    <description>Count of RPC Listener instances spun up on RegionServers.
+    Same property is used by the Master for count of master handlers.
+    Default is 10.
+    </description>
+  </property>
+  <property>
+    <name>hbase.hregion.majorcompaction</name>
+    <value></value>
+    <description>The time (in miliseconds) between 'major' compactions of all
+    HStoreFiles in a region.  Default: 1 day.
+    Set to 0 to disable automated major compactions.
+    </description>
+  </property>
+  
+  <property>
+    <name>hbase.regionserver.global.memstore.lowerLimit</name>
+    <value></value>
+    <description>When memstores are being forced to flush to make room in
+      memory, keep flushing until we hit this mark. Defaults to 35% of heap.
+      This value equal to hbase.regionserver.global.memstore.upperLimit causes
+      the minimum possible flushing to occur when updates are blocked due to
+      memstore limiting.
+    </description>
+  </property>
+  <property>
+    <name>hbase.hregion.memstore.block.multiplier</name>
+    <value></value>
+    <description>Block updates if memstore has hbase.hregion.memstore.block.multiplier
+    time hbase.hregion.flush.size bytes.  Useful preventing
+    runaway memstore during spikes in update traffic.  Without an
+    upper-bound, memstore fills such that when it flushes the
+    resultant flush files take a long time to compact or split, or
+    worse, we OOME
+    </description>
+  </property>
+  <property>
+    <name>hbase.hregion.memstore.flush.size</name>
+    <value></value>
+    <description>
+    Memstore will be flushed to disk if size of the memstore
+    exceeds this number of bytes.  Value is checked by a thread that runs
+    every hbase.server.thread.wakefrequency.
+    </description>
+  </property>
+  <property>
+    <name>hbase.hregion.memstore.mslab.enabled</name>
+    <value></value>
+    <description>
+      Enables the MemStore-Local Allocation Buffer,
+      a feature which works to prevent heap fragmentation under
+      heavy write loads. This can reduce the frequency of stop-the-world
+      GC pauses on large heaps.
+    </description>
+  </property>
+  <property>
+    <name>hbase.hregion.max.filesize</name>
+    <value></value>
+    <description>
+    Maximum HStoreFile size. If any one of a column families' HStoreFiles has
+    grown to exceed this value, the hosting HRegion is split in two.
+    Default: 1G.
+    </description>
+  </property>
+  <property>
+    <name>hbase.client.scanner.caching</name>
+    <value></value>
+    <description>Number of rows that will be fetched when calling next
+    on a scanner if it is not served from (local, client) memory. Higher
+    caching values will enable faster scanners but will eat up more memory
+    and some calls of next may take longer and longer times when the cache is empty.
+    Do not set this value such that the time between invocations is greater
+    than the scanner timeout; i.e. hbase.regionserver.lease.period
+    </description>
+  </property>
+  <property>
+    <name>zookeeper.session.timeout</name>
+    <value>30000</value>
+    <description>ZooKeeper session timeout.
+      HBase passes this to the zk quorum as suggested maximum time for a
+      session (This setting becomes zookeeper's 'maxSessionTimeout').  See
+      http://hadoop.apache.org/zookeeper/docs/current/zookeeperProgrammers.html#ch_zkSessions
+      "The client sends a requested timeout, the server responds with the
+      timeout that it can give the client. " In milliseconds.
+    </description>
+  </property>
+  <property>
+    <name>hbase.client.keyvalue.maxsize</name>
+    <value></value>
+    <description>Specifies the combined maximum allowed size of a KeyValue
+    instance. This is to set an upper boundary for a single entry saved in a
+    storage file. Since they cannot be split it helps avoiding that a region
+    cannot be split any further because the data is too large. It seems wise
+    to set this to a fraction of the maximum region size. Setting it to zero
+    or less disables the check.
+    </description>
+  </property>
+  <property>
+    <name>hbase.hstore.compactionThreshold</name>
+    <value></value>
+    <description>
+    If more than this number of HStoreFiles in any one HStore
+    (one HStoreFile is written per flush of memstore) then a compaction
+    is run to rewrite all HStoreFiles files as one.  Larger numbers
+    put off compaction but when it runs, it takes longer to complete.
+    </description>
+  </property>
+  <property>
+    <name>hbase.hstore.blockingStoreFiles</name>
+    <value></value>
+    <description>
+    If more than this number of StoreFiles in any one Store
+    (one StoreFile is written per flush of MemStore) then updates are
+    blocked for this HRegion until a compaction is completed, or
+    until hbase.hstore.blockingWaitTime has been exceeded.
+    </description>
+  </property>
+  <property>
+    <name>hfile.block.cache.size</name>
+    <value></value>
+    <description>
+        Percentage of maximum heap (-Xmx setting) to allocate to block cache
+        used by HFile/StoreFile. Default of 0.25 means allocate 25%.
+        Set to 0 to disable but it's not recommended.
+    </description>
+  </property>
+
+  <!-- The following properties configure authentication information for
+       HBase processes when using Kerberos security.  There are no default
+       values, included here for documentation purposes -->
+  <property>
+    <name>hbase.master.keytab.file</name>
+    <value></value>
+    <description>Full path to the kerberos keytab file to use for logging in
+    the configured HMaster server principal.
+    </description>
+  </property>
+  <property>
+    <name>hbase.master.kerberos.principal</name>
+    <value></value>
+    <description>Ex. "hbase/_HOST@EXAMPLE.COM".  The kerberos principal name
+    that should be used to run the HMaster process.  The principal name should
+    be in the form: user/hostname@DOMAIN.  If "_HOST" is used as the hostname
+    portion, it will be replaced with the actual hostname of the running
+    instance.
+    </description>
+  </property>
+  <property>
+    <name>hbase.regionserver.keytab.file</name>
+    <value></value>
+    <description>Full path to the kerberos keytab file to use for logging in
+    the configured HRegionServer server principal.
+    </description>
+  </property>
+  <property>
+    <name>hbase.regionserver.kerberos.principal</name>
+    <value></value>
+    <description>Ex. "hbase/_HOST@EXAMPLE.COM".  The kerberos principal name
+    that should be used to run the HRegionServer process.  The principal name
+    should be in the form: user/hostname@DOMAIN.  If "_HOST" is used as the
+    hostname portion, it will be replaced with the actual hostname of the
+    running instance.  An entry for this principal must exist in the file
+    specified in hbase.regionserver.keytab.file
+    </description>
+  </property>
+
+  <!-- Additional configuration specific to HBase security -->
+  <property>
+    <name>hbase.superuser</name>
+    <value>hbase</value>
+    <description>List of users or groups (comma-separated), who are allowed
+    full privileges, regardless of stored ACLs, across the cluster.
+    Only used when HBase security is enabled.
+    </description>
+  </property>
+
+  <property>
+    <name>hbase.coprocessor.region.classes</name>
+    <value></value>
+    <description>A comma-separated list of Coprocessors that are loaded by
+    default on all tables. For any override coprocessor method, these classes
+    will be called in order. After implementing your own Coprocessor, just put
+    it in HBase's classpath and add the fully qualified class name here.
+    A coprocessor can also be loaded on demand by setting HTableDescriptor.
+    </description>
+  </property>
+
+  <property>
+    <name>hbase.coprocessor.master.classes</name>
+    <value></value>
+    <description>A comma-separated list of
+      org.apache.hadoop.hbase.coprocessor.MasterObserver coprocessors that are
+      loaded by default on the active HMaster process. For any implemented
+      coprocessor methods, the listed classes will be called in order. After
+      implementing your own MasterObserver, just put it in HBase's classpath
+      and add the fully qualified class name here.
+    </description>
+  </property>
+
+  <property>
+    <name>hbase.zookeeper.property.clientPort</name>
+    <value>2181</value>
+    <description>Property from ZooKeeper's config zoo.cfg.
+    The port at which the clients will connect.
+    </description>
+  </property>
+
+  <!--
+  The following three properties are used together to create the list of
+  host:peer_port:leader_port quorum servers for ZooKeeper.
+  -->
+  <property>
+    <name>hbase.zookeeper.quorum</name>
+    <value></value>
+    <description>Comma separated list of servers in the ZooKeeper Quorum.
+    For example, "host1.mydomain.com,host2.mydomain.com,host3.mydomain.com".
+    By default this is set to localhost for local and pseudo-distributed modes
+    of operation. For a fully-distributed setup, this should be set to a full
+    list of ZooKeeper quorum servers. If HBASE_MANAGES_ZK is set in hbase-env.sh
+    this is the list of servers which we will start/stop ZooKeeper on.
+    </description>
+  </property>
+  <!-- End of properties used to generate ZooKeeper host:port quorum list. -->
+
+  <property>
+    <name>dfs.support.append</name>
+    <value></value>
+    <description>Does HDFS allow appends to files?
+    This is an hdfs config. set in here so the hdfs client will do append support.
+    You must ensure that this config. is true serverside too when running hbase
+    (You will have to restart your cluster after setting it).
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.client.read.shortcircuit</name>
+    <value></value>
+    <description>Enable/Disable short circuit read for your client.
+    Hadoop servers should be configured to allow short circuit read
+    for the hbase user for this to take effect
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.client.read.shortcircuit.skip.checksum</name>
+    <value></value>
+    <description>Enable/disbale skipping the checksum check</description>
+  </property>
+  
+  <property>
+    <name>hbase.zookeeper.useMulti</name>
+    <value>true</value>
+    <description>Instructs HBase to make use of ZooKeeper's multi-update functionality.
+    This allows certain ZooKeeper operations to complete more quickly and prevents some issues
+    with rare Replication failure scenarios (see the release note of HBASE-2611 for an example).·
+    IMPORTANT: only set this to true if all ZooKeeper servers in the cluster are on version 3.4+
+    and will not be downgraded.  ZooKeeper versions before 3.4 do not support multi-update and will
+    not fail gracefully if multi-update is invoked (see ZOOKEEPER-1495).
+    </description>
+  </property>
+  <property>
+    <name>zookeeper.znode.parent</name>
+    <value></value>
+    <description>Root ZNode for HBase in ZooKeeper. All of HBase's ZooKeeper
+      files that are configured with a relative path will go under this node.
+      By default, all of HBase's ZooKeeper file path are configured with a
+      relative path, so they will all go under this directory unless changed.
+    </description>
+  </property>
+
+
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HBASE/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HBASE/metainfo.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HBASE/metainfo.xml
new file mode 100644
index 0000000..645f7ce
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HBASE/metainfo.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <user>mapred</user>
+    <comment>Non-relational distributed database and centralized service for configuration management &amp; synchronization</comment>
+    <version>0.94.5.22-1</version>
+
+    <components>
+        <component>
+            <name>HBASE_MASTER</name>
+            <category>MASTER</category>
+        </component>
+
+        <component>
+            <name>HBASE_REGIONSERVER</name>
+            <category>SLAVE</category>
+        </component>
+
+        <component>
+            <name>HBASE_CLIENT</name>
+            <category>CLIENT</category>
+        </component>
+    </components>
+
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HCATALOG/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HCATALOG/metainfo.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HCATALOG/metainfo.xml
new file mode 100644
index 0000000..45f3342
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HCATALOG/metainfo.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <user>root</user>
+    <comment>This is comment for HCATALOG service</comment>
+    <version>0.5.0.22-1</version>
+
+    <components>
+        <component>
+            <name>HCAT</name>
+            <category>CLIENT</category>
+        </component>
+    </components>
+
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HDFS/configuration/core-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HDFS/configuration/core-site.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HDFS/configuration/core-site.xml
new file mode 100644
index 0000000..e646d5b
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HDFS/configuration/core-site.xml
@@ -0,0 +1,257 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+
+ <!--
+    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.
+ -->
+ 
+<!-- Put site-specific property overrides in this file. -->
+
+<configuration xmlns:xi="http://www.w3.org/2001/XInclude">
+
+<!-- i/o properties -->
+
+  <property>
+    <name>io.file.buffer.size</name>
+    <value>131072</value>
+    <description>The size of buffer for use in sequence files.
+  The size of this buffer should probably be a multiple of hardware
+  page size (4096 on Intel x86), and it determines how much data is
+  buffered during read and write operations.</description>
+  </property>
+
+  <property>
+    <name>io.serializations</name>
+    <value>org.apache.hadoop.io.serializer.WritableSerialization</value>
+  </property>
+
+  <property>
+    <name>io.compression.codecs</name>
+    <value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec</value>
+    <description>A list of the compression codec classes that can be used
+                 for compression/decompression.</description>
+  </property>
+
+  <property>
+    <name>io.compression.codec.lzo.class</name>
+    <value>com.hadoop.compression.lzo.LzoCodec</value>
+    <description>The implementation for lzo codec.</description>
+  </property>
+
+<!-- file system properties -->
+
+  <property>
+    <name>fs.default.name</name>
+    <!-- cluster variant -->
+    <value></value>
+    <description>The name of the default file system.  Either the
+  literal string "local" or a host:port for NDFS.</description>
+    <final>true</final>
+  </property>
+
+  <property>
+    <name>fs.trash.interval</name>
+    <value>360</value>
+    <description>Number of minutes between trash checkpoints.
+  If zero, the trash feature is disabled.
+  </description>
+  </property>
+
+  <property>
+    <name>fs.checkpoint.dir</name>
+    <value></value>
+    <description>Determines where on the local filesystem the DFS secondary
+        name node should store the temporary images to merge.
+        If this is a comma-delimited list of directories then the image is
+        replicated in all of the directories for redundancy.
+    </description>
+  </property>
+
+  <property>
+    <name>fs.checkpoint.edits.dir</name>
+    <value>${fs.checkpoint.dir}</value>
+    <description>Determines where on the local filesystem the DFS secondary
+        name node should store the temporary edits to merge.
+        If this is a comma-delimited list of directoires then teh edits is
+        replicated in all of the directoires for redundancy.
+        Default value is same as fs.checkpoint.dir
+    </description>
+  </property>
+
+  <property>
+    <name>fs.checkpoint.period</name>
+    <value>21600</value>
+    <description>The number of seconds between two periodic checkpoints.
+  </description>
+  </property>
+
+  <property>
+    <name>fs.checkpoint.size</name>
+    <value>536870912</value>
+    <description>The size of the current edit log (in bytes) that triggers
+       a periodic checkpoint even if the fs.checkpoint.period hasn't expired.
+  </description>
+  </property>
+
+  <!-- ipc properties: copied from kryptonite configuration -->
+  <property>
+    <name>ipc.client.idlethreshold</name>
+    <value>8000</value>
+    <description>Defines the threshold number of connections after which
+               connections will be inspected for idleness.
+  </description>
+  </property>
+
+  <property>
+    <name>ipc.client.connection.maxidletime</name>
+    <value>30000</value>
+    <description>The maximum time after which a client will bring down the
+               connection to the server.
+  </description>
+  </property>
+
+  <property>
+    <name>ipc.client.connect.max.retries</name>
+    <value>50</value>
+    <description>Defines the maximum number of retries for IPC connections.</description>
+  </property>
+
+  <!-- Web Interface Configuration -->
+  <property>
+    <name>webinterface.private.actions</name>
+    <value>false</value>
+    <description> If set to true, the web interfaces of JT and NN may contain
+                actions, such as kill job, delete file, etc., that should
+                not be exposed to public. Enable this option if the interfaces
+                are only reachable by those who have the right authorization.
+  </description>
+  </property>
+
+ <property>
+   <name>hadoop.security.authentication</name>
+   <value>simple</value>
+   <description>
+   Set the authentication for the cluster. Valid values are: simple or
+   kerberos.
+   </description>
+ </property>
+<property>
+  <name>hadoop.security.authorization</name>
+  <value>false</value>
+  <description>
+     Enable authorization for different protocols.
+  </description>
+</property>
+
+  <property>
+    <name>hadoop.security.auth_to_local</name>
+    <value>
+        RULE:[2:$1@$0]([rn]m@.*)s/.*/yarn/
+        RULE:[2:$1@$0]([nd]n@.*)s/.*/hdfs/
+        RULE:[2:$1@$0](hm@.*)s/.*/hbase/
+        RULE:[2:$1@$0](rs@.*)s/.*/hbase/
+        DEFAULT
+    </value>
+<description>The mapping from kerberos principal names to local OS user names.
+  So the default rule is just "DEFAULT" which takes all principals in your default domain to their first component.
+  "omalley@APACHE.ORG" and "omalley/admin@APACHE.ORG" to "omalley", if your default domain is APACHE.ORG.
+The translations rules have 3 sections:
+      base     filter    substitution
+The base consists of a number that represents the number of components in the principal name excluding the realm and the pattern for building the name from the sections of the principal name. The base uses $0 to mean the realm, $1 to mean the first component and $2 to mean the second component.
+
+[1:$1@$0] translates "omalley@APACHE.ORG" to "omalley@APACHE.ORG"
+[2:$1] translates "omalley/admin@APACHE.ORG" to "omalley"
+[2:$1%$2] translates "omalley/admin@APACHE.ORG" to "omalley%admin"
+
+The filter is a regex in parens that must the generated string for the rule to apply.
+
+"(.*%admin)" will take any string that ends in "%admin"
+"(.*@ACME.COM)" will take any string that ends in "@ACME.COM"
+
+Finally, the substitution is a sed rule to translate a regex into a fixed string.
+
+"s/@ACME\.COM//" removes the first instance of "@ACME.COM".
+"s/@[A-Z]*\.COM//" removes the first instance of "@" followed by a name followed by ".COM".
+"s/X/Y/g" replaces all of the "X" in the name with "Y"
+
+So, if your default realm was APACHE.ORG, but you also wanted to take all principals from ACME.COM that had a single component "joe@ACME.COM", you'd do:
+
+RULE:[1:$1@$0](.@ACME.ORG)s/@.//
+DEFAULT
+
+To also translate the names with a second component, you'd make the rules:
+
+RULE:[1:$1@$0](.@ACME.ORG)s/@.//
+RULE:[2:$1@$0](.@ACME.ORG)s/@.//
+DEFAULT
+
+If you want to treat all principals from APACHE.ORG with /admin as "admin", your rules would look like:
+
+RULE[2:$1%$2@$0](.%admin@APACHE.ORG)s/./admin/
+DEFAULT
+    </description>
+  </property>
+
+<!--
+<property>
+  <name>hadoop.proxyuser.scope.function_hdp_user("hcat_user").groups</name>
+  <value></value>
+  <description>
+     Proxy group for Hadoop.
+  </description>
+</property>
+
+<property>
+  <name>hadoop.proxyuser.scope.function_hdp_user("hcat_user").hosts</name>
+  <value></value>
+  <description>
+     Proxy host for Hadoop.
+  </description>
+</property>
+
+<property>
+  <name>hadoop.proxyuser.scope.function_hdp_user("oozie_user").groups</name>
+  <value></value>
+  <description>
+     Proxy group for Hadoop.
+  </description>
+</property>
+
+<property>
+  <name>hadoop.proxyuser.scope.function_hdp_user("oozie_user").hosts</name>
+  <value></value>
+  <description>
+     Proxy host for Hadoop.
+  </description>
+</property>
+
+<property>
+  <name>hadoop.proxyuser.scope.function_hdp_user("templeton_user").groups</name>
+  <value></value>
+  <description>
+    Proxy group for templeton.
+  </description>
+</property>
+
+<property>
+  <name>hadoop.proxyuser.scope.function_hdp_user("templeton_user").hosts</name>
+  <value></value>
+  <description>
+    Proxy host for templeton.
+  </description>
+</property>
+-->
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HDFS/configuration/global.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HDFS/configuration/global.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HDFS/configuration/global.xml
new file mode 100644
index 0000000..dbbe81b
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HDFS/configuration/global.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+/**
+ * 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.
+ */
+-->
+
+<configuration>
+  <property>
+    <name>namenode_host</name>
+    <value></value>
+    <description>NameNode Host.</description>
+  </property>
+  <property>
+    <name>dfs_name_dir</name>
+    <value>/hadoop/hdfs/namenode</value>
+    <description>NameNode Directories.</description>
+  </property>
+  <property>
+    <name>snamenode_host</name>
+    <value></value>
+    <description>Secondary NameNode.</description>
+  </property>
+  <property>
+    <name>fs_checkpoint_dir</name>
+    <value>/hadoop/hdfs/namesecondary</value>
+    <description>Secondary NameNode checkpoint dir.</description>
+  </property>
+  <property>
+    <name>datanode_hosts</name>
+    <value></value>
+    <description>List of Datanode Hosts.</description>
+  </property>
+  <property>
+    <name>dfs_data_dir</name>
+    <value>/hadoop/hdfs/data</value>
+    <description>Data directories for Data Nodes.</description>
+  </property>
+  <property>
+    <name>hdfs_log_dir_prefix</name>
+    <value>/var/log/hadoop</value>
+    <description>Hadoop Log Dir Prefix</description>
+  </property>
+  <property>
+    <name>hadoop_pid_dir_prefix</name>
+    <value>/var/run/hadoop</value>
+    <description>Hadoop PID Dir Prefix</description>
+  </property>
+  <property>
+    <name>dfs_webhdfs_enabled</name>
+    <value>true</value>
+    <description>WebHDFS enabled</description>
+  </property>
+  <property>
+    <name>hadoop_heapsize</name>
+    <value>1024</value>
+    <description>Hadoop maximum Java heap size</description>
+  </property>
+  <property>
+    <name>namenode_heapsize</name>
+    <value>1024</value>
+    <description>NameNode Java heap size</description>
+  </property>
+  <property>
+    <name>namenode_opt_newsize</name>
+    <value>200</value>
+    <description>NameNode new generation size</description>
+  </property>
+  <property>
+    <name>namenode_opt_maxnewsize</name>
+    <value>640</value>
+    <description>NameNode maximum new generation size</description>
+  </property>
+  <property>
+    <name>datanode_du_reserved</name>
+    <value>1</value>
+    <description>Reserved space for HDFS</description>
+  </property>
+  <property>
+    <name>dtnode_heapsize</name>
+    <value>1024</value>
+    <description>DataNode maximum Java heap size</description>
+  </property>
+  <property>
+    <name>dfs_datanode_failed_volume_tolerated</name>
+    <value>0</value>
+    <description>DataNode volumes failure toleration</description>
+  </property>
+  <property>
+    <name>fs_checkpoint_period</name>
+    <value>21600</value>
+    <description>HDFS Maximum Checkpoint Delay</description>
+  </property>
+  <property>
+    <name>fs_checkpoint_size</name>
+    <value>0.5</value>
+    <description>FS Checkpoint Size.</description>
+  </property>
+  <property>
+    <name>proxyuser_group</name>
+    <value>users</value>
+    <description>Proxy user group.</description>
+  </property>
+  <property>
+    <name>dfs_exclude</name>
+    <value></value>
+    <description>HDFS Exclude hosts.</description>
+  </property>
+  <property>
+    <name>dfs_include</name>
+    <value></value>
+    <description>HDFS Include hosts.</description>
+  </property>
+  <property>
+    <name>dfs_replication</name>
+    <value>3</value>
+    <description>Default Block Replication.</description>
+  </property>
+  <property>
+    <name>dfs_block_local_path_access_user</name>
+    <value>hbase</value>
+    <description>Default Block Replication.</description>
+  </property>
+  <property>
+    <name>dfs_datanode_address</name>
+    <value>50010</value>
+    <description>Port for datanode address.</description>
+  </property>
+  <property>
+    <name>dfs_datanode_http_address</name>
+    <value>50075</value>
+    <description>Port for datanode address.</description>
+  </property>
+  <property>
+    <name>dfs_datanode_data_dir_perm</name>
+    <value>750</value>
+    <description>Datanode dir perms.</description>
+  </property>
+
+  <property>
+    <name>security_enabled</name>
+    <value>false</value>
+    <description>Hadoop Security</description>
+  </property>
+  <property>
+    <name>kerberos_domain</name>
+    <value>EXAMPLE.COM</value>
+    <description>Kerberos realm.</description>
+  </property>
+  <property>
+    <name>kadmin_pw</name>
+    <value></value>
+    <description>Kerberos realm admin password</description>
+  </property>
+  <property>
+    <name>keytab_path</name>
+    <value>/etc/security/keytabs</value>
+    <description>Kerberos keytab path.</description>
+  </property>
+  
+  <property>
+    <name>keytab_path</name>
+    <value>/etc/security/keytabs</value>
+    <description>KeyTab Directory.</description>
+  </property>
+    <property>
+    <name>namenode_formatted_mark_dir</name>
+    <value>/var/run/hadoop/hdfs/namenode/formatted/</value>
+    <description>Formatteed Mark Directory.</description>
+  </property>
+    <property>
+    <name>hdfs_user</name>
+    <value>hdfs</value>
+    <description>User and Groups.</description>
+  </property>
+  
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HDFS/configuration/hadoop-policy.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HDFS/configuration/hadoop-policy.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HDFS/configuration/hadoop-policy.xml
new file mode 100644
index 0000000..6ec304d
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HDFS/configuration/hadoop-policy.xml
@@ -0,0 +1,134 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+
+<!--
+   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.
+-->
+
+<!-- Put site-specific property overrides in this file. -->
+
+<configuration>
+  <property>
+    <name>security.client.protocol.acl</name>
+    <value>*</value>
+    <description>ACL for ClientProtocol, which is used by user code
+    via the DistributedFileSystem.
+    The ACL is a comma-separated list of user and group names. The user and
+    group list is separated by a blank. For e.g. "alice,bob users,wheel".
+    A special value of "*" means all users are allowed.</description>
+  </property>
+
+  <property>
+    <name>security.client.datanode.protocol.acl</name>
+    <value>*</value>
+    <description>ACL for ClientDatanodeProtocol, the client-to-datanode protocol
+    for block recovery.
+    The ACL is a comma-separated list of user and group names. The user and
+    group list is separated by a blank. For e.g. "alice,bob users,wheel".
+    A special value of "*" means all users are allowed.</description>
+  </property>
+
+  <property>
+    <name>security.datanode.protocol.acl</name>
+    <value>*</value>
+    <description>ACL for DatanodeProtocol, which is used by datanodes to
+    communicate with the namenode.
+    The ACL is a comma-separated list of user and group names. The user and
+    group list is separated by a blank. For e.g. "alice,bob users,wheel".
+    A special value of "*" means all users are allowed.</description>
+  </property>
+
+  <property>
+    <name>security.inter.datanode.protocol.acl</name>
+    <value>*</value>
+    <description>ACL for InterDatanodeProtocol, the inter-datanode protocol
+    for updating generation timestamp.
+    The ACL is a comma-separated list of user and group names. The user and
+    group list is separated by a blank. For e.g. "alice,bob users,wheel".
+    A special value of "*" means all users are allowed.</description>
+  </property>
+
+  <property>
+    <name>security.namenode.protocol.acl</name>
+    <value>*</value>
+    <description>ACL for NamenodeProtocol, the protocol used by the secondary
+    namenode to communicate with the namenode.
+    The ACL is a comma-separated list of user and group names. The user and
+    group list is separated by a blank. For e.g. "alice,bob users,wheel".
+    A special value of "*" means all users are allowed.</description>
+  </property>
+
+  <property>
+    <name>security.inter.tracker.protocol.acl</name>
+    <value>*</value>
+    <description>ACL for InterTrackerProtocol, used by the tasktrackers to
+    communicate with the jobtracker.
+    The ACL is a comma-separated list of user and group names. The user and
+    group list is separated by a blank. For e.g. "alice,bob users,wheel".
+    A special value of "*" means all users are allowed.</description>
+  </property>
+
+  <property>
+    <name>security.job.submission.protocol.acl</name>
+    <value>*</value>
+    <description>ACL for JobSubmissionProtocol, used by job clients to
+    communciate with the jobtracker for job submission, querying job status etc.
+    The ACL is a comma-separated list of user and group names. The user and
+    group list is separated by a blank. For e.g. "alice,bob users,wheel".
+    A special value of "*" means all users are allowed.</description>
+  </property>
+
+  <property>
+    <name>security.task.umbilical.protocol.acl</name>
+    <value>*</value>
+    <description>ACL for TaskUmbilicalProtocol, used by the map and reduce
+    tasks to communicate with the parent tasktracker.
+    The ACL is a comma-separated list of user and group names. The user and
+    group list is separated by a blank. For e.g. "alice,bob users,wheel".
+    A special value of "*" means all users are allowed.</description>
+  </property>
+
+ <property>
+    <name>security.admin.operations.protocol.acl</name>
+    <value>hadoop</value>
+    <description>ACL for AdminOperationsProtocol. Used for admin commands.
+    The ACL is a comma-separated list of user and group names. The user and
+    group list is separated by a blank. For e.g. "alice,bob users,wheel".
+    A special value of "*" means all users are allowed.</description>
+  </property>
+
+  <property>
+    <name>security.refresh.usertogroups.mappings.protocol.acl</name>
+    <value>hadoop</value>
+    <description>ACL for RefreshUserMappingsProtocol. Used to refresh
+    users mappings. The ACL is a comma-separated list of user and
+    group names. The user and group list is separated by a blank. For
+    e.g. "alice,bob users,wheel".  A special value of "*" means all
+    users are allowed.</description>
+  </property>
+
+<property>
+    <name>security.refresh.policy.protocol.acl</name>
+    <value>hadoop</value>
+    <description>ACL for RefreshAuthorizationPolicyProtocol, used by the
+    dfsadmin and mradmin commands to refresh the security policy in-effect.
+    The ACL is a comma-separated list of user and group names. The user and
+    group list is separated by a blank. For e.g. "alice,bob users,wheel".
+    A special value of "*" means all users are allowed.</description>
+  </property>
+
+
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HDFS/configuration/hdfs-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HDFS/configuration/hdfs-site.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HDFS/configuration/hdfs-site.xml
new file mode 100644
index 0000000..e1a244a
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HDFS/configuration/hdfs-site.xml
@@ -0,0 +1,438 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+
+<!--
+   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.
+-->
+
+<!-- Put site-specific property overrides in this file. -->
+
+<configuration>
+
+<!-- file system properties -->
+
+  <property>
+    <name>dfs.name.dir</name>
+    <!-- cluster variant -->
+    <value></value>
+    <description>Determines where on the local filesystem the DFS name node
+      should store the name table.  If this is a comma-delimited list
+      of directories then the name table is replicated in all of the
+      directories, for redundancy. </description>
+    <final>true</final>
+  </property>
+
+  <property>
+    <name>dfs.support.append</name>
+    <value>true</value>
+    <description>to enable dfs append</description>
+    <final>true</final>
+  </property>
+
+  <property>
+    <name>dfs.webhdfs.enabled</name>
+    <value>true</value>
+    <description>to enable webhdfs</description>
+    <final>true</final>
+  </property>
+
+<!--
+ <property>
+    <name>dfs.datanode.socket.write.timeout</name>
+    <value>0</value>
+    <description>DFS Client write socket timeout</description>
+  </property>
+-->
+
+  <property>
+    <name>dfs.datanode.failed.volumes.tolerated</name>
+    <value>0</value>
+    <description>#of failed disks dn would tolerate</description>
+    <final>true</final>
+  </property>
+
+  <property>
+    <name>dfs.block.local-path-access.user</name>
+    <value>hbase</value>
+    <description>the user who is allowed to perform short
+    circuit reads.
+    </description>
+    <final>true</final>
+  </property>
+
+  <property>
+    <name>dfs.data.dir</name>
+    <value></value>
+    <description>Determines where on the local filesystem an DFS data node
+  should store its blocks.  If this is a comma-delimited
+  list of directories, then data will be stored in all named
+  directories, typically on different devices.
+  Directories that do not exist are ignored.
+  </description>
+    <final>true</final>
+  </property>
+
+  <property>
+    <name>dfs.hosts.exclude</name>
+    <value></value>
+    <description>Names a file that contains a list of hosts that are
+    not permitted to connect to the namenode.  The full pathname of the
+    file must be specified.  If the value is empty, no hosts are
+    excluded.</description>
+  </property>
+
+<!--
+  <property>
+    <name>dfs.hosts</name>
+    <value></value>
+    <description>Names a file that contains a list of hosts that are
+    permitted to connect to the namenode. The full pathname of the file
+    must be specified.  If the value is empty, all hosts are
+    permitted.</description>
+  </property>
+-->
+
+  <property>
+    <name>dfs.checksum.type</name>
+    <value>CRC32</value>
+    <description>The checksum method to be used by default. To maintain
+    compatibility, it is being set to CRC32. Once all migration steps
+    are complete, we can change it to CRC32C and take advantage of the
+    additional performance benefit.</description>
+  </property>
+
+  <property>
+    <name>dfs.replication.max</name>
+    <value>50</value>
+    <description>Maximal block replication.
+  </description>
+  </property>
+
+  <property>
+    <name>dfs.replication</name>
+    <value>3</value>
+    <description>Default block replication.
+  </description>
+  </property>
+
+  <property>
+    <name>dfs.heartbeat.interval</name>
+    <value>3</value>
+    <description>Determines datanode heartbeat interval in seconds.</description>
+  </property>
+
+  <property>
+    <name>dfs.heartbeat.interval</name>
+    <value>3</value>
+    <description>Determines datanode heartbeat interval in seconds.</description>
+  </property>
+
+  <property>
+    <name>dfs.safemode.threshold.pct</name>
+    <value>1.0f</value>
+    <description>
+        Specifies the percentage of blocks that should satisfy
+        the minimal replication requirement defined by dfs.replication.min.
+        Values less than or equal to 0 mean not to start in safe mode.
+        Values greater than 1 will make safe mode permanent.
+        </description>
+  </property>
+
+  <property>
+    <name>dfs.balance.bandwidthPerSec</name>
+    <value>6250000</value>
+    <description>
+        Specifies the maximum amount of bandwidth that each datanode
+        can utilize for the balancing purpose in term of
+        the number of bytes per second.
+  </description>
+  </property>
+
+  <property>
+    <name>dfs.datanode.address</name>
+    <value>0.0.0.0:50010</value>
+  </property>
+
+  <property>
+    <name>dfs.datanode.http.address</name>
+    <value>0.0.0.0:50075</value>
+  </property>
+
+  <property>
+    <name>dfs.block.size</name>
+    <value>134217728</value>
+    <description>The default block size for new files.</description>
+  </property>
+
+  <property>
+    <name>dfs.http.address</name>
+    <value></value>
+<description>The name of the default file system.  Either the
+literal string "local" or a host:port for NDFS.</description>
+<final>true</final>
+</property>
+
+<property>
+<name>dfs.datanode.du.reserved</name>
+<!-- cluster variant -->
+<value>1073741824</value>
+<description>Reserved space in bytes per volume. Always leave this much space free for non dfs use.
+</description>
+</property>
+
+<property>
+<name>dfs.datanode.ipc.address</name>
+<value>0.0.0.0:8010</value>
+<description>
+The datanode ipc server address and port.
+If the port is 0 then the server will start on a free port.
+</description>
+</property>
+
+<property>
+<name>dfs.blockreport.initialDelay</name>
+<value>120</value>
+<description>Delay for first block report in seconds.</description>
+</property>
+
+<property>
+<name>dfs.datanode.du.pct</name>
+<value>0.85f</value>
+<description>When calculating remaining space, only use this percentage of the real available space
+</description>
+</property>
+
+<property>
+<name>dfs.namenode.handler.count</name>
+<value>40</value>
+<description>The number of server threads for the namenode.</description>
+</property>
+
+<property>
+<name>dfs.datanode.max.xcievers</name>
+<value>1024</value>
+<description>PRIVATE CONFIG VARIABLE</description>
+</property>
+
+<!-- Permissions configuration -->
+
+<property>
+<name>dfs.umaskmode</name>
+<value>022</value>
+<description>
+The octal umask used when creating files and directories.
+</description>
+</property>
+
+<property>
+<name>dfs.web.ugi</name>
+<!-- cluster variant -->
+<value>gopher,gopher</value>
+<description>The user account used by the web interface.
+Syntax: USERNAME,GROUP1,GROUP2, ...
+</description>
+</property>
+
+<property>
+<name>dfs.permissions</name>
+<value>true</value>
+<description>
+If "true", enable permission checking in HDFS.
+If "false", permission checking is turned off,
+but all other behavior is unchanged.
+Switching from one parameter value to the other does not change the mode,
+owner or group of files or directories.
+</description>
+</property>
+
+<property>
+<name>dfs.permissions.supergroup</name>
+<value>hdfs</value>
+<description>The name of the group of super-users.</description>
+</property>
+
+<property>
+<name>dfs.namenode.handler.count</name>
+<value>100</value>
+<description>Added to grow Queue size so that more client connections are allowed</description>
+</property>
+
+<property>
+<name>ipc.server.max.response.size</name>
+<value>5242880</value>
+</property>
+<property>
+<name>dfs.block.access.token.enable</name>
+<value>true</value>
+<description>
+If "true", access tokens are used as capabilities for accessing datanodes.
+If "false", no access tokens are checked on accessing datanodes.
+</description>
+</property>
+
+<property>
+<name>dfs.namenode.kerberos.principal</name>
+<value></value>
+<description>
+Kerberos principal name for the NameNode
+</description>
+</property>
+
+<property>
+<name>dfs.secondary.namenode.kerberos.principal</name>
+<value></value>
+    <description>
+        Kerberos principal name for the secondary NameNode.
+    </description>
+  </property>
+
+
+<!--
+  This is KRB DOMAIN specific. The FQDN of the namenode has to be mentioned.
+-->
+  <property>
+    <name>dfs.namenode.kerberos.https.principal</name>
+    <value></value>
+     <description>The Kerberos principal for the host that the NameNode runs on.</description>
+
+  </property>
+
+  <property>
+    <name>dfs.secondary.namenode.kerberos.https.principal</name>
+    <value></value>
+    <description>The Kerberos principal for the hostthat the secondary NameNode runs on.</description>
+
+  </property>
+
+  <property>
+    <!-- cluster variant -->
+    <name>dfs.secondary.http.address</name>
+    <value></value>
+    <description>Address of secondary namenode web server</description>
+  </property>
+
+  <property>
+    <name>dfs.secondary.https.port</name>
+    <value>50490</value>
+    <description>The https port where secondary-namenode binds</description>
+  </property>
+
+  <property>
+    <name>dfs.web.authentication.kerberos.principal</name>
+    <value></value>
+    <description>
+      The HTTP Kerberos principal used by Hadoop-Auth in the HTTP endpoint.
+      The HTTP Kerberos principal MUST start with 'HTTP/' per Kerberos
+      HTTP SPENGO specification.
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.web.authentication.kerberos.keytab</name>
+    <value></value>
+    <description>
+      The Kerberos keytab file with the credentials for the
+      HTTP Kerberos principal used by Hadoop-Auth in the HTTP endpoint.
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.datanode.kerberos.principal</name>
+    <value></value>
+ <description>
+        The Kerberos principal that the DataNode runs as. "_HOST" is replaced by the real host name.
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.namenode.keytab.file</name>
+    <value></value>
+ <description>
+        Combined keytab file containing the namenode service and host principals.
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.secondary.namenode.keytab.file</name>
+    <value></value>
+  <description>
+        Combined keytab file containing the namenode service and host principals.
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.datanode.keytab.file</name>
+    <value></value>
+ <description>
+        The filename of the keytab file for the DataNode.
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.https.port</name>
+    <value>50470</value>
+ <description>The https port where namenode binds</description>
+
+  </property>
+
+  <property>
+    <name>dfs.https.address</name>
+    <value></value>
+  <description>The https address where namenode binds</description>
+
+  </property>
+
+  <property>
+    <name>dfs.datanode.data.dir.perm</name>
+    <value>750</value>
+<description>The permissions that should be there on dfs.data.dir
+directories. The datanode will not come up if the permissions are
+different on existing dfs.data.dir directories. If the directories
+don't exist, they will be created with this permission.</description>
+  </property>
+
+  <property>
+    <name>dfs.access.time.precision</name>
+    <value>0</value>
+    <description>The access time for HDFS file is precise upto this value.
+                 The default value is 1 hour. Setting a value of 0 disables
+                 access times for HDFS.
+    </description>
+  </property>
+
+  <property>
+   <name>dfs.cluster.administrators</name>
+   <value> hdfs</value>
+   <description>ACL for who all can view the default servlets in the HDFS</description>
+  </property>
+
+  <property>
+    <name>ipc.server.read.threadpool.size</name>
+    <value>5</value>
+    <description></description>
+  </property>
+
+  <property>
+    <name>dfs.namenode.check.stale.datanode</name>
+    <value>true</value>
+    <description>
+      With this setting, the datanodes that have not replied to the heartbeat
+      for more than 30s (i.e. in a stale state) are used for reads only if all
+      other remote replicas have failed.
+    </description>
+  </property>
+
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HDFS/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HDFS/metainfo.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HDFS/metainfo.xml
new file mode 100644
index 0000000..1fbfbe6
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HDFS/metainfo.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <user>root</user>
+    <comment>Apache Hadoop Distributed File System</comment>
+    <version>2.0.3.22-1</version>
+
+    <components>
+        <component>
+            <name>NAMENODE</name>
+            <category>MASTER</category>
+        </component>
+
+        <component>
+            <name>DATANODE</name>
+            <category>SLAVE</category>
+        </component>
+
+        <component>
+            <name>SECONDARY_NAMENODE</name>
+            <category>MASTER</category>
+        </component>
+
+        <component>
+            <name>HDFS_CLIENT</name>
+            <category>CLIENT</category>
+        </component>
+    </components>
+
+
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HIVE/configuration/hive-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HIVE/configuration/hive-site.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HIVE/configuration/hive-site.xml
new file mode 100644
index 0000000..7d35558
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HIVE/configuration/hive-site.xml
@@ -0,0 +1,138 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+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.
+-->
+
+<configuration>
+  <property>
+    <name>hive.metastore.local</name>
+    <value>false</value>
+    <description>controls whether to connect to remove metastore server or
+    open a new metastore server in Hive Client JVM</description>
+  </property>
+
+  <property>
+    <name>javax.jdo.option.ConnectionURL</name>
+    <value></value>
+    <description>JDBC connect string for a JDBC metastore</description>
+  </property>
+
+  <property>
+    <name>javax.jdo.option.ConnectionDriverName</name>
+    <value>com.mysql.jdbc.Driver</value>
+    <description>Driver class name for a JDBC metastore</description>
+  </property>
+
+  <property>
+    <name>javax.jdo.option.ConnectionUserName</name>
+    <value></value>
+    <description>username to use against metastore database</description>
+  </property>
+
+  <property>
+    <name>javax.jdo.option.ConnectionPassword</name>
+    <value></value>
+    <description>password to use against metastore database</description>
+  </property>
+
+  <property>
+    <name>hive.metastore.warehouse.dir</name>
+    <value>/apps/hive/warehouse</value>
+    <description>location of default database for the warehouse</description>
+  </property>
+
+  <property>
+    <name>hive.metastore.sasl.enabled</name>
+    <value></value>
+    <description>If true, the metastore thrift interface will be secured with SASL.
+     Clients must authenticate with Kerberos.</description>
+  </property>
+
+  <property>
+    <name>hive.metastore.kerberos.keytab.file</name>
+    <value></value>
+    <description>The path to the Kerberos Keytab file containing the metastore
+     thrift server's service principal.</description>
+  </property>
+
+  <property>
+    <name>hive.metastore.kerberos.principal</name>
+    <value></value>
+    <description>The service principal for the metastore thrift server. The special
+    string _HOST will be replaced automatically with the correct host name.</description>
+  </property>
+
+  <property>
+    <name>hive.metastore.cache.pinobjtypes</name>
+    <value>Table,Database,Type,FieldSchema,Order</value>
+    <description>List of comma separated metastore object types that should be pinned in the cache</description>
+  </property>
+
+  <property>
+    <name>hive.metastore.uris</name>
+    <value></value>
+    <description>URI for client to contact metastore server</description>
+  </property>
+
+  <property>
+    <name>hive.semantic.analyzer.factory.impl</name>
+    <value>org.apache.hivealog.cli.HCatSemanticAnalyzerFactory</value>
+    <description>controls which SemanticAnalyzerFactory implemenation class is used by CLI</description>
+  </property>
+
+  <property>
+    <name>hadoop.clientside.fs.operations</name>
+    <value>true</value>
+    <description>FS operations are owned by client</description>
+  </property>
+
+  <property>
+    <name>hive.metastore.client.socket.timeout</name>
+    <value>60</value>
+    <description>MetaStore Client socket timeout in seconds</description>
+  </property>
+
+  <property>
+    <name>hive.metastore.execute.setugi</name>
+    <value>true</value>
+    <description>In unsecure mode, setting this property to true will cause the metastore to execute DFS operations using the client's reported user and group permissions. Note that this property must be set on both the client and     server sides. Further note that its best effort. If client sets its to true and server sets it to false, client setting will be ignored.</description>
+  </property>
+
+  <property>
+    <name>hive.security.authorization.enabled</name>
+    <value>true</value>
+    <description>enable or disable the hive client authorization</description>
+  </property>
+
+  <property>
+    <name>hive.security.authorization.manager</name>
+    <value>org.apache.hcatalog.security.HdfsAuthorizationProvider</value>
+    <description>the hive client authorization manager class name.
+    The user defined authorization class should implement interface org.apache.hadoop.hive.ql.security.authorization.HiveAuthorizationProvider.  </description>
+  </property>
+
+  <property>
+    <name>hive.server2.enable.doAs</name>
+    <value>true</value>
+  </property>
+
+  <property>
+    <name>fs.hdfs.impl.disable.cache</name>
+    <value>true</value>
+  </property>
+
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HIVE/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HIVE/metainfo.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HIVE/metainfo.xml
new file mode 100644
index 0000000..c87b494
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HIVE/metainfo.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <user>root</user>
+    <comment>Data warehouse system for ad-hoc queries &amp; analysis of large datasets and table &amp; storage management service</comment>
+    <version>0.10.0.22-1</version>
+
+    <components>        
+        <component>
+            <name>HIVE_METASTORE</name>
+            <category>MASTER</category>
+        </component>
+        <component>
+            <name>HIVE_SERVER</name>
+            <category>MASTER</category>
+        </component>
+        <component>
+            <name>MYSQL_SERVER</name>
+            <category>MASTER</category>
+        </component>
+        <component>
+            <name>HIVE_CLIENT</name>
+            <category>CLIENT</category>
+        </component>
+    </components>
+
+
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/container-executor.cfg
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/container-executor.cfg b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/container-executor.cfg
new file mode 100644
index 0000000..502ddaa
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/container-executor.cfg
@@ -0,0 +1,20 @@
+#
+# 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.
+#
+yarn.nodemanager.local-dirs=TODO-YARN-LOCAL-DIR
+yarn.nodemanager.linux-container-executor.group=hadoop
+yarn.nodemanager.log-dirs=TODO-YARN-LOG-DIR
+banned.users=hfds,bin,0

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/core-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/core-site.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/core-site.xml
new file mode 100644
index 0000000..3a2af49
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/core-site.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+   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.
+-->
+<configuration>
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/global.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/global.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/global.xml
new file mode 100644
index 0000000..ceedd56
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/global.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+/**
+ * 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.
+ */
+-->
+
+<configuration>
+  <property>
+    <name>hs_host</name>
+    <value></value>
+    <description>History Server.</description>
+  </property>
+  <property>
+    <name>mapred_log_dir_prefix</name>
+    <value>/var/log/hadoop-mapreduce</value>
+    <description>Mapreduce Log Dir Prefix</description>
+  </property>
+  <property>
+    <name>mapred_pid_dir_prefix</name>
+    <value>/var/run/hadoop-mapreduce</value>
+    <description>Mapreduce PID Dir Prefix</description>
+  </property>
+  <property>
+    <name>mapred_user</name>
+    <value>mapred</value>
+    <description>Mapreduce User</description>
+  </property>
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/mapred-queue-acls.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/mapred-queue-acls.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/mapred-queue-acls.xml
new file mode 100644
index 0000000..ce12380
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/mapred-queue-acls.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+
+<!--
+   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.
+-->
+
+<!-- mapred-queue-acls.xml -->
+<configuration>
+
+
+<!-- queue default -->
+
+  <property>
+    <name>mapred.queue.default.acl-submit-job</name>
+    <value>*</value>
+  </property>
+
+  <property>
+    <name>mapred.queue.default.acl-administer-jobs</name>
+    <value>*</value>
+  </property>
+
+  <!-- END ACLs -->
+
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/mapred-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/mapred-site.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/mapred-site.xml
new file mode 100644
index 0000000..5896f13
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/mapred-site.xml
@@ -0,0 +1,300 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+
+<!--
+   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.
+-->
+
+<!-- Put site-specific property overrides in this file. -->
+
+<configuration xmlns:xi="http://www.w3.org/2001/XInclude">
+
+<!-- i/o properties -->
+
+  <property>
+    <name>io.sort.mb</name>
+    <value>100</value>
+    <description>No description</description>
+  </property>
+
+  <property>
+    <name>io.sort.record.percent</name>
+    <value>.2</value>
+    <description>No description</description>
+  </property>
+
+  <property>
+    <name>io.sort.spill.percent</name>
+    <value>0.1</value>
+    <description>No description</description>
+  </property>
+
+  <property>
+    <name>io.sort.factor</name>
+    <value>100</value>
+    <description>No description</description>
+  </property>
+
+<!-- map/reduce properties -->
+
+  <property>
+    <name>mapred.system.dir</name>
+    <value></value>
+    <description>No description</description>
+    <final>true</final>
+  </property>
+
+  <property>
+    <!-- cluster specific -->
+    <name>mapred.local.dir</name>
+    <value></value>
+    <description>No description</description>
+    <final>true</final>
+  </property>
+
+  <property>
+    <name>mapred.reduce.parallel.copies</name>
+    <value>30</value>
+    <description>No description</description>
+  </property>
+
+  <property>
+    <name>mapred.tasktracker.map.tasks.maximum</name>
+    <value></value>
+    <description>No description</description>
+  </property>
+
+  <property>
+    <name>mapred.map.tasks.speculative.execution</name>
+    <value>false</value>
+    <description>If true, then multiple instances of some map tasks
+               may be executed in parallel.</description>
+  </property>
+
+  <property>
+    <name>mapred.reduce.tasks.speculative.execution</name>
+    <value>false</value>
+    <description>If true, then multiple instances of some reduce tasks
+               may be executed in parallel.</description>
+  </property>
+
+  <property>
+    <name>mapred.reduce.slowstart.completed.maps</name>
+    <value>0.05</value>
+  </property>
+
+  <property>
+    <name>mapred.inmem.merge.threshold</name>
+    <value>1000</value>
+    <description>The threshold, in terms of the number of files
+  for the in-memory merge process. When we accumulate threshold number of files
+  we initiate the in-memory merge and spill to disk. A value of 0 or less than
+  0 indicates we want to DON'T have any threshold and instead depend only on
+  the ramfs's memory consumption to trigger the merge.
+  </description>
+  </property>
+
+  <property>
+    <name>mapred.job.shuffle.merge.percent</name>
+    <value>0.66</value>
+    <description>The usage threshold at which an in-memory merge will be
+  initiated, expressed as a percentage of the total memory allocated to
+  storing in-memory map outputs, as defined by
+  mapred.job.shuffle.input.buffer.percent.
+  </description>
+  </property>
+
+  <property>
+    <name>mapred.job.shuffle.input.buffer.percent</name>
+    <value>0.7</value>
+    <description>The percentage of memory to be allocated from the maximum heap
+  size to storing map outputs during the shuffle.
+  </description>
+  </property>
+
+  <property>
+    <name>mapred.map.output.compression.codec</name>
+    <value></value>
+    <description>If the map outputs are compressed, how should they be
+      compressed
+    </description>
+  </property>
+
+<property>
+  <name>mapred.output.compression.type</name>
+  <value>BLOCK</value>
+  <description>If the job outputs are to compressed as SequenceFiles, how should
+               they be compressed? Should be one of NONE, RECORD or BLOCK.
+  </description>
+</property>
+
+  <property>
+    <name>mapred.job.reduce.input.buffer.percent</name>
+    <value>0.0</value>
+    <description>The percentage of memory- relative to the maximum heap size- to
+  retain map outputs during the reduce. When the shuffle is concluded, any
+  remaining map outputs in memory must consume less than this threshold before
+  the reduce can begin.
+  </description>
+  </property>
+
+ <property>
+  <name>mapreduce.reduce.input.limit</name>
+  <value>10737418240</value>
+  <description>The limit on the input size of the reduce. (This value
+  is 10 Gb.)  If the estimated input size of the reduce is greater than
+  this value, job is failed. A value of -1 means that there is no limit
+  set. </description>
+</property>
+
+
+  <!-- copied from kryptonite configuration -->
+  <property>
+    <name>mapred.compress.map.output</name>
+    <value></value>
+  </property>
+
+
+  <property>
+    <name>mapred.task.timeout</name>
+    <value>600000</value>
+    <description>The number of milliseconds before a task will be
+  terminated if it neither reads an input, writes an output, nor
+  updates its status string.
+  </description>
+  </property>
+
+  <property>
+    <name>jetty.connector</name>
+    <value>org.mortbay.jetty.nio.SelectChannelConnector</value>
+    <description>No description</description>
+  </property>
+
+  <property>
+    <name>mapred.child.root.logger</name>
+    <value>INFO,TLA</value>
+  </property>
+
+  <property>
+    <name>mapred.child.java.opts</name>
+    <value>-Xmx512m</value>
+    <description>No description</description>
+  </property>
+
+  <property>
+    <name>mapred.cluster.reduce.memory.mb</name>
+    <value></value>
+  </property>
+
+  <property>
+    <name>mapred.job.map.memory.mb</name>
+    <value>1024</value>
+  </property>
+
+  <property>
+    <name>mapred.job.reduce.memory.mb</name>
+    <value>1024</value>
+  </property>
+
+<property>
+  <name>mapred.max.tracker.blacklists</name>
+  <value>16</value>
+  <description>
+    if node is reported blacklisted by 16 successful jobs within timeout-window, it will be graylisted
+  </description>
+</property>
+
+<property>
+  <name>mapred.healthChecker.script.path</name>
+  <value></value>
+</property>
+
+<property>
+  <name>mapred.healthChecker.script.timeout</name>
+  <value>60000</value>
+</property>
+
+<property>
+  <name>mapred.task.maxvmem</name>
+  <value></value>
+  <final>true</final>
+   <description>No description</description>
+</property>
+
+<property>
+  <name>mapreduce.fileoutputcommitter.marksuccessfuljobs</name>
+  <value>false</value>
+</property>
+
+ <property>
+   <name>mapreduce.tasktracker.keytab.file</name>
+   <value></value>
+    <description>The filename of the keytab for the task tracker</description>
+ </property>
+
+  <property>
+    <name>mapreduce.jobtracker.split.metainfo.maxsize</name>
+    <value>50000000</value>
+    <final>true</final>
+     <description>If the size of the split metainfo file is larger than this, the JobTracker will fail the job during
+    initialize.
+   </description>
+  </property>
+
+ <property>
+   <name>mapreduce.jobhistory.keytab.file</name>
+    <!-- cluster variant -->
+   <value></value>
+   <description>The keytab for the job history server principal.</description>
+ </property>
+
+<property>
+  <name>mapreduce.shuffle.port</name>
+  <value>8081</value>
+  <description>Default port that the ShuffleHandler will run on. ShuffleHandler is a service run at the NodeManager to facilitate transfers of intermediate Map outputs to requesting Reducers.</description>
+</property>
+
+<property>
+  <name>mapreduce.jobhistory.intermediate-done-dir</name>
+  <value>/mr-history/tmp</value>
+  <description>Directory where history files are written by MapReduce jobs.</description>
+</property>
+
+<property>
+  <name>mapreduce.jobhistory.done-dir</name>
+  <value>/mr-history/done</value>
+  <description>Directory where history files are managed by the MR JobHistory Server.</description>
+</property>
+
+<property>       
+  <name>mapreduce.jobhistory.address</name>       
+  <value>localhost:10020</value>  
+  <description>Enter your JobHistoryServer hostname.</description>
+</property>
+
+<property>       
+  <name>mapreduce.jobhistory.webapp.address</name>       
+  <value>localhost:19888</value>  
+  <description>Enter your JobHistoryServer hostname.</description>
+</property>
+
+<property>
+  <name>mapreduce.framework.name</name>
+  <value>yarn</value>
+  <description>No description</description>
+</property>
+
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/metainfo.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/metainfo.xml
new file mode 100644
index 0000000..7c4d1f4
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/metainfo.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <user>mapred</user>
+    <comment>Apache Hadoop NextGen MapReduce (client libraries)</comment>
+    <version>2.0.3.22-1</version>
+    <components>
+        <component>
+            <name>HISTORYSERVER</name>
+            <category>MASTER</category>
+        </component>
+        <component>
+            <name>MAPREDUCE2_CLIENT</name>
+            <category>CLIENT</category>
+        </component>
+    </components>
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/NAGIOS/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/NAGIOS/metainfo.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/NAGIOS/metainfo.xml
new file mode 100644
index 0000000..bd7de07
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/NAGIOS/metainfo.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <user>root</user>
+    <comment>Nagios Monitoring and Alerting system</comment>
+    <version>3.2.3</version>
+
+    <components>
+        <component>
+            <name>NAGIOS_SERVER</name>
+            <category>MASTER</category>
+        </component>
+    </components>
+
+</metainfo>


[07/14] AMBARI-2677. Merge from branch-1.4.0 (ncole)

Posted by nc...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/YARN/configuration/yarn-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/YARN/configuration/yarn-site.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/YARN/configuration/yarn-site.xml
new file mode 100644
index 0000000..fed4933
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/YARN/configuration/yarn-site.xml
@@ -0,0 +1,196 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+   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.
+-->
+
+<!-- Put site-specific property overrides in this file. -->
+
+<configuration xmlns:xi="http://www.w3.org/2001/XInclude">
+
+<!-- ResourceManager -->
+
+  <property>
+    <name>yarn.resourcemanager.resource-tracker.address</name>
+    <value>localhost:8025</value>
+  </property>
+
+  <property>
+    <name>yarn.resourcemanager.scheduler.address</name>
+    <value>localhost:8030</value>
+  </property>
+  
+  <property>
+    <name>yarn.resourcemanager.address</name>
+    <value>localhost:8050</value>
+  </property>
+
+  <property>
+    <name>yarn.resourcemanager.admin.address</name>
+    <value>localhost:8141</value>
+  </property>
+
+  <property>
+   <name>yarn.resourcemanager.scheduler.class</name>
+   <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
+  </property>
+
+  <property>
+    <name>yarn.scheduler.minimum-allocation-mb</name>
+    <value>1024</value>
+  </property>
+
+  <property>
+    <name>yarn.scheduler.maximum-allocation-mb</name>
+    <value>8192</value>
+  </property>
+
+<!-- NodeManager -->
+
+  <property>
+    <name>yarn.nodemanager.address</name>
+    <value>0.0.0.0:45454</value>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.resource.memory-mb</name>
+    <value>8192</value>
+    <description>Amount of physical memory, in MB, that can be allocated
+      for containers.</description>
+  </property>
+
+  <property>
+    <name>yarn.application.classpath</name>
+    <value>/etc/hadoop/conf,/usr/lib/hadoop/*,/usr/lib/hadoop/lib/*,/usr/lib/hadoop-hdfs/*,/usr/lib/hadoop-hdfs/lib/*,/usr/lib/hadoop-yarn/*,/usr/lib/hadoop-yarn/lib/*,/usr/lib/hadoop-mapreduce/*,/usr/lib/hadoop-mapreduce/lib/*</value>
+  <description>Classpath for typical applications.</description>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.vmem-pmem-ratio</name>
+    <value>2.1</value>
+    <description>Ratio between virtual memory to physical memory when
+    setting memory limits for containers. Container allocations are
+    expressed in terms of physical memory, and virtual memory usage
+    is allowed to exceed this allocation by this ratio.
+    </description>
+  </property>
+  
+  <property>
+    <name>yarn.nodemanager.container-executor.class</name>
+    <value>org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor</value>
+    <description>ContainerExecutor for launching containers</description>
+  </property>
+ 
+  <property>
+    <name>yarn.nodemanager.aux-services</name>
+    <value>mapreduce.shuffle</value>
+    <description>Auxilliary services of NodeManager</description>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.aux-services.class</name>
+    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
+    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.log-dirs</name>
+    <value>/var/log/hadoop/yarn</value>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.container-monitor.interval-ms</name>
+    <value>3000</value>
+    <description>The interval, in milliseconds, for which the node manager
+    waits  between two cycles of monitoring its containers' memory usage. 
+    </description>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.health-checker.script.path</name>
+    <value>/etc/hadoop/conf/health_check</value>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.health-checker.interval-ms</name>
+    <value>135000</value>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.health-checker.script.timeout-ms</name>
+    <value>60000</value>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.log.retain-second</name>
+    <value>604800</value>
+  </property>
+
+  <property>
+    <name>yarn.log-aggregation-enable</name>
+    <value>true</value>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.remote-app-log-dir</name>
+    <value>/app-logs</value>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.remote-app-log-dir-suffix</name>
+    <value>logs</value>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.log-aggregation.compression-type</name>
+    <value>gz</value> 
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.delete.debug-delay-sec</name>
+    <value>36000</value>
+  </property>
+
+	<property>
+		<name>yarn.resourcemanager.history-store.class</name>
+		<value>org.apache.hadoop.yarn.server.resourcemanager.history.db.RMHistoryDBStore</value>
+	</property>
+
+	<property>
+		<name>yarn.resourcemanager.history-store.db.user</name>
+		<value>mapred</value>
+	</property>
+	
+	<property>
+		<name>yarn.resourcemanager.history-store.db.password</name>
+		<value>mapred</value>
+	</property>
+	
+	<property>
+		<name>yarn.resourcemanager.history-store.db.database</name>
+		<value>jdbc:postgresql:ambarirca</value>
+	</property>
+	
+	<property>
+		<name>yarn.resourcemanager.history-store.db.driver</name>
+		<value>org.postgresql.Driver</value>
+	</property>
+	
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/YARN/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/YARN/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/YARN/metainfo.xml
new file mode 100644
index 0000000..4d150d9
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/YARN/metainfo.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <user>mapred</user>
+    <comment>Apache Hadoop NextGen MapReduce (YARN)</comment>
+    <version>2.1.0.2.0.3.0</version>
+    <components>
+        <component>
+            <name>RESOURCEMANAGER</name>
+            <category>MASTER</category>
+        </component>
+        <component>
+            <name>NODEMANAGER</name>
+            <category>SLAVE</category>
+        </component>
+       <component>
+            <name>YARN_CLIENT</name>
+            <category>CLIENT</category>
+        </component>
+    </components>
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/upgrade/ddl/Ambari-DDL-Postgres-UPGRADE-1.3.0.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/upgrade/ddl/Ambari-DDL-Postgres-UPGRADE-1.3.0.sql b/ambari-server/src/main/resources/upgrade/ddl/Ambari-DDL-Postgres-UPGRADE-1.3.0.sql
index da963b6..431a6a3 100644
--- a/ambari-server/src/main/resources/upgrade/ddl/Ambari-DDL-Postgres-UPGRADE-1.3.0.sql
+++ b/ambari-server/src/main/resources/upgrade/ddl/Ambari-DDL-Postgres-UPGRADE-1.3.0.sql
@@ -31,14 +31,18 @@ ALTER TABLE ambari.hostconfigmapping
 ALTER TABLE ambari.clusterconfigmapping
   ADD COLUMN user_name VARCHAR(255) NOT NULL DEFAULT '_db';
 
-CREATE TABLE ambari.hostconfigmapping (cluster_id bigint NOT NULL, host_name VARCHAR(255) NOT NULL, type_name VARCHAR(255) NOT NULL, version_tag VARCHAR(255) NOT NULL, service_name VARCHAR(255), create_timestamp BIGINT NOT NULL, selected INTEGER NOT NULL DEFAULT 0, user_name VARCHAR(255) NOT NULL DEFAULT '_db', PRIMARY KEY (cluster_id, host_name, type_name, create_timestamp));
+CREATE TABLE ambari.hostconfigmapping (cluster_id bigint NOT NULL, host_name VARCHAR(255) NOT NULL, type_name VARCHAR(255) NOT NULL, version_tag VARCHAR(255) NOT NULL, service_name VARCHAR(255), create_timestamp BIGINT NOT NULL, selected INTEGER NOT NULL DEFAULT 0, PRIMARY KEY (cluster_id, host_name, type_name, create_timestamp));
 GRANT ALL PRIVILEGES ON TABLE ambari.hostconfigmapping TO :username;
 ALTER TABLE ambari.hostconfigmapping ADD CONSTRAINT FK_hostconfigmapping_cluster_id FOREIGN KEY (cluster_id) REFERENCES ambari.clusters (cluster_id);
 ALTER TABLE ambari.hostconfigmapping ADD CONSTRAINT FK_hostconfigmapping_host_name FOREIGN KEY (host_name) REFERENCES ambari.hosts (host_name);
 
 ALTER ROLE :username SET search_path to 'ambari';
 
-ALTER TABLE ambari.stage ADD COLUMN request_context VARCHAR(255);
+ALTER SEQUENCE ambari.host_role_command_task_id_seq INCREMENT BY 50;
+SELECT nextval('ambari.host_role_command_task_id_seq');
+
+ALTER TABLE ambari.stage ADD COLUMN request_context VARCHAR(255);SELECT nextval('ambari.host_role_command_task_id_seq');
+
 
 -- portability changes for MySQL/Oracle support
 alter table ambari.hostcomponentdesiredconfigmapping rename to hcdesiredconfigmapping;
@@ -53,7 +57,7 @@ insert into ambari.ambari_sequences(sequence_name, "value")
   union all
   select 'user_id_seq', nextval('ambari.users_user_id_seq')
   union all
-  select 'host_role_command_id_seq', (select max(task_id) from ambari.host_role_command) + 51;
+  select 'host_role_command_id_seq', nextval('ambari.host_role_command_task_id_seq');
 
 drop sequence ambari.host_role_command_task_id_seq;
 drop sequence ambari.users_user_id_seq;

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
index 75e03b5..2370013 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
@@ -18,33 +18,71 @@
 
 package org.apache.ambari.server.controller;
 
-import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
-import com.google.inject.AbstractModule;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import org.apache.ambari.server.*;
+import static org.easymock.EasyMock.capture;
+import static org.easymock.EasyMock.createNiceMock;
+import static org.easymock.EasyMock.createStrictMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Type;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+
+import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.ClusterNotFoundException;
+import org.apache.ambari.server.HostNotFoundException;
+import org.apache.ambari.server.ParentObjectNotFoundException;
+import org.apache.ambari.server.Role;
+import org.apache.ambari.server.ServiceComponentHostNotFoundException;
+import org.apache.ambari.server.ServiceComponentNotFoundException;
+import org.apache.ambari.server.ServiceNotFoundException;
 import org.apache.ambari.server.api.services.AmbariMetaInfo;
 import org.apache.ambari.server.configuration.Configuration;
 import org.apache.ambari.server.orm.GuiceJpaInitializer;
-import org.apache.ambari.server.state.*;
+import org.apache.ambari.server.state.Cluster;
+import org.apache.ambari.server.state.Clusters;
+import org.apache.ambari.server.state.Host;
+import org.apache.ambari.server.state.Service;
+import org.apache.ambari.server.state.ServiceComponent;
+import org.apache.ambari.server.state.ServiceComponentHost;
+import org.apache.ambari.server.state.StackId;
+import org.apache.ambari.server.state.State;
 import org.apache.ambari.server.state.svccomphost.ServiceComponentHostInstallEvent;
 import org.apache.ambari.server.state.svccomphost.ServiceComponentHostOpSucceededEvent;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.Predicate;
 import org.easymock.Capture;
 import org.junit.Test;
 
-import java.lang.reflect.Field;
-import java.lang.reflect.Type;
-import java.util.*;
-
-import static org.junit.Assert.*;
-import static org.easymock.EasyMock.*;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.google.inject.AbstractModule;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.persist.PersistService;
 
 /**
  * AmbariManagementControllerImpl unit tests
  */
 public class AmbariManagementControllerImplTest {
 
+
+
   @Test
   public void testGetClusters() throws Exception {
     // member state mocks
@@ -1490,282 +1528,277 @@ public class AmbariManagementControllerImplTest {
       }
     });
     injector.getInstance(GuiceJpaInitializer.class);
-    AmbariManagementController amc = injector.getInstance(AmbariManagementController.class);
-    Clusters clusters = injector.getInstance(Clusters.class);
-    Gson gson = new Gson();
-
-    clusters.addHost("host1");
-    clusters.addHost("host2");
-    clusters.addHost("host3");
-    Host host = clusters.getHost("host1");
-    host.setOsType("centos5");
-    host.persist();
-    host = clusters.getHost("host2");
-    host.setOsType("centos5");
-    host.persist();
-    host = clusters.getHost("host3");
-    host.setOsType("centos5");
-    host.persist();
-
-    ClusterRequest clusterRequest = new ClusterRequest(null, "c1", "HDP-1.2.0", null);
-    amc.createCluster(clusterRequest);
-
-    Set<ServiceRequest> serviceRequests = new HashSet<ServiceRequest>();
-    serviceRequests.add(new ServiceRequest("c1", "HDFS", null, null));
-
-    amc.createServices(serviceRequests);
-
-    Type confType = new TypeToken<Map<String, String>>() {
-    }.getType();
-
-    ConfigurationRequest configurationRequest = new ConfigurationRequest("c1", "core-site", "version1",
-        gson.<Map<String, String>>fromJson("{ \"fs.default.name\" : \"localhost:8020\"}", confType)
-    );
-    amc.createConfiguration(configurationRequest);
-
-    configurationRequest = new ConfigurationRequest("c1", "hdfs-site", "version1",
-        gson.<Map<String, String>>fromJson("{ \"dfs.datanode.data.dir.perm\" : \"750\"}", confType)
-    );
-    amc.createConfiguration(configurationRequest);
-
-    configurationRequest = new ConfigurationRequest("c1", "global", "version1",
-        gson.<Map<String, String>>fromJson("{ \"hbase_hdfs_root_dir\" : \"/apps/hbase/\"}", confType)
-    );
-    amc.createConfiguration(configurationRequest);
-
-
-    serviceRequests.clear();
-    serviceRequests.add(new ServiceRequest("c1", "HDFS",
-        gson.<Map<String, String>>fromJson("{\"core-site\": \"version1\", \"hdfs-site\": \"version1\", \"global\" : \"version1\" }", confType)
-        , null));
-//    serviceRequests.add(new ServiceRequest("c1", "MAPREDUCE",
-//        gson.<Map<String, String>>fromJson("{\"core-site\": \"version1\", \"mapred-site\": \"version1\"}", confType)
-//        , null));
-//    serviceRequests.add(new ServiceRequest("c1", "HBASE",
-//        gson.<Map<String, String>>fromJson("{\"hbase-site\": \"version1\", \"hbase-env\": \"version1\"}", confType)
-//        , null));
-//    serviceRequests.add(new ServiceRequest("c1", "NAGIOS",
-//        gson.<Map<String, String>>fromJson("{\"nagios-global\": \"version2\" }", confType)
-//        , null));
-
-    amc.updateServices(serviceRequests, mapRequestProps, true, false);
-
-
-    Set<ServiceComponentRequest> serviceComponentRequests = new HashSet<ServiceComponentRequest>();
-    serviceComponentRequests.add(new ServiceComponentRequest("c1", "HDFS", "NAMENODE", null, null));
-    serviceComponentRequests.add(new ServiceComponentRequest("c1", "HDFS", "SECONDARY_NAMENODE", null, null));
-    serviceComponentRequests.add(new ServiceComponentRequest("c1", "HDFS", "DATANODE", null, null));
-    serviceComponentRequests.add(new ServiceComponentRequest("c1", "HDFS", "HDFS_CLIENT", null, null));
-
-    amc.createComponents(serviceComponentRequests);
-
-    Set<HostRequest> hostRequests = new HashSet<HostRequest>();
-    hostRequests.add(new HostRequest("host1", "c1", null));
-    hostRequests.add(new HostRequest("host2", "c1", null));
-    hostRequests.add(new HostRequest("host3", "c1", null));
-
-    amc.createHosts(hostRequests);
-
-    Set<ServiceComponentHostRequest> componentHostRequests = new HashSet<ServiceComponentHostRequest>();
-    componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "DATANODE", "host1", null, null));
-    componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "NAMENODE", "host1", null, null));
-    componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "SECONDARY_NAMENODE", "host1", null, null));
-    componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "DATANODE", "host2", null, null));
-    componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "DATANODE", "host3", null, null));
-
-
-    amc.createHostComponents(componentHostRequests);
-
-    serviceRequests.clear();
-    serviceRequests.add(new ServiceRequest("c1", "HDFS", null, "INSTALLED"));
-    amc.updateServices(serviceRequests, mapRequestProps, true, false);
-
-    Cluster cluster = clusters.getCluster("c1");
-    Map<String, ServiceComponentHost> namenodes = cluster.getService("HDFS").getServiceComponent("NAMENODE").getServiceComponentHosts();
-    assertEquals(1, namenodes.size());
-
-    ServiceComponentHost componentHost = namenodes.get("host1");
-
-    Map<String, ServiceComponentHost> hostComponents = cluster.getService("HDFS").getServiceComponent("DATANODE").getServiceComponentHosts();
-    for (Map.Entry<String, ServiceComponentHost> entry : hostComponents.entrySet()) {
-      ServiceComponentHost cHost = entry.getValue();
-      cHost.handleEvent(new ServiceComponentHostInstallEvent(cHost.getServiceComponentName(), cHost.getHostName(), System.currentTimeMillis(), "HDP-1.2.0"));
-      cHost.handleEvent(new ServiceComponentHostOpSucceededEvent(cHost.getServiceComponentName(), cHost.getHostName(), System.currentTimeMillis()));
-    }
-    hostComponents = cluster.getService("HDFS").getServiceComponent("NAMENODE").getServiceComponentHosts();
-    for (Map.Entry<String, ServiceComponentHost> entry : hostComponents.entrySet()) {
-      ServiceComponentHost cHost = entry.getValue();
-      cHost.handleEvent(new ServiceComponentHostInstallEvent(cHost.getServiceComponentName(), cHost.getHostName(), System.currentTimeMillis(), "HDP-1.2.0"));
-      cHost.handleEvent(new ServiceComponentHostOpSucceededEvent(cHost.getServiceComponentName(), cHost.getHostName(), System.currentTimeMillis()));
-    }
-    hostComponents = cluster.getService("HDFS").getServiceComponent("SECONDARY_NAMENODE").getServiceComponentHosts();
-    for (Map.Entry<String, ServiceComponentHost> entry : hostComponents.entrySet()) {
-      ServiceComponentHost cHost = entry.getValue();
-      cHost.handleEvent(new ServiceComponentHostInstallEvent(cHost.getServiceComponentName(), cHost.getHostName(), System.currentTimeMillis(), "HDP-1.2.0"));
-      cHost.handleEvent(new ServiceComponentHostOpSucceededEvent(cHost.getServiceComponentName(), cHost.getHostName(), System.currentTimeMillis()));
-    }
-
-    componentHostRequests.clear();
-    componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "NAMENODE", "host1", null, "MAINTENANCE"));
-
-    amc.updateHostComponents(componentHostRequests, mapRequestProps, true);
-
-    assertEquals(State.MAINTENANCE, componentHost.getState());
-
-    componentHostRequests.clear();
-    componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "NAMENODE", "host1", null, "INSTALLED"));
-
-    amc.updateHostComponents(componentHostRequests, mapRequestProps, true);
-
-    assertEquals(State.INSTALLED, componentHost.getState());
-
-    componentHostRequests.clear();
-    componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "NAMENODE", "host1", null, "MAINTENANCE"));
-
-    amc.updateHostComponents(componentHostRequests, mapRequestProps, true);
-
-    assertEquals(State.MAINTENANCE, componentHost.getState());
-
-    componentHostRequests.clear();
-    componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "NAMENODE", "host2", null, null));
-
-    amc.createHostComponents(componentHostRequests);
-
-    componentHostRequests.clear();
-    componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "NAMENODE", "host2", null, "INSTALLED"));
-
-    amc.updateHostComponents(componentHostRequests, mapRequestProps, true);
-
-    namenodes = cluster.getService("HDFS").getServiceComponent("NAMENODE").getServiceComponentHosts();
-    assertEquals(2, namenodes.size());
-
-    componentHost = namenodes.get("host2");
-    componentHost.handleEvent(new ServiceComponentHostInstallEvent(componentHost.getServiceComponentName(), componentHost.getHostName(), System.currentTimeMillis(), "HDP-1.2.0"));
-    componentHost.handleEvent(new ServiceComponentHostOpSucceededEvent(componentHost.getServiceComponentName(), componentHost.getHostName(), System.currentTimeMillis()));
-
-    serviceRequests.clear();
-    serviceRequests.add(new ServiceRequest("c1", "HDFS", null, "STARTED"));
-
-    RequestStatusResponse response = amc.updateServices(serviceRequests,
-      mapRequestProps, true, false);
-    for (ShortTaskStatus shortTaskStatus : response.getTasks()) {
-      assertFalse("host1".equals(shortTaskStatus.getHostName()) && "NAMENODE".equals(shortTaskStatus.getRole()));
-    }
-
-    componentHostRequests.clear();
-    componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "NAMENODE", "host1", null, null));
-
-    amc.deleteHostComponents(componentHostRequests);
-    namenodes = cluster.getService("HDFS").getServiceComponent("NAMENODE").getServiceComponentHosts();
-    assertEquals(1, namenodes.size());
-
-    // testing the behavior for runSmokeTest flag
-    // piggybacking on this test to avoid setting up the mock cluster
-    testRunSmokeTestFlag(mapRequestProps, amc, serviceRequests);
-
-    // should be able to add the host component back
-    componentHostRequests.clear();
-    componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "NAMENODE", "host1", null, null));
-    amc.createHostComponents(componentHostRequests);
-    namenodes = cluster.getService("HDFS").getServiceComponent("NAMENODE").getServiceComponentHosts();
-    assertEquals(2, namenodes.size());
     
-    
-    // make unknown
-    ServiceComponentHost sch = null;
-    for (ServiceComponentHost tmp : cluster.getServiceComponentHosts("host2")) {
-      if (tmp.getServiceComponentName().equals("DATANODE")) {
-        tmp.setState(State.UNKNOWN);
-        sch = tmp;
+    try {
+      AmbariManagementController amc = injector.getInstance(AmbariManagementController.class);
+      Clusters clusters = injector.getInstance(Clusters.class);
+      Gson gson = new Gson();
+  
+      clusters.addHost("host1");
+      clusters.addHost("host2");
+      clusters.addHost("host3");
+      Host host = clusters.getHost("host1");
+      host.setOsType("centos5");
+      host.persist();
+      host = clusters.getHost("host2");
+      host.setOsType("centos5");
+      host.persist();
+      host = clusters.getHost("host3");
+      host.setOsType("centos5");
+      host.persist();
+  
+      ClusterRequest clusterRequest = new ClusterRequest(null, "c1", "HDP-1.2.0", null);
+      amc.createCluster(clusterRequest);
+  
+      Set<ServiceRequest> serviceRequests = new HashSet<ServiceRequest>();
+      serviceRequests.add(new ServiceRequest("c1", "HDFS", null, null));
+  
+      amc.createServices(serviceRequests);
+  
+      Type confType = new TypeToken<Map<String, String>>() {
+      }.getType();
+  
+      ConfigurationRequest configurationRequest = new ConfigurationRequest("c1", "core-site", "version1",
+          gson.<Map<String, String>>fromJson("{ \"fs.default.name\" : \"localhost:8020\"}", confType)
+      );
+      amc.createConfiguration(configurationRequest);
+  
+      configurationRequest = new ConfigurationRequest("c1", "hdfs-site", "version1",
+          gson.<Map<String, String>>fromJson("{ \"dfs.datanode.data.dir.perm\" : \"750\"}", confType)
+      );
+      amc.createConfiguration(configurationRequest);
+  
+      configurationRequest = new ConfigurationRequest("c1", "global", "version1",
+          gson.<Map<String, String>>fromJson("{ \"hbase_hdfs_root_dir\" : \"/apps/hbase/\"}", confType)
+      );
+      amc.createConfiguration(configurationRequest);
+  
+  
+      serviceRequests.clear();
+      serviceRequests.add(new ServiceRequest("c1", "HDFS",
+          gson.<Map<String, String>>fromJson("{\"core-site\": \"version1\", \"hdfs-site\": \"version1\", \"global\" : \"version1\" }", confType)
+          , null));
+  
+      amc.updateServices(serviceRequests, mapRequestProps, true, false);
+  
+      Set<ServiceComponentRequest> serviceComponentRequests = new HashSet<ServiceComponentRequest>();
+      serviceComponentRequests.add(new ServiceComponentRequest("c1", "HDFS", "NAMENODE", null, null));
+      serviceComponentRequests.add(new ServiceComponentRequest("c1", "HDFS", "SECONDARY_NAMENODE", null, null));
+      serviceComponentRequests.add(new ServiceComponentRequest("c1", "HDFS", "DATANODE", null, null));
+      serviceComponentRequests.add(new ServiceComponentRequest("c1", "HDFS", "HDFS_CLIENT", null, null));
+  
+      amc.createComponents(serviceComponentRequests);
+  
+      Set<HostRequest> hostRequests = new HashSet<HostRequest>();
+      hostRequests.add(new HostRequest("host1", "c1", null));
+      hostRequests.add(new HostRequest("host2", "c1", null));
+      hostRequests.add(new HostRequest("host3", "c1", null));
+  
+      amc.createHosts(hostRequests);
+  
+      Set<ServiceComponentHostRequest> componentHostRequests = new HashSet<ServiceComponentHostRequest>();
+      componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "DATANODE", "host1", null, null));
+      componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "NAMENODE", "host1", null, null));
+      componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "SECONDARY_NAMENODE", "host1", null, null));
+      componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "DATANODE", "host2", null, null));
+      componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "DATANODE", "host3", null, null));
+  
+  
+      amc.createHostComponents(componentHostRequests);
+  
+      serviceRequests.clear();
+      serviceRequests.add(new ServiceRequest("c1", "HDFS", null, "INSTALLED"));
+      amc.updateServices(serviceRequests, mapRequestProps, true, false);
+  
+      Cluster cluster = clusters.getCluster("c1");
+      Map<String, ServiceComponentHost> namenodes = cluster.getService("HDFS").getServiceComponent("NAMENODE").getServiceComponentHosts();
+      assertEquals(1, namenodes.size());
+  
+      ServiceComponentHost componentHost = namenodes.get("host1");
+  
+      Map<String, ServiceComponentHost> hostComponents = cluster.getService("HDFS").getServiceComponent("DATANODE").getServiceComponentHosts();
+      for (Map.Entry<String, ServiceComponentHost> entry : hostComponents.entrySet()) {
+        ServiceComponentHost cHost = entry.getValue();
+        cHost.handleEvent(new ServiceComponentHostInstallEvent(cHost.getServiceComponentName(), cHost.getHostName(), System.currentTimeMillis(), "HDP-1.2.0"));
+        cHost.handleEvent(new ServiceComponentHostOpSucceededEvent(cHost.getServiceComponentName(), cHost.getHostName(), System.currentTimeMillis()));
       }
-    }
-    assertNotNull(sch);
-
-    // make maintenance
-    componentHostRequests.clear();
-    componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "DATANODE", "host2", null, "MAINTENANCE"));
-    amc.updateHostComponents(componentHostRequests, mapRequestProps, false);
-    assertEquals(State.MAINTENANCE, sch.getState ());
-    
-    // confirm delete
-    componentHostRequests.clear();
-    componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "DATANODE", "host2", null, null));
-    amc.deleteHostComponents(componentHostRequests);
-    
-    sch = null;
-    for (ServiceComponentHost tmp : cluster.getServiceComponentHosts("host2")) {
-      if (tmp.getServiceComponentName().equals("DATANODE")) {
-        sch = tmp;
+      hostComponents = cluster.getService("HDFS").getServiceComponent("NAMENODE").getServiceComponentHosts();
+      for (Map.Entry<String, ServiceComponentHost> entry : hostComponents.entrySet()) {
+        ServiceComponentHost cHost = entry.getValue();
+        cHost.handleEvent(new ServiceComponentHostInstallEvent(cHost.getServiceComponentName(), cHost.getHostName(), System.currentTimeMillis(), "HDP-1.2.0"));
+        cHost.handleEvent(new ServiceComponentHostOpSucceededEvent(cHost.getServiceComponentName(), cHost.getHostName(), System.currentTimeMillis()));
       }
-    }
-    assertNull(sch);
-    
-    /*
-    *Test remove service
-    */
-    serviceRequests.clear();
-    serviceRequests.add(new ServiceRequest("c1", "HDFS", null, "INSTALLED"));
-    amc.updateServices(serviceRequests, mapRequestProps, true, false);
-    serviceRequests.clear();
-    serviceRequests.add(new ServiceRequest("c1", null, null, null));
-    assertEquals(1, amc.getServices(serviceRequests).size());
-    serviceRequests.clear();
-    serviceRequests.add(new ServiceRequest("c1", "HDFS", null, null));
-    amc.deleteServices(serviceRequests);
-    serviceRequests.clear();
-    serviceRequests.add(new ServiceRequest("c1", null, null, null));     
-    assertEquals(0, amc.getServices(serviceRequests).size());
-    
-    /*
-    *Test add service again
-    */
-    serviceRequests.clear();
-    serviceRequests.add(new ServiceRequest("c1", "HDFS", null, null));
-    amc.createServices(serviceRequests);
-    assertEquals(1, amc.getServices(serviceRequests).size());
-    //Create new configs
-    configurationRequest = new ConfigurationRequest("c1", "core-site", "version2",
-        gson.<Map<String, String>>fromJson("{ \"fs.default.name\" : \"localhost:8020\"}", confType)
-    );
-    amc.createConfiguration(configurationRequest);
-    configurationRequest = new ConfigurationRequest("c1", "hdfs-site", "version2",
-        gson.<Map<String, String>>fromJson("{ \"dfs.datanode.data.dir.perm\" : \"750\"}", confType)
-    );
-    amc.createConfiguration(configurationRequest);
-    configurationRequest = new ConfigurationRequest("c1", "global", "version2",
-        gson.<Map<String, String>>fromJson("{ \"hbase_hdfs_root_dir\" : \"/apps/hbase/\"}", confType)
-    );
-    amc.createConfiguration(configurationRequest);    
-    //Add configs to service
-    serviceRequests.clear();
-    serviceRequests.add(new ServiceRequest("c1", "HDFS",
-        gson.<Map<String, String>>fromJson("{\"core-site\": \"version2\", \"hdfs-site\": \"version2\", \"global\" : \"version2\" }", confType)
-        , null));
-    amc.updateServices(serviceRequests, mapRequestProps, true, false);
-    //Crate service components
-    serviceComponentRequests = new HashSet<ServiceComponentRequest>();
-    serviceComponentRequests.add(new ServiceComponentRequest("c1", "HDFS", "NAMENODE", null, null));
-    serviceComponentRequests.add(new ServiceComponentRequest("c1", "HDFS", "SECONDARY_NAMENODE", null, null));
-    serviceComponentRequests.add(new ServiceComponentRequest("c1", "HDFS", "DATANODE", null, null));
-    serviceComponentRequests.add(new ServiceComponentRequest("c1", "HDFS", "HDFS_CLIENT", null, null));
-    amc.createComponents(serviceComponentRequests);
-    
-    //Create ServiceComponentHosts
-    componentHostRequests = new HashSet<ServiceComponentHostRequest>();
-    componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "DATANODE", "host1", null, null));
-    componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "NAMENODE", "host1", null, null));
-    componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "SECONDARY_NAMENODE", "host1", null, null));
-    componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "DATANODE", "host2", null, null));
-    componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "DATANODE", "host3", null, null));
-    amc.createHostComponents(componentHostRequests);    
-
+      hostComponents = cluster.getService("HDFS").getServiceComponent("SECONDARY_NAMENODE").getServiceComponentHosts();
+      for (Map.Entry<String, ServiceComponentHost> entry : hostComponents.entrySet()) {
+        ServiceComponentHost cHost = entry.getValue();
+        cHost.handleEvent(new ServiceComponentHostInstallEvent(cHost.getServiceComponentName(), cHost.getHostName(), System.currentTimeMillis(), "HDP-1.2.0"));
+        cHost.handleEvent(new ServiceComponentHostOpSucceededEvent(cHost.getServiceComponentName(), cHost.getHostName(), System.currentTimeMillis()));
+      }
+  
+      componentHostRequests.clear();
+      componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "NAMENODE", "host1", null, "MAINTENANCE"));
+  
+      amc.updateHostComponents(componentHostRequests, mapRequestProps, true);
+  
+      assertEquals(State.MAINTENANCE, componentHost.getState());
+  
+      componentHostRequests.clear();
+      componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "NAMENODE", "host1", null, "INSTALLED"));
+  
+      amc.updateHostComponents(componentHostRequests, mapRequestProps, true);
+  
+      assertEquals(State.INSTALLED, componentHost.getState());
+  
+      componentHostRequests.clear();
+      componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "NAMENODE", "host1", null, "MAINTENANCE"));
+  
+      amc.updateHostComponents(componentHostRequests, mapRequestProps, true);
+  
+      assertEquals(State.MAINTENANCE, componentHost.getState());
+  
+      componentHostRequests.clear();
+      componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "NAMENODE", "host2", null, null));
+  
+      amc.createHostComponents(componentHostRequests);
+  
+      componentHostRequests.clear();
+      componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "NAMENODE", "host2", null, "INSTALLED"));
+  
+      amc.updateHostComponents(componentHostRequests, mapRequestProps, true);
+  
+      namenodes = cluster.getService("HDFS").getServiceComponent("NAMENODE").getServiceComponentHosts();
+      assertEquals(2, namenodes.size());
+  
+      componentHost = namenodes.get("host2");
+      componentHost.handleEvent(new ServiceComponentHostInstallEvent(componentHost.getServiceComponentName(), componentHost.getHostName(), System.currentTimeMillis(), "HDP-1.2.0"));
+      componentHost.handleEvent(new ServiceComponentHostOpSucceededEvent(componentHost.getServiceComponentName(), componentHost.getHostName(), System.currentTimeMillis()));
+  
+      serviceRequests.clear();
+      serviceRequests.add(new ServiceRequest("c1", "HDFS", null, "STARTED"));
+  
+      RequestStatusResponse response = amc.updateServices(serviceRequests,
+        mapRequestProps, true, false);
+      for (ShortTaskStatus shortTaskStatus : response.getTasks()) {
+        assertFalse("host1".equals(shortTaskStatus.getHostName()) && "NAMENODE".equals(shortTaskStatus.getRole()));
+      }
+  
+      componentHostRequests.clear();
+      componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "NAMENODE", "host1", null, null));
+  
+      amc.deleteHostComponents(componentHostRequests);
+      namenodes = cluster.getService("HDFS").getServiceComponent("NAMENODE").getServiceComponentHosts();
+      assertEquals(1, namenodes.size());
+  
+      // testing the behavior for runSmokeTest flag
+      // piggybacking on this test to avoid setting up the mock cluster
+      testRunSmokeTestFlag(mapRequestProps, amc, serviceRequests);
+  
+      // should be able to add the host component back
+      componentHostRequests.clear();
+      componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "NAMENODE", "host1", null, null));
+      amc.createHostComponents(componentHostRequests);
+      namenodes = cluster.getService("HDFS").getServiceComponent("NAMENODE").getServiceComponentHosts();
+      assertEquals(2, namenodes.size());
+      
+      
+      // make unknown
+      ServiceComponentHost sch = null;
+      for (ServiceComponentHost tmp : cluster.getServiceComponentHosts("host2")) {
+        if (tmp.getServiceComponentName().equals("DATANODE")) {
+          tmp.setState(State.UNKNOWN);
+          sch = tmp;
+        }
+      }
+      assertNotNull(sch);
+  
+      // make maintenance
+      componentHostRequests.clear();
+      componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "DATANODE", "host2", null, "MAINTENANCE"));
+      amc.updateHostComponents(componentHostRequests, mapRequestProps, false);
+      assertEquals(State.MAINTENANCE, sch.getState ());
+      
+      // confirm delete
+      componentHostRequests.clear();
+      componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "DATANODE", "host2", null, null));
+      amc.deleteHostComponents(componentHostRequests);
+      
+      sch = null;
+      for (ServiceComponentHost tmp : cluster.getServiceComponentHosts("host2")) {
+        if (tmp.getServiceComponentName().equals("DATANODE")) {
+          sch = tmp;
+        }
+      }
+      assertNull(sch);
     
-    namenodes = cluster.getService("HDFS").getServiceComponent("NAMENODE").getServiceComponentHosts();
-    assertEquals(1, namenodes.size());
-    Map<String, ServiceComponentHost> datanodes = cluster.getService("HDFS").getServiceComponent("DATANODE").getServiceComponentHosts();
-    assertEquals(3, datanodes.size());
-    Map<String, ServiceComponentHost> namenodes2 = cluster.getService("HDFS").getServiceComponent("SECONDARY_NAMENODE").getServiceComponentHosts();
-    assertEquals(1, namenodes2.size());    
+      /*
+      *Test remove service
+      */
+      serviceRequests.clear();
+      serviceRequests.add(new ServiceRequest("c1", "HDFS", null, "INSTALLED"));
+      amc.updateServices(serviceRequests, mapRequestProps, true, false);
+      serviceRequests.clear();
+      serviceRequests.add(new ServiceRequest("c1", null, null, null));
+      assertEquals(1, amc.getServices(serviceRequests).size());
+      serviceRequests.clear();
+      serviceRequests.add(new ServiceRequest("c1", "HDFS", null, null));
+      amc.deleteServices(serviceRequests);
+      serviceRequests.clear();
+      serviceRequests.add(new ServiceRequest("c1", null, null, null));     
+      assertEquals(0, amc.getServices(serviceRequests).size());
+      
+      /*
+      *Test add service again
+      */
+      serviceRequests.clear();
+      serviceRequests.add(new ServiceRequest("c1", "HDFS", null, null));
+      amc.createServices(serviceRequests);
+      assertEquals(1, amc.getServices(serviceRequests).size());
+      //Create new configs
+      configurationRequest = new ConfigurationRequest("c1", "core-site", "version2",
+          gson.<Map<String, String>>fromJson("{ \"fs.default.name\" : \"localhost:8020\"}", confType)
+      );
+      amc.createConfiguration(configurationRequest);
+      configurationRequest = new ConfigurationRequest("c1", "hdfs-site", "version2",
+          gson.<Map<String, String>>fromJson("{ \"dfs.datanode.data.dir.perm\" : \"750\"}", confType)
+      );
+      amc.createConfiguration(configurationRequest);
+      configurationRequest = new ConfigurationRequest("c1", "global", "version2",
+          gson.<Map<String, String>>fromJson("{ \"hbase_hdfs_root_dir\" : \"/apps/hbase/\"}", confType)
+      );
+      amc.createConfiguration(configurationRequest);    
+      //Add configs to service
+      serviceRequests.clear();
+      serviceRequests.add(new ServiceRequest("c1", "HDFS",
+          gson.<Map<String, String>>fromJson("{\"core-site\": \"version2\", \"hdfs-site\": \"version2\", \"global\" : \"version2\" }", confType)
+          , null));
+      amc.updateServices(serviceRequests, mapRequestProps, true, false);
+      //Crate service components
+      serviceComponentRequests = new HashSet<ServiceComponentRequest>();
+      serviceComponentRequests.add(new ServiceComponentRequest("c1", "HDFS", "NAMENODE", null, null));
+      serviceComponentRequests.add(new ServiceComponentRequest("c1", "HDFS", "SECONDARY_NAMENODE", null, null));
+      serviceComponentRequests.add(new ServiceComponentRequest("c1", "HDFS", "DATANODE", null, null));
+      serviceComponentRequests.add(new ServiceComponentRequest("c1", "HDFS", "HDFS_CLIENT", null, null));
+      amc.createComponents(serviceComponentRequests);
+      
+      //Create ServiceComponentHosts
+      componentHostRequests = new HashSet<ServiceComponentHostRequest>();
+      componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "DATANODE", "host1", null, null));
+      componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "NAMENODE", "host1", null, null));
+      componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "SECONDARY_NAMENODE", "host1", null, null));
+      componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "DATANODE", "host2", null, null));
+      componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "DATANODE", "host3", null, null));
+      amc.createHostComponents(componentHostRequests);    
+  
+      
+      namenodes = cluster.getService("HDFS").getServiceComponent("NAMENODE").getServiceComponentHosts();
+      assertEquals(1, namenodes.size());
+      Map<String, ServiceComponentHost> datanodes = cluster.getService("HDFS").getServiceComponent("DATANODE").getServiceComponentHosts();
+      assertEquals(3, datanodes.size());
+      Map<String, ServiceComponentHost> namenodes2 = cluster.getService("HDFS").getServiceComponent("SECONDARY_NAMENODE").getServiceComponentHosts();
+      assertEquals(1, namenodes2.size());
+    } finally {
+      injector.getInstance(PersistService.class).stop();
+    }    
   }
 
   private void testRunSmokeTestFlag(Map<String, String> mapRequestProps,
@@ -1821,5 +1854,146 @@ public class AmbariManagementControllerImplTest {
     assertTrue(smokeTestRequired);
   }
 
+
+  @Test
+  public void testScheduleSmokeTest() throws Exception {
+
+    final String HOST1 = "host1";
+    final String OS_TYPE = "centos5";
+    final String STACK_ID = "HDP-2.0.3";
+    final String CLUSTER_NAME = "c1";
+    final String HDFS_SERVICE_CHECK_ROLE = "HDFS_SERVICE_CHECK";
+    final String MAPREDUCE2_SERVICE_CHECK_ROLE = "MAPREDUCE2_SERVICE_CHECK";
+    final String YARN_SERVICE_CHECK_ROLE = "YARN_SERVICE_CHECK";
+
+    Map<String,String> mapRequestProps = Collections.<String,String>emptyMap();
+    Injector injector = Guice.createInjector(new AbstractModule() {
+      @Override
+      protected void configure() {
+        Properties properties = new Properties();
+        properties.setProperty(Configuration.SERVER_PERSISTENCE_TYPE_KEY, "in-memory");
+
+        properties.setProperty(Configuration.METADETA_DIR_PATH,
+            "src/main/resources/stacks");
+        properties.setProperty(Configuration.SERVER_VERSION_FILE,
+                "../version");
+        properties.setProperty(Configuration.OS_VERSION_KEY, OS_TYPE);
+        try {
+          install(new ControllerModule(properties));
+        } catch (Exception e) {
+          throw new RuntimeException(e);
+        }
+      }
+    });
+    injector.getInstance(GuiceJpaInitializer.class);
+    
+    try {
+      AmbariManagementController amc = injector.getInstance(AmbariManagementController.class);
+      Clusters clusters = injector.getInstance(Clusters.class);
+  
+      clusters.addHost(HOST1);
+      Host host = clusters.getHost(HOST1);
+      host.setOsType(OS_TYPE);
+      host.persist();
+  
+      ClusterRequest clusterRequest = new ClusterRequest(null, CLUSTER_NAME, STACK_ID, null);
+      amc.createCluster(clusterRequest);
+  
+      Set<ServiceRequest> serviceRequests = new HashSet<ServiceRequest>();
+      serviceRequests.add(new ServiceRequest(CLUSTER_NAME, "HDFS", null, null));
+      serviceRequests.add(new ServiceRequest(CLUSTER_NAME, "MAPREDUCE2", null, null));
+      serviceRequests.add(new ServiceRequest(CLUSTER_NAME, "YARN", null, null));
+  
+      amc.createServices(serviceRequests);
+  
+      Set<ServiceComponentRequest> serviceComponentRequests = new HashSet<ServiceComponentRequest>();
+      serviceComponentRequests.add(new ServiceComponentRequest(CLUSTER_NAME, "HDFS", "NAMENODE", null, null));
+      serviceComponentRequests.add(new ServiceComponentRequest(CLUSTER_NAME, "HDFS", "SECONDARY_NAMENODE", null, null));
+      serviceComponentRequests.add(new ServiceComponentRequest(CLUSTER_NAME, "HDFS", "DATANODE", null, null));
+      serviceComponentRequests.add(new ServiceComponentRequest(CLUSTER_NAME, "MAPREDUCE2", "HISTORYSERVER", null, null));
+      serviceComponentRequests.add(new ServiceComponentRequest(CLUSTER_NAME, "YARN", "RESOURCEMANAGER", null, null));
+      serviceComponentRequests.add(new ServiceComponentRequest(CLUSTER_NAME, "YARN", "NODEMANAGER", null, null));
+  
+      amc.createComponents(serviceComponentRequests);
+  
+      Set<HostRequest> hostRequests = new HashSet<HostRequest>();
+      hostRequests.add(new HostRequest(HOST1, CLUSTER_NAME, null));
+  
+      amc.createHosts(hostRequests);
+  
+      Set<ServiceComponentHostRequest> componentHostRequests = new HashSet<ServiceComponentHostRequest>();
+      componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME, null, "DATANODE", HOST1, null, null));
+      componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME, null, "NAMENODE", HOST1, null, null));
+      componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME, null, "SECONDARY_NAMENODE", HOST1, null, null));
+      componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME, null, "HISTORYSERVER", HOST1, null, null));
+      componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME, null, "RESOURCEMANAGER", HOST1, null, null));
+      componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME, null, "NODEMANAGER", HOST1, null, null));
+  
+      amc.createHostComponents(componentHostRequests);
+  
+      //Install services
+      serviceRequests.clear();
+      serviceRequests.add(new ServiceRequest(CLUSTER_NAME, "HDFS", null, State.INSTALLED.name()));
+      serviceRequests.add(new ServiceRequest(CLUSTER_NAME, "MAPREDUCE2", null, State.INSTALLED.name()));
+      serviceRequests.add(new ServiceRequest(CLUSTER_NAME, "YARN", null, State.INSTALLED.name()));
+  
+      amc.updateServices(serviceRequests, mapRequestProps, true, false);
+  
+      Cluster cluster = clusters.getCluster(CLUSTER_NAME);
+  
+      for (String serviceName : cluster.getServices().keySet() ) {
+  
+        for(String componentName: cluster.getService(serviceName).getServiceComponents().keySet()) {
+  
+          Map<String, ServiceComponentHost> serviceComponentHosts = cluster.getService(serviceName).getServiceComponent(componentName).getServiceComponentHosts();
+  
+          for (Map.Entry<String, ServiceComponentHost> entry : serviceComponentHosts.entrySet()) {
+            ServiceComponentHost cHost = entry.getValue();
+            cHost.handleEvent(new ServiceComponentHostInstallEvent(cHost.getServiceComponentName(), cHost.getHostName(), System.currentTimeMillis(), STACK_ID));
+            cHost.handleEvent(new ServiceComponentHostOpSucceededEvent(cHost.getServiceComponentName(), cHost.getHostName(), System.currentTimeMillis()));
+          }
+        }
+      }
+  
+      //Start services
+      serviceRequests.clear();
+      serviceRequests.add(new ServiceRequest(CLUSTER_NAME, "HDFS", null, State.STARTED.name()));
+      serviceRequests.add(new ServiceRequest(CLUSTER_NAME, "MAPREDUCE2", null, State.STARTED.name()));
+      serviceRequests.add(new ServiceRequest(CLUSTER_NAME, "YARN", null, State.STARTED.name()));
+  
+      RequestStatusResponse response = amc.updateServices(serviceRequests,
+        mapRequestProps, true, false);
+  
+      Collection<?> hdfsSmokeTasks = CollectionUtils.select(response.getTasks(), new RolePredicate(HDFS_SERVICE_CHECK_ROLE));
+      //Ensure that smoke test task was created for HDFS
+      assertEquals(1, hdfsSmokeTasks.size());
+  
+      Collection<?> mapreduce2SmokeTasks = CollectionUtils.select(response.getTasks(), new RolePredicate(MAPREDUCE2_SERVICE_CHECK_ROLE));
+      //Ensure that smoke test task was created for MAPREDUCE2
+      assertEquals(1, mapreduce2SmokeTasks.size());
+  
+      Collection<?> yarnSmokeTasks = CollectionUtils.select(response.getTasks(), new RolePredicate(YARN_SERVICE_CHECK_ROLE));
+      //Ensure that smoke test task was created for YARN
+      assertEquals(1, yarnSmokeTasks.size());
+    } finally {
+      injector.getInstance(PersistService.class).stop();
+    }
+  }
+
+  private class RolePredicate implements Predicate {
+
+    private String role;
+
+    public RolePredicate(String role) {
+      this.role = role;
+    }
+
+    @Override
+    public boolean evaluate(Object obj) {
+      ShortTaskStatus task = (ShortTaskStatus)obj;
+      return task.getRole().equals(role);
+    }
+  }
+
   //todo other resources
 }

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
index 1b26fb1..7ab7d0b 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
@@ -36,6 +36,9 @@ import java.util.Set;
 
 import javax.persistence.EntityManager;
 
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.persist.PersistService;
 import junit.framework.Assert;
 
 import org.apache.ambari.server.AmbariException;
@@ -92,10 +95,6 @@ import org.junit.rules.ExpectedException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
-
 public class AmbariManagementControllerTest {
 
   private static final Logger LOG =
@@ -108,7 +107,7 @@ public class AmbariManagementControllerTest {
   private static final String REPO_ID = "HDP-1.1.1.16";
   private static final String PROPERTY_NAME = "hbase.regionserver.msginterval";
   private static final String SERVICE_NAME = "HDFS";
-  private static final int STACK_VERSIONS_CNT = 5;
+  private static final int STACK_VERSIONS_CNT = 6;
   private static final int REPOS_CNT = 3;
   private static final int STACKS_CNT = 1;
   private static final int STACK_SERVICES_CNT = 5 ;
@@ -2655,6 +2654,20 @@ public class AmbariManagementControllerTest {
     Assert.assertNull(stage1.getExecutionCommandWrapper(host2, "DATANODE"));
     Assert.assertNotNull(stage3.getExecutionCommandWrapper(host1, "HBASE_SERVICE_CHECK"));
     Assert.assertNotNull(stage2.getExecutionCommandWrapper(host2, "HDFS_SERVICE_CHECK"));
+    
+    for (Stage s : stages) {
+      for (List<ExecutionCommandWrapper> list : s.getExecutionCommands().values()) {
+        for (ExecutionCommandWrapper ecw : list) {
+          if (ecw.getExecutionCommand().getRole().name().contains("SERVICE_CHECK")) {
+            Map<String, String> hostParams = ecw.getExecutionCommand().getHostLevelParams();
+            Assert.assertNotNull(hostParams);
+            Assert.assertTrue(hostParams.size() > 0);
+            Assert.assertTrue(hostParams.containsKey("stack_version"));
+            Assert.assertEquals(hostParams.get("stack_version"), c1.getDesiredStackVersion().getStackVersion());
+          }
+        }
+      }
+    }
 
     // manually set live state
     sch1.setState(State.STARTED);

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProviderTest.java
index f0ceeb0..7fbb1a2 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProviderTest.java
@@ -23,6 +23,7 @@ import org.apache.ambari.server.controller.spi.Request;
 import org.apache.ambari.server.controller.spi.Resource;
 import org.apache.ambari.server.controller.spi.TemporalInfo;
 import org.apache.ambari.server.controller.utilities.PropertyHelper;
+import org.apache.ambari.server.controller.utilities.PropertyHelper.MetricsVersion;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -54,7 +55,7 @@ public class GangliaPropertyProviderTest {
     TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
 
     GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider(
-        PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent),
+        PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent, PropertyHelper.MetricsVersion.HDP1),
         streamProvider,
         hostProvider,
         CLUSTER_NAME_PROPERTY_ID,
@@ -127,7 +128,7 @@ public class GangliaPropertyProviderTest {
     TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
 
     GangliaPropertyProvider propertyProvider = new GangliaHostPropertyProvider(
-        PropertyHelper.getGangliaPropertyIds(Resource.Type.Host),
+        PropertyHelper.getGangliaPropertyIds(Resource.Type.Host, PropertyHelper.MetricsVersion.HDP1),
         streamProvider,
         hostProvider,
         CLUSTER_NAME_PROPERTY_ID,
@@ -170,7 +171,7 @@ public class GangliaPropertyProviderTest {
     TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
 
     GangliaPropertyProvider propertyProvider = new GangliaHostPropertyProvider(
-        PropertyHelper.getGangliaPropertyIds(Resource.Type.Host),
+        PropertyHelper.getGangliaPropertyIds(Resource.Type.Host, PropertyHelper.MetricsVersion.HDP1),
         streamProvider,
         hostProvider,
         CLUSTER_NAME_PROPERTY_ID,
@@ -204,7 +205,7 @@ public class GangliaPropertyProviderTest {
     TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
 
     GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider(
-        PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent),
+        PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent, MetricsVersion.HDP1),
         streamProvider,
         hostProvider,
         CLUSTER_NAME_PROPERTY_ID,
@@ -237,7 +238,7 @@ public class GangliaPropertyProviderTest {
     TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
 
     GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider(
-        PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent),
+        PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent, MetricsVersion.HDP1),
         streamProvider,
         hostProvider,
         CLUSTER_NAME_PROPERTY_ID,
@@ -275,7 +276,7 @@ public class GangliaPropertyProviderTest {
     TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
 
     GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider(
-        PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent),
+        PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent, MetricsVersion.HDP1),
         streamProvider,
         hostProvider,
         CLUSTER_NAME_PROPERTY_ID,
@@ -306,7 +307,7 @@ public class GangliaPropertyProviderTest {
     TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
 
     GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider(
-        PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent),
+        PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent, MetricsVersion.HDP1),
         streamProvider,
         hostProvider,
         CLUSTER_NAME_PROPERTY_ID,
@@ -339,7 +340,7 @@ public class GangliaPropertyProviderTest {
     TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
 
     GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider(
-        PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent),
+        PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent, MetricsVersion.HDP1),
         streamProvider,
         hostProvider,
         CLUSTER_NAME_PROPERTY_ID,
@@ -372,7 +373,7 @@ public class GangliaPropertyProviderTest {
     TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
 
     GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider(
-        PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent),
+        PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent, MetricsVersion.HDP1),
         streamProvider,
         hostProvider,
         CLUSTER_NAME_PROPERTY_ID,
@@ -405,7 +406,7 @@ public class GangliaPropertyProviderTest {
     TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
 
     GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider(
-        PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent),
+        PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent, MetricsVersion.HDP1),
         streamProvider,
         hostProvider,
         CLUSTER_NAME_PROPERTY_ID,

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaReportPropertyProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaReportPropertyProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaReportPropertyProviderTest.java
index d8642fc..358e0a5 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaReportPropertyProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaReportPropertyProviderTest.java
@@ -45,7 +45,7 @@ public class GangliaReportPropertyProviderTest {
     TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
 
     GangliaReportPropertyProvider propertyProvider = new GangliaReportPropertyProvider(
-        PropertyHelper.getGangliaPropertyIds(Resource.Type.Cluster),
+        PropertyHelper.getGangliaPropertyIds(Resource.Type.Cluster, PropertyHelper.MetricsVersion.HDP1),
         streamProvider,
         hostProvider,
         CLUSTER_NAME_PROPERTY_ID);

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractPropertyProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractPropertyProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractPropertyProviderTest.java
index 5d4d42b..499a920 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractPropertyProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractPropertyProviderTest.java
@@ -37,14 +37,14 @@ public class AbstractPropertyProviderTest {
 
   @Test
   public void testGetComponentMetrics() {
-    Map<String, Map<String, PropertyInfo>> componentMetrics = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent);
+    Map<String, Map<String, PropertyInfo>> componentMetrics = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent, PropertyHelper.MetricsVersion.HDP1);
     AbstractPropertyProvider provider = new TestPropertyProvider(componentMetrics);
     Assert.assertEquals(componentMetrics, provider.getComponentMetrics());
   }
 
   @Test
   public void testGetPropertyInfoMap() {
-    AbstractPropertyProvider provider = new TestPropertyProvider(PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent));
+    AbstractPropertyProvider provider = new TestPropertyProvider(PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent, PropertyHelper.MetricsVersion.HDP1));
 
     // specific property
     Map<String, PropertyInfo> propertyInfoMap = provider.getPropertyInfoMap("NAMENODE", "metrics/cpu/cpu_aidle");

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/VersioningPropertyProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/VersioningPropertyProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/VersioningPropertyProviderTest.java
new file mode 100644
index 0000000..b881c41
--- /dev/null
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/VersioningPropertyProviderTest.java
@@ -0,0 +1,144 @@
+/**
+ * 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.
+ */
+
+package org.apache.ambari.server.controller.internal;
+
+import org.apache.ambari.server.controller.jmx.JMXPropertyProvider;
+import org.apache.ambari.server.controller.spi.Predicate;
+import org.apache.ambari.server.controller.spi.Request;
+import org.apache.ambari.server.controller.spi.Resource;
+import org.apache.ambari.server.controller.spi.SystemException;
+import org.apache.ambari.server.controller.utilities.PropertyHelper;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * VersioningPropertyProvider Tests
+ */
+public class VersioningPropertyProviderTest {
+  @Test
+  public void testPopulateResources() throws Exception {
+
+    Map<String, PropertyHelper.MetricsVersion> clusterVersionsMap =
+        new HashMap<String, PropertyHelper.MetricsVersion>();
+
+    clusterVersionsMap.put("c1", PropertyHelper.MetricsVersion.HDP1);
+    clusterVersionsMap.put("c2", PropertyHelper.MetricsVersion.HDP2);
+
+    Map<PropertyHelper.MetricsVersion, AbstractPropertyProvider> providers =
+        new HashMap<PropertyHelper.MetricsVersion, AbstractPropertyProvider>();
+
+    TestJMXPropertyProvider propertyProvider1 = new TestJMXPropertyProvider(
+        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent, PropertyHelper.MetricsVersion.HDP1),
+        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
+        PropertyHelper.getPropertyId("HostRoles", "host_name"),
+        PropertyHelper.getPropertyId("HostRoles", "component_name"),
+        PropertyHelper.getPropertyId("HostRoles", "state"),
+        Collections.singleton("STARTED"));
+    providers.put(PropertyHelper.MetricsVersion.HDP1, propertyProvider1);
+
+
+    TestJMXPropertyProvider propertyProvider2 = new TestJMXPropertyProvider(
+        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent, PropertyHelper.MetricsVersion.HDP2),
+        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
+        PropertyHelper.getPropertyId("HostRoles", "host_name"),
+        PropertyHelper.getPropertyId("HostRoles", "component_name"),
+        PropertyHelper.getPropertyId("HostRoles", "state"),
+        Collections.singleton("STARTED"));
+
+    providers.put(PropertyHelper.MetricsVersion.HDP2, propertyProvider2);
+
+
+    VersioningPropertyProvider provider = new VersioningPropertyProvider(clusterVersionsMap, providers, PropertyHelper.getPropertyId("HostRoles", "cluster_name"));
+
+
+    Request request = PropertyHelper.getReadRequest();
+
+    Resource resource1 = new ResourceImpl(Resource.Type.HostComponent);
+    resource1.setProperty(PropertyHelper.getPropertyId("HostRoles", "cluster_name"), "c1");
+
+
+    provider.populateResources(Collections.singleton(resource1), request, null);
+
+    Assert.assertEquals(resource1, propertyProvider1.getResource());
+    Assert.assertNull(propertyProvider2.getResource());
+
+    propertyProvider1.setResource(null);
+    propertyProvider2.setResource(null);
+
+    Resource resource2 = new ResourceImpl(Resource.Type.HostComponent);
+    resource2.setProperty(PropertyHelper.getPropertyId("HostRoles", "cluster_name"), "c2");
+
+    provider.populateResources(Collections.singleton(resource2), request, null);
+
+    Assert.assertNull(propertyProvider1.getResource());
+    Assert.assertEquals(resource2, propertyProvider2.getResource());
+
+    propertyProvider1.setResource(null);
+    propertyProvider2.setResource(null);
+
+    Set<Resource> resources = new HashSet<Resource>();
+    resources.add(resource1);
+    resources.add(resource2);
+
+    provider.populateResources(resources, request, null);
+
+    Assert.assertEquals(resource1, propertyProvider1.getResource());
+    Assert.assertEquals(resource2, propertyProvider2.getResource());
+  }
+
+  private class TestJMXPropertyProvider extends JMXPropertyProvider {
+
+    private Resource resource = null;
+
+
+    public TestJMXPropertyProvider(Map<String, Map<String, PropertyInfo>> componentMetrics,
+                                   String clusterNamePropertyId,
+                                   String hostNamePropertyId,
+                                   String componentNamePropertyId,
+                                   String statePropertyId,
+                                   Set<String> healthyStates) {
+
+      super(componentMetrics, null, null, clusterNamePropertyId, hostNamePropertyId,
+          componentNamePropertyId, statePropertyId, healthyStates);
+    }
+
+    public Resource getResource() {
+      return resource;
+    }
+
+    public void setResource(Resource resource) {
+      this.resource = resource;
+    }
+
+    @Override
+    public Set<Resource> populateResources(Set<Resource> resources, Request request, Predicate predicate) throws SystemException {
+
+      if (resources.size() == 1) {
+        resource = resources.iterator().next();
+      }
+      return resources;
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/JMXPropertyProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/JMXPropertyProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/JMXPropertyProviderTest.java
index 842078b..b2083db 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/JMXPropertyProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/JMXPropertyProviderTest.java
@@ -47,7 +47,7 @@ public class JMXPropertyProviderTest {
     TestJMXHostProvider hostProvider = new TestJMXHostProvider(false);
 
     JMXPropertyProvider propertyProvider = new JMXPropertyProvider(
-        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent),
+        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent, PropertyHelper.MetricsVersion.HDP1),
         streamProvider,
         hostProvider,
         PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
@@ -234,7 +234,7 @@ public class JMXPropertyProviderTest {
     TestJMXHostProvider hostProvider = new TestJMXHostProvider(true);
 
     JMXPropertyProvider propertyProvider = new JMXPropertyProvider(
-        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent),
+        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent, PropertyHelper.MetricsVersion.HDP1),
         streamProvider,
         hostProvider,
         PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
@@ -266,12 +266,49 @@ public class JMXPropertyProviderTest {
   }
 
   @Test
+  public void testPopulateResources_HDP2() throws Exception {
+    TestStreamProvider  streamProvider = new TestStreamProvider();
+    TestJMXHostProvider hostProvider = new TestJMXHostProvider(false);
+
+    JMXPropertyProvider propertyProvider = new JMXPropertyProvider(
+        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent, PropertyHelper.MetricsVersion.HDP2),
+        streamProvider,
+        hostProvider,
+        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
+        PropertyHelper.getPropertyId("HostRoles", "host_name"),
+        PropertyHelper.getPropertyId("HostRoles", "component_name"),
+        PropertyHelper.getPropertyId("HostRoles", "state"),
+        Collections.singleton("STARTED"));
+
+    // namenode
+    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
+
+    resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, "domu-12-31-39-0e-34-e1.compute-1.internal");
+    resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, "RESOURCEMANAGER");
+    resource.setProperty(HOST_COMPONENT_STATE_PROPERTY_ID, "STARTED");
+
+    // request with an empty set should get all supported properties
+    Request request = PropertyHelper.getReadRequest(Collections.<String>emptySet());
+
+    Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size());
+
+    Assert.assertEquals(propertyProvider.getSpec("domu-12-31-39-0e-34-e1.compute-1.internal", "8088"), streamProvider.getLastSpec());
+
+    // see test/resources/resourcemanager_jmx.json for values
+    Assert.assertEquals(6,  resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue", "AggregateContainersAllocated")));
+    Assert.assertEquals(6,  resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue", "AggregateContainersReleased")));
+    Assert.assertEquals(8192,  resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue", "AvailableMB")));
+    Assert.assertEquals(1,  resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue", "AvailableVCores")));
+    Assert.assertEquals(2,  resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue", "AppsSubmitted")));
+  }
+
+    @Test
   public void testPopulateResourcesUnhealthyResource() throws Exception {
     TestStreamProvider  streamProvider = new TestStreamProvider();
     TestJMXHostProvider hostProvider = new TestJMXHostProvider(true);
 
     JMXPropertyProvider propertyProvider = new JMXPropertyProvider(
-        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent),
+        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent, PropertyHelper.MetricsVersion.HDP1),
         streamProvider,
         hostProvider,
         PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
@@ -304,7 +341,7 @@ public class JMXPropertyProviderTest {
     Set<Resource> resources = new HashSet<Resource>();
 
     JMXPropertyProvider propertyProvider = new JMXPropertyProvider(
-        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent),
+        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent, PropertyHelper.MetricsVersion.HDP1),
         streamProvider,
         hostProvider,
         PropertyHelper.getPropertyId("HostRoles", "cluster_name"),

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/TestStreamProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/TestStreamProvider.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/TestStreamProvider.java
index e99caff..a05ddcc 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/TestStreamProvider.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/TestStreamProvider.java
@@ -35,6 +35,7 @@ public class TestStreamProvider implements StreamProvider {
     FILE_MAPPING.put("50030", "mapreduce_jobtracker_jmx.json");
     FILE_MAPPING.put("50060", "mapreduce_tasktracker_jmx.json");
     FILE_MAPPING.put("60010", "hbase_hbasemaster_jmx.json");
+    FILE_MAPPING.put("8088",  "resourcemanager_jmx.json");
   }
 
   /**
@@ -75,7 +76,9 @@ public class TestStreamProvider implements StreamProvider {
   }
 
   private String getPort(String spec) {
-    int n = spec.indexOf(":", 5);
-    return spec.substring(n + 1, n + 6);
+    int colonIndex = spec.indexOf(":", 5);
+    int slashIndex = spec.indexOf("/", colonIndex);
+
+    return spec.substring(colonIndex + 1, slashIndex);
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/PropertyHelperTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/PropertyHelperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/PropertyHelperTest.java
index 8217f88..8879268 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/PropertyHelperTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/PropertyHelperTest.java
@@ -17,9 +17,13 @@
  */
 package org.apache.ambari.server.controller.utilities;
 
+import org.apache.ambari.server.controller.internal.PropertyInfo;
+import org.apache.ambari.server.controller.spi.Resource;
 import org.junit.Assert;
 import org.junit.Test;
 
+import java.util.Map;
+
 
 /**
  * Property helper tests.
@@ -40,5 +44,29 @@ public class PropertyHelperTest {
     Assert.assertEquals("cat/sub/foo", PropertyHelper.getPropertyId("cat/sub", "foo"));
     Assert.assertEquals("cat/sub/foo", PropertyHelper.getPropertyId("cat/sub", "foo/"));
   }
+
+  @Test
+  public void testGetJMXPropertyIds() {
+
+    //version 1
+    Map<String, Map<String, PropertyInfo>> metrics = PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent, PropertyHelper.MetricsVersion.HDP1);
+    Map<String, PropertyInfo> componentMetrics = metrics.get("HISTORYSERVER");
+    Assert.assertNull(componentMetrics);
+    componentMetrics = metrics.get("NAMENODE");
+    Assert.assertNotNull(componentMetrics);
+    PropertyInfo info = componentMetrics.get("metrics/jvm/memHeapUsedM");
+    Assert.assertNotNull(info);
+    Assert.assertEquals("Hadoop:service=NameNode,name=jvm.memHeapUsedM", info.getPropertyId());
+
+    //version 2
+    metrics = PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent, PropertyHelper.MetricsVersion.HDP2);
+    componentMetrics = metrics.get("HISTORYSERVER");
+    Assert.assertNotNull(componentMetrics);
+    componentMetrics = metrics.get("NAMENODE");
+    Assert.assertNotNull(componentMetrics);
+    info = componentMetrics.get("metrics/jvm/memHeapUsedM");
+    Assert.assertNotNull(info);
+    Assert.assertEquals("Hadoop:service=NameNode,name=JvmMetrics.MemHeapUsedM", info.getPropertyId());
+  }
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/java/org/apache/ambari/server/metadata/RoleGraphTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/metadata/RoleGraphTest.java b/ambari-server/src/test/java/org/apache/ambari/server/metadata/RoleGraphTest.java
index 15e27ad..01137d2 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/metadata/RoleGraphTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/metadata/RoleGraphTest.java
@@ -189,5 +189,15 @@ public class RoleGraphTest {
     RoleGraphNode hdfs_service_check = new RoleGraphNode(Role.HDFS_SERVICE_CHECK, RoleCommand.EXECUTE);
     RoleGraphNode snamenode_start = new RoleGraphNode(Role.SECONDARY_NAMENODE, RoleCommand.START);
     Assert.assertEquals(-1, rco.order(snamenode_start, hdfs_service_check));
+    
+    RoleGraphNode mapred2_service_check = new RoleGraphNode(Role.MAPREDUCE2_SERVICE_CHECK, RoleCommand.EXECUTE);
+    RoleGraphNode rm_start = new RoleGraphNode(Role.RESOURCEMANAGER, RoleCommand.START);
+    RoleGraphNode nm_start = new RoleGraphNode(Role.NODEMANAGER, RoleCommand.START);
+    RoleGraphNode hs_start = new RoleGraphNode(Role.HISTORYSERVER, RoleCommand.START);
+    Assert.assertEquals(-1, rco.order(rm_start, mapred2_service_check));
+    Assert.assertEquals(-1, rco.order(nm_start, mapred2_service_check)); 
+    Assert.assertEquals(-1, rco.order(hs_start, mapred2_service_check));
+    Assert.assertEquals(-1, rco.order(hs_start, mapred2_service_check));
+    Assert.assertEquals(1, rco.order(nm_start, rm_start));
   }
 }


[14/14] git commit: AMBARI-2677. Merge from branch-1.4.0 (ncole)

Posted by nc...@apache.org.
AMBARI-2677. Merge from branch-1.4.0 (ncole)


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

Branch: refs/heads/trunk
Commit: a718fc45dbf958c7be7158fe498d4ff76dd5feae
Parents: a1322ce
Author: Nate Cole <nc...@hortonworks.com>
Authored: Wed Jul 17 16:26:08 2013 -0400
Committer: Nate Cole <nc...@hortonworks.com>
Committed: Fri Jul 19 08:24:09 2013 -0400

----------------------------------------------------------------------
 .../hdp-hadoop/manifests/hdfs/directory.pp      |     6 +-
 .../puppet/modules/hdp-hadoop/manifests/init.pp |    44 +-
 .../modules/hdp-hadoop/manifests/namenode.pp    |    19 +-
 .../modules/hdp-hadoop/manifests/params.pp      |     4 +-
 .../hdp-hadoop/templates/include_hosts_list.erb |     3 +
 .../puppet/modules/hdp-hbase/manifests/init.pp  |    25 +-
 .../modules/hdp-hbase/manifests/params.pp       |     2 +-
 .../hdp-hive/manifests/jdbc-connector.pp        |    11 +-
 .../templates/hadoop-services.cfg.erb           |    14 +-
 .../modules/hdp-oozie/files/oozieSmoke2.sh      |    98 +
 .../hdp-oozie/manifests/oozie/service_check.pp  |    25 +-
 .../modules/hdp-oozie/manifests/params.pp       |     2 -
 .../modules/hdp-oozie/manifests/service.pp      |    45 +-
 .../modules/hdp-templeton/manifests/server.pp   |    22 +-
 .../files/validateYarnComponentStatus.py        |    87 +-
 .../manifests/historyserver/service_check.pp    |     2 +-
 .../hdp-yarn/manifests/mapred2/service_check.pp |    69 +
 .../modules/hdp-yarn/manifests/nodemanager.pp   |    14 +-
 .../puppet/modules/hdp-yarn/manifests/params.pp |    16 +-
 .../manifests/resourcemanager/service_check.pp  |     2 +-
 .../modules/hdp-yarn/manifests/service.pp       |     3 +-
 .../modules/hdp-yarn/manifests/smoketest.pp     |    13 +-
 .../hdp-yarn/manifests/yarn/service_check.pp    |    37 +
 .../functions/hdp_get_major_stack_version.rb    |    28 +
 .../main/puppet/modules/hdp/manifests/init.pp   |     2 +-
 .../main/puppet/modules/hdp/manifests/params.pp |    16 +-
 .../main/python/ambari_agent/AmbariConfig.py    |     2 +
 .../src/main/python/ambari_agent/Controller.py  |     1 +
 ambari-server/docs/api/v1/index.md              |     1 -
 .../apache/ambari/eventdb/db/DBConnector.java   |    13 +-
 .../ambari/eventdb/db/PostgresConnector.java    |    75 +-
 .../org/apache/ambari/eventdb/model/Apps.java   |   193 +
 .../ambari/eventdb/model/WorkflowContext.java   |     9 +
 .../apache/ambari/eventdb/model/Workflows.java  |    12 +-
 .../eventdb/webservice/WorkflowJsonService.java |    54 +-
 .../java/org/apache/ambari/server/Role.java     |     2 +
 .../ambari/server/agent/HeartbeatMonitor.java   |    19 +-
 .../AmbariManagementControllerImpl.java         |    10 +-
 .../internal/AbstractProviderModule.java        |   183 +-
 .../internal/ClusterControllerImpl.java         |    22 +-
 .../internal/VersioningPropertyProvider.java    |   107 +
 .../controller/utilities/PredicateBuilder.java  |   378 +-
 .../controller/utilities/PropertyHelper.java    |    33 +-
 .../ambari/server/metadata/ActionMetadata.java  |     6 +
 .../server/metadata/RoleCommandOrder.java       |    12 +
 .../resources/Ambari-DDL-Postgres-CREATE.sql    |    17 +-
 .../src/main/resources/ganglia_properties.json  |   126 +-
 .../main/resources/ganglia_properties_2.json    | 21535 +++++++++++++++++
 .../src/main/resources/jmx_properties_2.json    |  8039 ++++++
 .../resources/stacks/HDP/2.0.1/metainfo.xml     |    22 -
 .../stacks/HDP/2.0.1/repos/repoinfo.xml         |    75 -
 .../HDP/2.0.1/services/GANGLIA/metainfo.xml     |    36 -
 .../HBASE/configuration/hbase-policy.xml        |    53 -
 .../services/HBASE/configuration/hbase-site.xml |   350 -
 .../HDP/2.0.1/services/HBASE/metainfo.xml       |    40 -
 .../HDP/2.0.1/services/HCATALOG/metainfo.xml    |    30 -
 .../services/HDFS/configuration/core-site.xml   |   257 -
 .../services/HDFS/configuration/global.xml      |   207 -
 .../HDFS/configuration/hadoop-policy.xml        |   134 -
 .../services/HDFS/configuration/hdfs-site.xml   |   438 -
 .../stacks/HDP/2.0.1/services/HDFS/metainfo.xml |    46 -
 .../services/HIVE/configuration/hive-site.xml   |   138 -
 .../stacks/HDP/2.0.1/services/HIVE/metainfo.xml |    43 -
 .../configuration/container-executor.cfg        |    20 -
 .../MAPREDUCE2/configuration/core-site.xml      |    20 -
 .../configuration/mapred-queue-acls.xml         |    39 -
 .../MAPREDUCE2/configuration/mapred-site.xml    |   549 -
 .../HDP/2.0.1/services/MAPREDUCE2/metainfo.xml  |    32 -
 .../HDP/2.0.1/services/NAGIOS/metainfo.xml      |    30 -
 .../services/OOZIE/configuration/oozie-site.xml |   245 -
 .../HDP/2.0.1/services/OOZIE/metainfo.xml       |    35 -
 .../services/PIG/configuration/pig.properties   |    52 -
 .../stacks/HDP/2.0.1/services/PIG/metainfo.xml  |    30 -
 .../stacks/HDP/2.0.1/services/TEZ/metainfo.xml  |    30 -
 .../WEBHCAT/configuration/webhcat-site.xml      |   126 -
 .../HDP/2.0.1/services/WEBHCAT/metainfo.xml     |    31 -
 .../YARN/configuration/capacity-scheduler.xml   |   120 -
 .../YARN/configuration/container-executor.cfg   |    20 -
 .../services/YARN/configuration/core-site.xml   |    20 -
 .../services/YARN/configuration/yarn-site.xml   |   172 -
 .../stacks/HDP/2.0.1/services/YARN/metainfo.xml |    36 -
 .../HDP/2.0.1/services/ZOOKEEPER/metainfo.xml   |    35 -
 .../resources/stacks/HDP/2.0.3/metainfo.xml     |    22 +
 .../stacks/HDP/2.0.3/repos/repoinfo.xml         |    99 +
 .../HDP/2.0.3/services/GANGLIA/metainfo.xml     |    36 +
 .../HDP/2.0.3/services/HCATALOG/metainfo.xml    |    30 +
 .../services/HDFS/configuration/core-site.xml   |   257 +
 .../services/HDFS/configuration/global.xml      |   192 +
 .../HDFS/configuration/hadoop-policy.xml        |   134 +
 .../services/HDFS/configuration/hdfs-site.xml   |   459 +
 .../stacks/HDP/2.0.3/services/HDFS/metainfo.xml |    46 +
 .../services/HIVE/configuration/hive-site.xml   |   253 +
 .../stacks/HDP/2.0.3/services/HIVE/metainfo.xml |    43 +
 .../configuration/container-executor.cfg        |    20 +
 .../MAPREDUCE2/configuration/core-site.xml      |    20 +
 .../MAPREDUCE2/configuration/global.xml         |    44 +
 .../configuration/mapred-queue-acls.xml         |    39 +
 .../MAPREDUCE2/configuration/mapred-site.xml    |   300 +
 .../HDP/2.0.3/services/MAPREDUCE2/metainfo.xml  |    32 +
 .../HDP/2.0.3/services/NAGIOS/metainfo.xml      |    30 +
 .../services/OOZIE/configuration/oozie-site.xml |   245 +
 .../HDP/2.0.3/services/OOZIE/metainfo.xml       |    35 +
 .../services/PIG/configuration/pig.properties   |    52 +
 .../stacks/HDP/2.0.3/services/PIG/metainfo.xml  |    30 +
 .../stacks/HDP/2.0.3/services/TEZ/metainfo.xml  |    30 +
 .../WEBHCAT/configuration/webhcat-site.xml      |   126 +
 .../HDP/2.0.3/services/WEBHCAT/metainfo.xml     |    31 +
 .../YARN/configuration/capacity-scheduler.xml   |   120 +
 .../YARN/configuration/container-executor.cfg   |    20 +
 .../services/YARN/configuration/core-site.xml   |    20 +
 .../services/YARN/configuration/global.xml      |    49 +
 .../services/YARN/configuration/yarn-site.xml   |   196 +
 .../stacks/HDP/2.0.3/services/YARN/metainfo.xml |    36 +
 .../ddl/Ambari-DDL-Postgres-UPGRADE-1.3.0.sql   |    10 +-
 .../AmbariManagementControllerImplTest.java     |   744 +-
 .../AmbariManagementControllerTest.java         |    23 +-
 .../ganglia/GangliaPropertyProviderTest.java    |    21 +-
 .../GangliaReportPropertyProviderTest.java      |     2 +-
 .../internal/AbstractPropertyProviderTest.java  |     4 +-
 .../VersioningPropertyProviderTest.java         |   144 +
 .../controller/jmx/JMXPropertyProviderTest.java |    45 +-
 .../controller/jmx/TestStreamProvider.java      |     7 +-
 .../utilities/PropertyHelperTest.java           |    28 +
 .../ambari/server/metadata/RoleGraphTest.java   |    10 +
 ambari-server/src/test/resources/deploy_HDP2.sh |    27 +-
 .../src/test/resources/resourcemanager_jmx.json |   865 +
 .../resources/stacks/HDP/2.0.1/metainfo.xml     |    22 +
 .../stacks/HDP/2.0.1/repos/repoinfo.xml         |    75 +
 .../HDP/2.0.1/services/GANGLIA/metainfo.xml     |    36 +
 .../HBASE/configuration/hbase-policy.xml        |    53 +
 .../services/HBASE/configuration/hbase-site.xml |   350 +
 .../HDP/2.0.1/services/HBASE/metainfo.xml       |    40 +
 .../HDP/2.0.1/services/HCATALOG/metainfo.xml    |    30 +
 .../services/HDFS/configuration/core-site.xml   |   257 +
 .../services/HDFS/configuration/global.xml      |   192 +
 .../HDFS/configuration/hadoop-policy.xml        |   134 +
 .../services/HDFS/configuration/hdfs-site.xml   |   438 +
 .../stacks/HDP/2.0.1/services/HDFS/metainfo.xml |    46 +
 .../services/HIVE/configuration/hive-site.xml   |   138 +
 .../stacks/HDP/2.0.1/services/HIVE/metainfo.xml |    43 +
 .../configuration/container-executor.cfg        |    20 +
 .../MAPREDUCE2/configuration/core-site.xml      |    20 +
 .../MAPREDUCE2/configuration/global.xml         |    44 +
 .../configuration/mapred-queue-acls.xml         |    39 +
 .../MAPREDUCE2/configuration/mapred-site.xml    |   300 +
 .../HDP/2.0.1/services/MAPREDUCE2/metainfo.xml  |    32 +
 .../HDP/2.0.1/services/NAGIOS/metainfo.xml      |    30 +
 .../services/OOZIE/configuration/oozie-site.xml |   245 +
 .../HDP/2.0.1/services/OOZIE/metainfo.xml       |    35 +
 .../services/PIG/configuration/pig.properties   |    52 +
 .../stacks/HDP/2.0.1/services/PIG/metainfo.xml  |    30 +
 .../stacks/HDP/2.0.1/services/TEZ/metainfo.xml  |    30 +
 .../WEBHCAT/configuration/webhcat-site.xml      |   126 +
 .../HDP/2.0.1/services/WEBHCAT/metainfo.xml     |    31 +
 .../YARN/configuration/capacity-scheduler.xml   |   120 +
 .../YARN/configuration/container-executor.cfg   |    20 +
 .../services/YARN/configuration/core-site.xml   |    20 +
 .../services/YARN/configuration/global.xml      |    49 +
 .../services/YARN/configuration/yarn-site.xml   |   172 +
 .../stacks/HDP/2.0.1/services/YARN/metainfo.xml |    36 +
 .../HDP/2.0.1/services/ZOOKEEPER/metainfo.xml   |    35 +
 .../apps/apps/mapreduce_201301280808_0001.json  |    16 +
 .../apps/apps/mapreduce_201301280808_0003.json  |    15 +
 .../apps/apps/mapreduce_201301280808_0004.json  |    40 +
 ...ig_c1af4446-64d2-46fb-be69-6363e7ec89fe.json |    89 +
 ...ig_f9957a11-a902-4f01-ac53-9679ce3a4b13.json |    16 +
 .../data/apps/apps/yarn_1371140159837_0001.json |    18 +
 ambari-web/app/assets/data/apps/runs2.json      |   171 +
 .../assets/data/services/metrics/yarn/gc.json   |    16 +
 .../data/services/metrics/yarn/jvm_heap.json    |    19 +
 .../data/services/metrics/yarn/jvm_threads.json |    19 +
 .../assets/data/services/metrics/yarn/rpc.json  |    16 +
 ambari-web/app/assets/test/tests.js             |     4 +-
 ambari-web/app/classes/app_class.js             |    38 +
 ambari-web/app/classes/run_class.js             |     8 +-
 ambari-web/app/controllers.js                   |     3 +
 .../controllers/global/cluster_controller.js    |     4 +-
 .../app/controllers/global/update_controller.js |     4 +-
 .../controllers/main/apps/item_controller.js    |    32 +-
 .../app/controllers/main/apps_controller.js     |    79 +-
 .../app/controllers/main/charts/heatmap.js      |    13 +
 .../heatmap_metrics/heatmap_metric_yarn.js      |    63 +
 .../heatmap_metric_yarn_gctime.js               |    29 +
 .../heatmap_metric_yarn_memHeapUsed.js          |    29 +
 .../controllers/main/service/info/configs.js    |    17 +-
 .../app/controllers/wizard/step12_controller.js |    21 +-
 .../app/controllers/wizard/step14_controller.js |     6 +-
 .../app/controllers/wizard/step3_controller.js  |     9 +
 .../app/controllers/wizard/step6_controller.js  |     4 +-
 .../app/controllers/wizard/step8_controller.js  |    22 +-
 ambari-web/app/data/HDP2/config_mapping.js      |    26 +-
 ambari-web/app/data/HDP2/config_properties.js   |    65 +-
 ambari-web/app/data/HDP2/custom_configs.js      |   127 +
 ambari-web/app/data/custom_configs.js           |    31 +-
 ambari-web/app/data/secure_configs.js           |     8 +-
 ambari-web/app/data/secure_mapping.js           |    11 +-
 ambari-web/app/data/secure_properties.js        |     5 +-
 ambari-web/app/data/service_configs.js          |     6 +-
 ambari-web/app/initialize.js                    |     1 +
 ambari-web/app/mappers/apps_mapper.js           |    63 +
 ambari-web/app/mappers/runs_mapper.js           |     3 +-
 ambari-web/app/mappers/service_mapper.js        |   120 +-
 ambari-web/app/messages.js                      |    31 +-
 ambari-web/app/models.js                        |     4 +-
 ambari-web/app/models/apps.js                   |    42 +
 ambari-web/app/models/host_component.js         |     2 +
 ambari-web/app/models/job.js                    |    18 +-
 ambari-web/app/models/quick_links.js            |    48 +
 ambari-web/app/models/run.js                    |    22 +-
 ambari-web/app/models/service/mapreduce2.js     |    26 +
 ambari-web/app/models/service/yarn.js           |    45 +
 ambari-web/app/routes/main.js                   |    12 +-
 ambari-web/app/routes/reassign_master_routes.js |     2 +
 ambari-web/app/styles/application.less          |     4 +-
 ambari-web/app/styles/apps.less                 |   217 +-
 .../common/configs/capacity_scheduler.hbs       |    21 +-
 ambari-web/app/templates/main/apps.hbs          |     9 +-
 ambari-web/app/templates/main/apps/item/app.hbs |    64 +
 ambari-web/app/templates/main/apps/item/dag.hbs |    13 -
 ambari-web/app/templates/main/apps/list_row.hbs |     3 +-
 .../main/dashboard/service/mapreduce2.hbs       |     1 +
 .../templates/main/dashboard/service/yarn.hbs   |   122 +
 .../app/templates/main/service/info/summary.hbs |     3 +
 .../main/service/info/summary/mapreduce2.hbs    |     6 +
 ambari-web/app/templates/main/service/item.hbs  |     2 +-
 ambari-web/app/templates/wizard/step13.hbs      |     4 +-
 ambari-web/app/utils/ajax.js                    |    20 +
 ambari-web/app/utils/app_graph.js               |   441 +
 ambari-web/app/utils/config.js                  |    94 +-
 ambari-web/app/utils/date.js                    |    73 +-
 ambari-web/app/utils/helper.js                  |    14 +-
 ambari-web/app/views.js                         |    10 +
 .../app/views/common/chart/linear_time.js       |     5 +-
 .../app/views/common/configs/services_config.js |   148 +-
 .../app/views/common/quick_view_link_view.js    |     9 +
 ambari-web/app/views/common/table_view.js       |     2 +-
 ambari-web/app/views/main/apps/item/app_view.js |   136 +
 ambari-web/app/views/main/apps/item_view.js     |    42 +-
 ambari-web/app/views/main/apps_view.js          |    30 +-
 ambari-web/app/views/main/dashboard.js          |     4 +
 .../views/main/dashboard/service/mapreduce.js   |     2 +-
 .../app/views/main/dashboard/service/yarn.js    |   106 +
 ambari-web/app/views/main/menu.js               |     9 +-
 .../views/main/service/info/metrics/yarn/gc.js  |    56 +
 .../service/info/metrics/yarn/jobs_status.js    |    68 +
 .../main/service/info/metrics/yarn/jvm_heap.js  |    71 +
 .../service/info/metrics/yarn/jvm_threads.js    |    66 +
 .../main/service/info/metrics/yarn/map_slots.js |    59 +
 .../service/info/metrics/yarn/reduce_slots.js   |    59 +
 .../views/main/service/info/metrics/yarn/rpc.js |    56 +
 .../info/metrics/yarn/tasks_running_waiting.js  |    65 +
 .../app/views/main/service/info/summary.js      |    19 +
 ambari-web/app/views/main/service/menu.js       |     2 +-
 ambari-web/test/installer/step2_test.js         |     1 -
 ambari-web/test/installer/step5_test.js         |     4 -
 ambari-web/vendor/styles/cubism.css             |     2 +-
 .../src/addOns/nagios/scripts/nagios_alerts.php |     7 +
 257 files changed, 42064 insertions(+), 4908 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/hdfs/directory.pp
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/hdfs/directory.pp b/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/hdfs/directory.pp
index 7736d4e..33319e5 100644
--- a/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/hdfs/directory.pp
+++ b/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/hdfs/directory.pp
@@ -34,9 +34,9 @@ define hdp-hadoop::hdfs::directory(
   $try_sleep = 10
  
   if ($service_state == 'running') {
-  
-  
-    if $stack_version in ("2.0.1") {
+
+
+    if (hdp_get_major_stack_version($stack_version) >= 2) {
       $mkdir_cmd = "fs -mkdir -p ${name}"
     } else {
       $mkdir_cmd = "fs -mkdir ${name}"

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/init.pp
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/init.pp b/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/init.pp
index b3c08ee..504dbef 100644
--- a/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/init.pp
+++ b/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/init.pp
@@ -187,6 +187,30 @@ class hdp-hadoop::initialize()
     owner => $hdp-hadoop::params::mapred_user,
     group => $hdp::params::user_group
   }
+
+  if (hdp_get_major_stack_version($stack_version) >= 2) {
+    if (hdp_is_empty($configuration) == false and hdp_is_empty($configuration['hdfs-site']) == false) {
+      if (hdp_is_empty($configuration['hdfs-site']['dfs.hosts.exclude']) == false) {
+        $exlude_file_path = $configuration['hdfs-site']['dfs.hosts.exclude']
+        file { $exlude_file_path :
+        ensure => present,
+        owner => $hdp-hadoop::params::hdfs_user,
+        group => $hdp::params::user_group
+        }
+      }
+      if (hdp_is_empty($hdp::params::slave_hosts) == false and hdp_is_empty($configuration['hdfs-site']['dfs.hosts']) == false) {
+        $include_file_path = $configuration['hdfs-site']['dfs.hosts']
+        $include_hosts_list = $hdp::params::slave_hosts
+        file { $include_file_path :
+        ensure => present,
+        owner => $hdp-hadoop::params::hdfs_user,
+        group => $hdp::params::user_group,
+        content => template('hdp-hadoop/include_hosts_list.erb')
+        }
+      }
+    }
+  }
+
 }
 
 class hdp-hadoop(
@@ -196,7 +220,8 @@ class hdp-hadoop(
   include hdp-hadoop::params
   $hadoop_config_dir = $hdp-hadoop::params::conf_dir
   $mapred_user = $hdp-hadoop::params::mapred_user  
-  $hdfs_user = $hdp-hadoop::params::hdfs_user  
+  $hdfs_user = $hdp-hadoop::params::hdfs_user
+  $hadoop_tmp_dir = $hdp-hadoop::params::hadoop_tmp_dir
 
   anchor{'hdp-hadoop::begin':} 
   anchor{'hdp-hadoop::end':} 
@@ -298,9 +323,24 @@ class hdp-hadoop(
       }
     }
 
-    Anchor['hdp-hadoop::begin'] -> Hdp-hadoop::Package<||> ->  Hdp::User<|title == 'hdfs_user' or title == 'mapred_user'|>  ->
+    if (hdp_get_major_stack_version($stack_version) >= 2) {
+      hdp::directory_recursive_create { "$hadoop_tmp_dir":
+        service_state => $service_state,
+        force => true,
+        owner => $hdfs_user
+      }
+    }
+
+    if (hdp_get_major_stack_version($stack_version) >= 2) {
+      Anchor['hdp-hadoop::begin'] -> Hdp-hadoop::Package<||> ->  Hdp::User<|title == $hdfs_user or title == $mapred_user|>  ->
+      Hdp::Directory_recursive_create[$hadoop_config_dir] -> Hdp-hadoop::Configfile<|tag == 'common'|> ->
+      Hdp::Directory_recursive_create[$logdirprefix] -> Hdp::Directory_recursive_create[$piddirprefix] -> Hdp::Directory_recursive_create["$hadoop_tmp_dir"] -> Anchor['hdp-hadoop::end']
+    } else {
+      Anchor['hdp-hadoop::begin'] -> Hdp-hadoop::Package<||> ->  Hdp::User<|title == $hdfs_user or title == $mapred_user|>  ->
       Hdp::Directory_recursive_create[$hadoop_config_dir] -> Hdp-hadoop::Configfile<|tag == 'common'|> ->
       Hdp::Directory_recursive_create[$logdirprefix] -> Hdp::Directory_recursive_create[$piddirprefix] -> Anchor['hdp-hadoop::end']
+    }
+
   }
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/namenode.pp
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/namenode.pp b/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/namenode.pp
index c891958..cfd4e22 100644
--- a/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/namenode.pp
+++ b/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/namenode.pp
@@ -140,12 +140,6 @@ define hdp-hadoop::namenode::create_app_directories($service_state)
         owner         => $hdp::params::hbase_user,
         service_state => $service_state
       }
-     $hbase_staging_dir = $hdp::params::hbase_staging_dir
-     hdp-hadoop::hdfs::directory { $hbase_staging_dir:
-       owner         => $hdp::params::hbase_user,
-       service_state => $service_state,
-       mode             => '711',
-     }
     }
 
     if ($hdp::params::hive_server_host != "") {
@@ -172,7 +166,7 @@ define hdp-hadoop::namenode::create_app_directories($service_state)
       }
     }
 
-    if $stack_version in ("2.0.1") {
+    if (hdp_get_major_stack_version($stack_version) >= 2) {
       if ($hdp::params::nm_hosts != "") {
         if ($hdp::params::yarn_log_aggregation_enabled == "true") {
           $yarn_user = $hdp::params::yarn_user
@@ -181,7 +175,7 @@ define hdp-hadoop::namenode::create_app_directories($service_state)
           hdp-hadoop::hdfs::directory{ $yarn_nm_app_log_dir:
             service_state => $service_state,
             owner => $yarn_user,
-            mode  => '744',
+            mode  => '1777',
             recursive_chmod => true
           }
         }
@@ -191,20 +185,21 @@ define hdp-hadoop::namenode::create_app_directories($service_state)
       if ($hdp::params::hs_host != "") {
         $mapred_user = $hdp::params::mapred_user
         $mapreduce_jobhistory_intermediate_done_dir = $hdp::params::mapreduce_jobhistory_intermediate_done_dir
+        $group = $hdp::params::user_group
         $mapreduce_jobhistory_done_dir = $hdp::params::mapreduce_jobhistory_done_dir
 
         hdp-hadoop::hdfs::directory{ $mapreduce_jobhistory_intermediate_done_dir:
           service_state => $service_state,
           owner => $mapred_user,
-          mode  => '777',
-          recursive_chmod => true
+          group => $group,
+          mode  => '1777'
         }
 
         hdp-hadoop::hdfs::directory{ $mapreduce_jobhistory_done_dir:
           service_state => $service_state,
           owner => $mapred_user,
-          mode  => '750',
-          recursive_chmod => true
+          group => $group,
+          mode  => '1777'
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/params.pp
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/params.pp b/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/params.pp
index eea8005..fe5efce 100644
--- a/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/params.pp
+++ b/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/params.pp
@@ -81,7 +81,7 @@ class hdp-hadoop::params(
   
   $mapred_log_dir_prefix = hdp_default("mapred_log_dir_prefix","/var/log/hadoop-mapreduce")
 
-  $mapred_pid_dir_prefix = hdp_default("mapreduce_libs_path","/var/run/hadoop-mapreduce")
+  $mapred_pid_dir_prefix = hdp_default("mapred_pid_dir_prefix","/var/run/hadoop-mapreduce")
 
   ### compression related
   if (($hdp::params::lzo_enabled == true) and ($hdp::params::snappy_enabled == true)) {
@@ -106,6 +106,8 @@ class hdp-hadoop::params(
   $fs_checkpoint_dir = hdp_default("core-site/fs.checkpoint.dir","/tmp/hadoop-hdfs/dfs/namesecondary")
 
   $proxyuser_group = hdp_default("core-site/proxyuser.group","users")
+  
+  $hadoop_tmp_dir = hdp_default("core-site/hadoop.tmp.dir","/tmp/hadoop-$hdfs_user")
 
   ### hdfs-site
   $datanode_du_reserved = hdp_default("hdfs-site/datanode.du.reserved",1073741824)

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp-hadoop/templates/include_hosts_list.erb
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp-hadoop/templates/include_hosts_list.erb b/ambari-agent/src/main/puppet/modules/hdp-hadoop/templates/include_hosts_list.erb
new file mode 100644
index 0000000..5b519c6
--- /dev/null
+++ b/ambari-agent/src/main/puppet/modules/hdp-hadoop/templates/include_hosts_list.erb
@@ -0,0 +1,3 @@
+<% include_hosts_list.each do |val| -%>
+<%= val %>
+<% end -%>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp-hbase/manifests/init.pp
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp-hbase/manifests/init.pp b/ambari-agent/src/main/puppet/modules/hdp-hbase/manifests/init.pp
index 7cb4b10..bdd7fd2 100644
--- a/ambari-agent/src/main/puppet/modules/hdp-hbase/manifests/init.pp
+++ b/ambari-agent/src/main/puppet/modules/hdp-hbase/manifests/init.pp
@@ -90,18 +90,37 @@ class hdp-hbase(
       override_owner => true
     }
 
-   hdp-hbase::configfile { ['hbase-env.sh','hadoop-metrics.properties']: 
+   hdp-hbase::configfile { ['hbase-env.sh','log4j.properties','hadoop-metrics.properties']: 
       type => $type
     }
 
     hdp-hbase::configfile { 'regionservers':}
 
     if ($security_enabled == true) {
-      if ($type == 'master' and $service_state == 'running') {
+      if ($type == 'master') {
         hdp-hbase::configfile { 'hbase_master_jaas.conf' : }
       } elsif ($type == 'regionserver' and $service_state == 'running') {
+
+        $hbase_grant_premissions_file = '/tmp/hbase_grant_permissions.sh'
+
+        file { $hbase_grant_premissions_file:
+          owner   => $hbase_user,
+          group   => $hdp::params::user_group,
+          mode => '0644',
+          content => template('hdp-hbase/hbase_grant_permissions.erb')
+        }
+
+        hdp::exec { '${smokeuser}_grant_privileges' :
+          command => "su - ${smoke_test_user} -c 'hbase --config $conf_dir shell ${hbase_grant_premissions_file}'",
+          require => File[$hbase_grant_premissions_file]
+        }
+
+        Hdp-hbase::Configfile<||> -> File[$hbase_grant_premissions_file] ->
+        Hdp::Exec['${smokeuser}_grant_privileges'] -> Anchor['hdp-hbase::end']
+
+      } elsif ($type == 'regionserver') {
         hdp-hbase::configfile { 'hbase_regionserver_jaas.conf' : }
-      } elsif ($type == 'client') {
+      } else {
         hdp-hbase::configfile { 'hbase_client_jaas.conf' : }
       }
     }

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp-hbase/manifests/params.pp
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp-hbase/manifests/params.pp b/ambari-agent/src/main/puppet/modules/hdp-hbase/manifests/params.pp
index 1e6d6b4..266fe40 100644
--- a/ambari-agent/src/main/puppet/modules/hdp-hbase/manifests/params.pp
+++ b/ambari-agent/src/main/puppet/modules/hdp-hbase/manifests/params.pp
@@ -89,8 +89,8 @@ class hdp-hbase::params() inherits hdp::params
   $hbase_regionserver_jaas_config_file = hdp_default("hbase_regionserver_jaas_config_file", "${conf_dir}/hbase_regionserver_jaas.conf")
 
   $hbase_master_keytab_path = hdp_default("hbase-site/hbase.master.keytab.file", "${keytab_path}/hbase.service.keytab")
-  $hbase_regionserver_keytab_path = hdp_default("hbase-site/hbase.regionserver.keytab.file", "${keytab_path}/hbase.service.keytab")
   $hbase_master_principal = hdp_default("hbase-site/hbase.master.kerberos.principal", "hbase/_HOST@${kerberos_domain}")
+  $hbase_regionserver_keytab_path = hdp_default("hbase-site/hbase.regionserver.keytab.file", "${keytab_path}/hbase.service.keytab")
   $hbase_regionserver_principal = hdp_default("hbase-site/hbase.regionserver.kerberos.principal", "hbase/_HOST@${kerberos_domain}")
 
   $hbase_primary_name = hdp_default("hbase_primary_name", "hbase")

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp-hive/manifests/jdbc-connector.pp
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp-hive/manifests/jdbc-connector.pp b/ambari-agent/src/main/puppet/modules/hdp-hive/manifests/jdbc-connector.pp
index e5d8c3c..3bcd270 100644
--- a/ambari-agent/src/main/puppet/modules/hdp-hive/manifests/jdbc-connector.pp
+++ b/ambari-agent/src/main/puppet/modules/hdp-hive/manifests/jdbc-connector.pp
@@ -24,13 +24,8 @@ class hdp-hive::jdbc-connector()
 
   $jdbc_jar_name = $hdp-hive::params::jdbc_jar_name
   
-  
-  $java_share_dir = "/usr/share/java"
-  $driver_curl_target = "${java_share_dir}/${jdbc_jar_name}"  
   $hive_lib = $hdp-hive::params::hive_lib
   $target = "${hive_lib}/${jdbc_jar_name}"
-  $jdk_location = $hdp::params::jdk_location
-  $driver_curl_source = "${jdk_location}${jdbc_jar_name}"
   
   anchor { 'hdp-hive::jdbc-connector::begin':}
 
@@ -46,18 +41,18 @@ class hdp-hive::jdbc-connector()
        creates => $target,
        path    => ["/bin","/usr/bin/"],
        require => Hdp::Package['mysql-connector-java'],
-       before  =>  Anchor['hdp-hive::jdbc-connector::end'],
+       notify  =>  Anchor['hdp-hive::jdbc-connector::end'],
    }
   } elsif ($hive_jdbc_driver == "oracle.jdbc.driver.OracleDriver") {
    hdp::exec { 'hive mkdir -p ${artifact_dir} ; curl -kf --retry 10 ${driver_curl_source} -o ${driver_curl_target} &&  cp ${driver_curl_target} ${target}':
        command => "mkdir -p ${artifact_dir} ; curl -kf --retry 10 ${driver_curl_source} -o ${driver_curl_target} &&  cp ${driver_curl_target} ${target}",
        unless  => "test -f ${target}",
        path    => ["/bin","/usr/bin/"],
-       before  =>  Anchor['hdp-hive::jdbc-connector::end'],
+       notify  =>  Anchor['hdp-hive::jdbc-connector::end'],
      }  
   }
 
 
    anchor { 'hdp-hive::jdbc-connector::end':}
-   
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp-nagios/templates/hadoop-services.cfg.erb
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp-nagios/templates/hadoop-services.cfg.erb b/ambari-agent/src/main/puppet/modules/hdp-nagios/templates/hadoop-services.cfg.erb
index 3eb55b9..3af8895 100644
--- a/ambari-agent/src/main/puppet/modules/hdp-nagios/templates/hadoop-services.cfg.erb
+++ b/ambari-agent/src/main/puppet/modules/hdp-nagios/templates/hadoop-services.cfg.erb
@@ -180,7 +180,7 @@ define service {
 
 <%if scope.function_hdp_nagios_members_exist('resorcemanager')-%>
 define service {
-        hostgroup_name          resorcemanager
+        hostgroup_name          ganglia-server
         use                     hadoop-service
         service_description     GANGLIA::Ganglia Collector [gmond] process down alert for Resource Manager
         servicegroups           GANGLIA
@@ -193,7 +193,7 @@ define service {
 
 <%if scope.function_hdp_nagios_members_exist('nodemanagers')-%>
 define service {
-        hostgroup_name          nodemanagers
+        hostgroup_name          ganglia-server
         use                     hadoop-service
         service_description     GANGLIA::Ganglia Collector [gmond] process down alert for Node Manager
         servicegroups           GANGLIA
@@ -206,7 +206,7 @@ define service {
 
 <%if scope.function_hdp_nagios_members_exist('historyserver2')-%>
 define service {
-        hostgroup_name          historyserver2
+        hostgroup_name          ganglia-server
         use                     hadoop-service
         service_description     GANGLIA::Ganglia Collector [gmond] process down alert for History Server 2
         servicegroups           GANGLIA
@@ -450,11 +450,11 @@ define service {
 <% end %>
 
 <%if scope.function_hdp_nagios_members_exist('historyserver2')-%>
-# MAPREDUCE::HISTORYSERVER2 Checks
+# MAPREDUCE::JOBHISTORY Checks
 define service {
         hostgroup_name          historyserver2
         use                     hadoop-service
-        service_description     HISTORYSERVER2::History Server 2 Web UI down
+        service_description     JOBHISTORY::History Server 2 Web UI down
         servicegroups           MAPREDUCE
         check_command           check_webui!historyserver2!<%=scope.function_hdp_template_var("hs_port")%>
         normal_check_interval   1
@@ -465,7 +465,7 @@ define service {
 define service {
         hostgroup_name          historyserver2
         use                     hadoop-service
-        service_description     HISTORYSERVER::History Server 2 CPU utilization
+        service_description     JOBHISTORY::History Server 2 CPU utilization
         servicegroups           MAPREDUCE
         check_command           check_cpu!200%!250%
         normal_check_interval   5
@@ -476,7 +476,7 @@ define service {
 define service {
         hostgroup_name          historyserver2
         use                     hadoop-service
-        service_description     HISTORYSERVER::History Server 2 RPC latency
+        service_description     JOBHISTORY::History Server 2 RPC latency
         servicegroups           MAPREDUCE
         check_command           check_rpcq_latency!JobHistoryServer!<%=scope.function_hdp_template_var("hs_port")%>!3000!5000
         normal_check_interval   5

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp-oozie/files/oozieSmoke2.sh
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp-oozie/files/oozieSmoke2.sh b/ambari-agent/src/main/puppet/modules/hdp-oozie/files/oozieSmoke2.sh
new file mode 100644
index 0000000..e1f31f5
--- /dev/null
+++ b/ambari-agent/src/main/puppet/modules/hdp-oozie/files/oozieSmoke2.sh
@@ -0,0 +1,98 @@
+#!/bin/sh
+#
+#
+# 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.
+#
+#
+function getValueFromField {
+  xmllint $1 | grep "<name>$2</name>" -C 2 | grep '<value>' | cut -d ">" -f2 | cut -d "<" -f1
+  return $?
+}
+
+function checkOozieJobStatus {
+  local job_id=$1
+  local num_of_tries=$2
+  #default num_of_tries to 10 if not present
+  num_of_tries=${num_of_tries:-10}
+  local i=0
+  local rc=1
+  local cmd="source ${oozie_conf_dir}/oozie-env.sh ; /usr/bin/oozie job -oozie ${OOZIE_SERVER} -info $job_id"
+  su - ${smoke_test_user} -c "$cmd"
+  while [ $i -lt $num_of_tries ] ; do
+    cmd_output=`su - ${smoke_test_user} -c "$cmd"`
+    (IFS='';echo $cmd_output)
+    act_status=$(IFS='';echo $cmd_output | grep ^Status | cut -d':' -f2 | sed 's| ||g')
+    echo "workflow_status=$act_status"
+    if [ "RUNNING" == "$act_status" ]; then
+      #increment the couner and get the status again after waiting for 15 secs
+      sleep 15
+      (( i++ ))
+      elif [ "SUCCEEDED" == "$act_status" ]; then
+        rc=0;
+        break;
+      else
+        rc=1
+        break;
+      fi
+    done
+    return $rc
+}
+
+export oozie_conf_dir=$1
+export hadoop_conf_dir=$2
+export smoke_test_user=$3
+export security_enabled=$4
+export smoke_user_keytab=$5
+export realm=$6
+export JTHOST=$7
+export NNHOST=$8
+
+export OOZIE_EXIT_CODE=0
+export JOBTRACKER=`getValueFromField ${hadoop_conf_dir}/yarn-site.xml yarn.resourcemanager.address`
+export NAMENODE=`getValueFromField ${hadoop_conf_dir}/core-site.xml fs.default.name`
+export OOZIE_SERVER=`getValueFromField ${oozie_conf_dir}/oozie-site.xml oozie.base.url`
+export OOZIE_EXAMPLES_DIR=`rpm -ql oozie-client | grep 'oozie-examples.tar.gz$' | xargs dirname`
+cd $OOZIE_EXAMPLES_DIR
+
+tar -zxf oozie-examples.tar.gz
+sed -i "s|nameNode=hdfs://localhost:8020|nameNode=$NAMENODE|g"  examples/apps/map-reduce/job.properties
+sed -i "s|nameNode=hdfs://localhost:9000|nameNode=$NAMENODE|g"  examples/apps/map-reduce/job.properties
+sed -i "s|jobTracker=localhost:8021|jobTracker=$JOBTRACKER|g" examples/apps/map-reduce/job.properties
+sed -i "s|jobTracker=localhost:9001|jobTracker=$JOBTRACKER|g" examples/apps/map-reduce/job.properties
+sed -i "s|oozie.wf.application.path=hdfs://localhost:9000|oozie.wf.application.path=$NAMENODE|g" examples/apps/map-reduce/job.properties
+
+if [[ $security_enabled == "true" ]]; then
+  kinitcmd="${kinit_path_local} -kt ${smoke_user_keytab} ${smoke_test_user}; "
+  echo "dfs.namenode.kerberos.principal=nn/`echo ${NNHOST} | tr '[:upper:]' '[:lower:]'`@${realm}" >> examples/apps/map-reduce/job.properties
+  echo "mapreduce.jobtracker.kerberos.principal=jt/`echo ${JTHOST} | tr '[:upper:]' '[:lower:]'`@${realm}" >> examples/apps/map-reduce/job.properties
+else 
+  kinitcmd=""
+fi
+
+su - ${smoke_test_user} -c "hdfs dfs -rm -r examples"
+su - ${smoke_test_user} -c "hdfs dfs -rm -r input-data"
+su - ${smoke_test_user} -c "hdfs dfs -copyFromLocal $OOZIE_EXAMPLES_DIR/examples examples"
+su - ${smoke_test_user} -c "hdfs dfs -copyFromLocal $OOZIE_EXAMPLES_DIR/examples/input-data input-data"
+
+cmd="${kinitcmd}source ${oozie_conf_dir}/oozie-env.sh ; /usr/bin/oozie -Doozie.auth.token.cache=false job -oozie $OOZIE_SERVER -config $OOZIE_EXAMPLES_DIR/examples/apps/map-reduce/job.properties  -run"
+echo $cmd
+job_info=`su - ${smoke_test_user} -c "$cmd" | grep "job:"`
+job_id="`echo $job_info | cut -d':' -f2`"
+checkOozieJobStatus "$job_id"
+OOZIE_EXIT_CODE="$?"
+exit $OOZIE_EXIT_CODE

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp-oozie/manifests/oozie/service_check.pp
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp-oozie/manifests/oozie/service_check.pp b/ambari-agent/src/main/puppet/modules/hdp-oozie/manifests/oozie/service_check.pp
index 97dd50e..833a5f2 100644
--- a/ambari-agent/src/main/puppet/modules/hdp-oozie/manifests/oozie/service_check.pp
+++ b/ambari-agent/src/main/puppet/modules/hdp-oozie/manifests/oozie/service_check.pp
@@ -23,14 +23,25 @@ class hdp-oozie::oozie::service_check()
   include hdp-oozie::params
 
   $smoke_shell_files = ['oozieSmoke.sh']
+
+  if (hdp_get_major_stack_version($stack_version) >= 2) {
+    $smoke_test_file_name = 'oozieSmoke2.sh'
+  } else {
+    $smoke_test_file_name = 'oozieSmoke.sh'
+  }
+
   anchor { 'hdp-oozie::oozie::service_check::begin':}
 
-  hdp-oozie::smoke_shell_file { $smoke_shell_files: }
+  hdp-oozie::smoke_shell_file { $smoke_shell_files:
+    smoke_shell_file_name => $smoke_test_file_name
+  }
 
   anchor{ 'hdp-oozie::oozie::service_check::end':}
 }
 
-define hdp-oozie::smoke_shell_file()
+define hdp-oozie::smoke_shell_file(
+  $smoke_shell_file_name
+)
 {
   $smoke_test_user = $hdp::params::smokeuser
   $conf_dir = $hdp::params::oozie_conf_dir
@@ -47,17 +58,17 @@ define hdp-oozie::smoke_shell_file()
   $nn_principal = $hdp::params::nn_principal
   $jt_principal = $hdp::params::jt_principal
 
-  file { '/tmp/oozieSmoke.sh':
+  file { "/tmp/${smoke_shell_file_name}":
     ensure => present,
-    source => "puppet:///modules/hdp-oozie/oozieSmoke.sh",
+    source => "puppet:///modules/hdp-oozie/${smoke_shell_file_name}",
     mode => '0755'
   }
 
-  exec { '/tmp/oozieSmoke.sh':
-    command   => "sh /tmp/oozieSmoke.sh ${conf_dir} ${hadoopconf_dir} ${smoke_test_user} ${security} ${smoke_user_keytab} ${realm} $jt_principal $nn_principal $kinit_path",
+  exec { "/tmp/${smoke_shell_file_name}":
+    command   => "sh /tmp/${smoke_shell_file_name} ${conf_dir} ${hadoopconf_dir} ${smoke_test_user} ${security} ${smoke_user_keytab} ${realm} $jt_host $nn_host",
     tries     => 3,
     try_sleep => 5,
-    require   => File['/tmp/oozieSmoke.sh'],
+    require   => File["/tmp/${smoke_shell_file_name}"],
     path      => '/usr/sbin:/sbin:/usr/local/bin:/bin:/usr/bin',
     logoutput => "true"
   }

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp-oozie/manifests/params.pp
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp-oozie/manifests/params.pp b/ambari-agent/src/main/puppet/modules/hdp-oozie/manifests/params.pp
index 8cd6725..b74cf7c 100644
--- a/ambari-agent/src/main/puppet/modules/hdp-oozie/manifests/params.pp
+++ b/ambari-agent/src/main/puppet/modules/hdp-oozie/manifests/params.pp
@@ -43,8 +43,6 @@ class hdp-oozie::params() inherits hdp::params
 
   $oozie_lib_dir = hdp_default("oozie_lib_dir","/var/lib/oozie/")
   
-  $libext_dir = hdp_default("libext_dir","/usr/lib/oozie/libext")
-  
   $oozie_webapps_dir = hdp_default("oozie_webapps_dir","/var/lib/oozie/oozie-server/webapps/")
   
   ### oozie-site

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp-oozie/manifests/service.pp
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp-oozie/manifests/service.pp b/ambari-agent/src/main/puppet/modules/hdp-oozie/manifests/service.pp
index 0f694ec..dc82fb3 100644
--- a/ambari-agent/src/main/puppet/modules/hdp-oozie/manifests/service.pp
+++ b/ambari-agent/src/main/puppet/modules/hdp-oozie/manifests/service.pp
@@ -33,7 +33,11 @@ class hdp-oozie::service(
   $cmd = "env HADOOP_HOME=${hadoop_home} /usr/sbin/oozie_server.sh"
   $pid_file = "${hdp-oozie::params::oozie_pid_dir}/oozie.pid" 
   $jar_location = $hdp::params::hadoop_jar_location
-  $ext_js_path = "/usr/share/HDP-oozie/ext.zip"
+  if (hdp_get_major_stack_version($stack_version) >= 2) {
+    $ext_js_path = "/usr/share/HDP-oozie/ext-2.2.zip"
+  } else {
+    $ext_js_path = "/usr/share/HDP-oozie/ext.zip"
+  }
 
   $security = $hdp::params::security_enabled
   $oozie_keytab = $hdp-oozie::params::oozie_service_keytab
@@ -49,11 +53,9 @@ class hdp-oozie::service(
   
   $jdbc_driver_name = $configuration['oozie-site']['oozie.service.JPAService.jdbc.driver']
   if ($jdbc_driver_name == "com.mysql.jdbc.Driver"){
-    $jdbc_driver_jar = "${java_share_dir}/mysql-connector-java.jar"
-    $jdbc_driver_jar_target = "${libext_dir}/mysql-connector-java.jar"
+    $jdbc_driver_jar = "/usr/share/java/mysql-connector-java.jar"
   } elsif($jdbc_driver_name == "oracle.jdbc.driver.OracleDriver") {
-      $jdbc_driver_jar = "${java_share_dir}/${oracle_driver_jar_name}"
-      $jdbc_driver_jar_target = "${libext_dir}/${oracle_driver_jar_name}"
+      $jdbc_driver_jar = "/usr/share/java/ojdbc6.jar"
   }
   
   file { '/tmp/wrap_ooziedb.sh':
@@ -87,18 +89,24 @@ class hdp-oozie::service(
     $jar_path = "${lzo_jar_suffix}${jdbc_driver_jar}"
   }
 
-              
+       
   $cmd1 = "cd /usr/lib/oozie && tar -xvf oozie-sharelib.tar.gz"
   $cmd2 =  "cd /usr/lib/oozie && mkdir -p ${oozie_tmp}"
   $cmd3 =  "cd /usr/lib/oozie && chown ${user}:${hdp::params::user_group} ${oozie_tmp}" 
      
-  $cmd4 = $jdbc_driver_name ? {
-        /(com.mysql.jdbc.Driver|oracle.jdbc.driver.OracleDriver)/ => "cd ${oozie_tmp} && /usr/lib/oozie/bin/oozie-setup.sh -hadoop 0.20.200 $jar_location -extjs $ext_js_path $jar_option $jar_path && cp $jdbc_driver_jar $jdbc_driver_jar_target",
+  if (hdp_get_major_stack_version($stack_version) >= 2) {
+    $cmd4 = $jdbc_driver_name ? {
+        /(com.mysql.jdbc.Driver|oracle.jdbc.driver.OracleDriver)/ => "cd ${oozie_tmp} && /usr/lib/oozie/bin/oozie-setup.sh -hadoop 2.x /usr/lib/ -extjs $ext_js_path $jar_option $jar_path",
+        default            => "cd ${oozie_tmp} && /usr/lib/oozie/bin/oozie-setup.sh -hadoop 2.x /usr/lib/ -extjs $ext_js_path $jar_option $jar_path",
+    }
+  } else {
+    $cmd4 = $jdbc_driver_name ? {
+        /(com.mysql.jdbc.Driver|oracle.jdbc.driver.OracleDriver)/ => "cd ${oozie_tmp} && /usr/lib/oozie/bin/oozie-setup.sh -hadoop 0.20.200 $jar_location -extjs $ext_js_path $jar_option $jar_path",
         default            => "cd ${oozie_tmp} && /usr/lib/oozie/bin/oozie-setup.sh -hadoop 0.20.200 $jar_location -extjs $ext_js_path $jar_option $jar_path",
+    }
   }
-  $cmd5 =  "/tmp/wrap_ooziedb.sh create -sqlfile oozie.sql -run "
+  $cmd5 =  "cd ${oozie_tmp} && /usr/lib/oozie/bin/ooziedb.sh create -sqlfile oozie.sql -run ; echo 0"
   $cmd6 =  "su - ${user} -c '${kinit_if_needed}; hadoop dfs -put /usr/lib/oozie/share ${oozie_hdfs_user_dir} ; hadoop dfs -chmod -R 755 ${oozie_hdfs_user_dir}/share'"
-  #$cmd7 = "/usr/lib/oozie/bin/oozie-start.sh"
 
   if ($ensure == 'installed_and_configured') {
     $sh_cmds = [$cmd1, $cmd2, $cmd3]
@@ -119,15 +127,13 @@ class hdp-oozie::service(
   hdp-oozie::service::directory { $hdp-oozie::params::oozie_data_dir : }
   hdp-oozie::service::directory { $hdp-oozie::params::oozie_lib_dir : }
   hdp-oozie::service::directory { $hdp-oozie::params::oozie_webapps_dir : }
-  hdp-oozie::service::directory { $hdp-oozie::params::libext_dir : }
-  hdp-oozie::service::jdbc-connector-java { $hdp-oozie::params::libext_dir : }
 
   anchor{'hdp-oozie::service::begin':} -> Hdp-oozie::Service::Directory<||> -> anchor{'hdp-oozie::service::end':}
   
   if ($ensure == 'installed_and_configured') {
     hdp-oozie::service::exec_sh{$sh_cmds:}
     hdp-oozie::service::exec_user{$user_cmds:}
-    Anchor['hdp-oozie::service::begin'] -> Hdp-oozie::Service::Jdbc-connector-java[$hdp-oozie::params::libext_dir] -> Hdp-oozie::Service::Directory<||> -> Hdp-oozie::Service::Exec_sh[$cmd1] -> Hdp-oozie::Service::Exec_sh[$cmd2] ->Hdp-oozie::Service::Exec_sh[$cmd3] -> Hdp-oozie::Service::Exec_user[$cmd4] ->Hdp-oozie::Service::Exec_user[$cmd5] -> Anchor['hdp-oozie::service::end']
+    Hdp-oozie::Service::Directory<||> -> Hdp-oozie::Service::Exec_sh[$cmd1] -> Hdp-oozie::Service::Exec_sh[$cmd2] ->Hdp-oozie::Service::Exec_sh[$cmd3] -> Hdp-oozie::Service::Exec_user[$cmd4] ->Hdp-oozie::Service::Exec_user[$cmd5] -> Anchor['hdp-oozie::service::end']
   } elsif ($ensure == 'running') {
     hdp::exec { "exec $cmd6" :
       command => $cmd6,
@@ -149,19 +155,6 @@ class hdp-oozie::service(
   }
 }
 
-define hdp-oozie::service::jdbc-connector-java()
-{
-  if ($jdbc_driver_name == "com.mysql.jdbc.Driver"){
-   hdp::package { 'mysql-connector-java' : }
-  } elsif($jdbc_driver_name == "oracle.jdbc.driver.OracleDriver") {
-    exec{ "${curl_cmd} ${name}":
-      command => $curl_cmd,
-      path    => ["/bin","/usr/bin/"],
-      unless  => "test -e ${java_share_dir}/${oracle_driver_jar_name}",
-    } 
-  }                       
-}                      
-                      
 define hdp-oozie::service::directory()
 {
   hdp::directory_recursive_create { $name: 

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp-templeton/manifests/server.pp
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp-templeton/manifests/server.pp b/ambari-agent/src/main/puppet/modules/hdp-templeton/manifests/server.pp
index 8671d6d..7c03849 100644
--- a/ambari-agent/src/main/puppet/modules/hdp-templeton/manifests/server.pp
+++ b/ambari-agent/src/main/puppet/modules/hdp-templeton/manifests/server.pp
@@ -95,11 +95,23 @@ class hdp-templeton::copy-hdfs-directories($service_state)
     path => ['/bin']
   }
 
-  hdp-hadoop::hdfs::copyfromlocal { '/usr/lib/hadoop/contrib/streaming/hadoop-streaming*.jar':
-   service_state => $service_state,
-   owner => $webhcat_user,
-   mode  => '755',
-   dest_dir => "$webhcat_apps_dir/hadoop-streaming.jar",
+  if (hdp_get_major_stack_version($stack_version) >= 2) {
+    hdp-hadoop::hdfs::copyfromlocal { '/usr/lib/hadoop-mapreduce/hadoop-streaming*.jar':
+      service_state => $service_state,
+      owner => $webhcat_user,
+      mode  => '755',
+      dest_dir => "$webhcat_apps_dir/hadoop-streaming.jar",
+      kinit_if_needed => $kinit_if_needed
+    }
+  }
+  else {
+    hdp-hadoop::hdfs::copyfromlocal { '/usr/lib/hadoop/contrib/streaming/hadoop-streaming*.jar':
+      service_state => $service_state,
+      owner => $webhcat_user,
+      mode  => '755',
+      dest_dir => "$webhcat_apps_dir/hadoop-streaming.jar",
+      kinit_if_needed => $kinit_if_needed
+    }
   }
   hdp-hadoop::hdfs::copyfromlocal { '/usr/share/HDP-webhcat/pig.tar.gz' :
     service_state => $service_state,

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp-yarn/files/validateYarnComponentStatus.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp-yarn/files/validateYarnComponentStatus.py b/ambari-agent/src/main/puppet/modules/hdp-yarn/files/validateYarnComponentStatus.py
index 7cc3230..9eb3444 100644
--- a/ambari-agent/src/main/puppet/modules/hdp-yarn/files/validateYarnComponentStatus.py
+++ b/ambari-agent/src/main/puppet/modules/hdp-yarn/files/validateYarnComponentStatus.py
@@ -23,11 +23,14 @@ import urllib2, urllib
 import json
 
 RESOURCEMANAGER = 'rm'
-HISTORYSERVER ='hs'
+NODEMANAGER = 'nm'
+HISTORYSERVER = 'hs'
 
 STARTED_STATE = 'STARTED'
+RUNNING_STATE = 'RUNNING'
 
-def validate(component, path, address):
+#Return reponse for given path and address
+def getResponse(path, address):
 
   try:
     url = 'http://' + address + path
@@ -36,23 +39,42 @@ def validate(component, path, address):
     request = urllib2.Request(url)
     handler = urllib2.urlopen(request)
     response = json.loads(handler.read())
-    is_valid = validateResponse(component, response)
-    if is_valid:
-      exit(0)
-    else:
+    if response == None:
+      print 'There is no response for url: ' + str(url)
       exit(1)
+    return response
   except Exception as e:
-    print 'Error checking status of component', e
+    print 'Error getting response for url:' + str(url), e
     exit(1)
 
+#Verify that REST api is available for given component
+def validateAvailability(component, path, address):
+
+  try:
+    response = getResponse(path, address)
+    is_valid = validateAvailabilityResponse(component, response)
+    if not is_valid:
+      exit(1)
+  except Exception as e:
+    print 'Error checking availability status of component', e
+    exit(1)
 
-def validateResponse(component, response):
+#Validate component-specific response
+def validateAvailabilityResponse(component, response):
   try:
     if component == RESOURCEMANAGER:
       rm_state = response['clusterInfo']['state']
       if rm_state == STARTED_STATE:
         return True
       else:
+        print 'Resourcemanager is not started'
+        return False
+
+    elif component == NODEMANAGER:
+      node_healthy = bool(response['nodeInfo']['nodeHealthy'])
+      if node_healthy:
+        return True
+      else:
         return False
     elif component == HISTORYSERVER:
       hs_start_time = response['historyInfo']['startedOn']
@@ -63,7 +85,44 @@ def validateResponse(component, response):
     else:
       return False
   except Exception as e:
-    print 'Error validation of response', e
+    print 'Error validation of availability response for ' + str(component), e
+    return False
+
+#Verify that component has required resources to work
+def validateAbility(component, path, address):
+
+  try:
+    response = getResponse(path, address)
+    is_valid = validateAbilityResponse(component, response)
+    if not is_valid:
+      exit(1)
+  except Exception as e:
+    print 'Error checking ability of component', e
+    exit(1)
+
+#Validate component-specific response that it has required resources to work
+def validateAbilityResponse(component, response):
+  try:
+    if component == RESOURCEMANAGER:
+      nodes = []
+      if response.has_key('nodes') and not response['nodes'] == None and response['nodes'].has_key('node'):
+        nodes = response['nodes']['node']
+      connected_nodes_count = len(nodes)
+      if connected_nodes_count == 0:
+        print 'There is no connected nodemanagers to resourcemanager'
+        return False
+      active_nodes = filter(lambda x: x['state'] == RUNNING_STATE, nodes)
+      active_nodes_count = len(active_nodes)
+
+      if connected_nodes_count == 0:
+        print 'There is no connected active nodemanagers to resourcemanager'
+        return False
+      else:
+        return True
+    else:
+      return False
+  except Exception as e:
+    print 'Error validation of ability response', e
     return False
 
 #
@@ -73,21 +132,25 @@ def main():
   parser = optparse.OptionParser(usage="usage: %prog [options] component ")
   parser.add_option("-p", "--port", dest="address", help="Host:Port for REST API of a desired component")
 
-
   (options, args) = parser.parse_args()
 
   component = args[0]
   
   address = options.address
-  
   if component == RESOURCEMANAGER:
     path = '/ws/v1/cluster/info'
+  elif component == NODEMANAGER:
+    path = '/ws/v1/node/info'
   elif component == HISTORYSERVER:
     path = '/ws/v1/history/info'
   else:
     parser.error("Invalid component")
 
-  validate(component, path, address)
+  validateAvailability(component, path, address)
+
+  if component == RESOURCEMANAGER:
+    path = '/ws/v1/cluster/nodes'
+    validateAbility(component, path, address)
 
 if __name__ == "__main__":
   main()

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/historyserver/service_check.pp
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/historyserver/service_check.pp b/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/historyserver/service_check.pp
index d88cdec..885e24b 100644
--- a/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/historyserver/service_check.pp
+++ b/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/historyserver/service_check.pp
@@ -20,5 +20,5 @@
 #
 class hdp-yarn::historyserver::service_check() inherits hdp-yarn::params
 {
-  class { 'hdp-yarn::smoketest': component_name => 'historyserver'}
+  hdp-yarn::smoketest{'hdp-yarn::smoketest:rm': component_name => 'historyserver'}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/mapred2/service_check.pp
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/mapred2/service_check.pp b/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/mapred2/service_check.pp
new file mode 100644
index 0000000..3ada16e
--- /dev/null
+++ b/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/mapred2/service_check.pp
@@ -0,0 +1,69 @@
+#
+#
+# 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.
+#
+#
+class hdp-yarn::mapred2::service_check() inherits hdp-yarn::params
+{
+  $smoke_test_user = $hdp::params::smokeuser
+  $hadoopMapredExamplesJarName = $hdp-yarn::params::hadoopMapredExamplesJarName
+  $jar_path = "$hdp::params::hadoop_mapred2_jar_location/$hadoopMapredExamplesJarName"
+  $input_file = "/user/${smoke_test_user}/mapredsmokeinput"
+  $output_file = "/user/${smoke_test_user}/mapredsmokeoutput"
+  $hadoop_conf_dir = $hdp::params::hadoop_conf_dir
+
+  $cleanup_cmd = "fs -rm -r -f ${output_file} ${input_file}"
+  $create_file_cmd = "fs -put /etc/passwd ${input_file}"
+  $test_cmd = "fs -test -e ${output_file}"
+  $run_wordcount_job = "jar $jar_path wordcount ${input_file} ${output_file}"
+
+  anchor { 'hdp-yarn::mapred2::service_check::begin':}
+
+  hdp-hadoop::exec-hadoop { 'mapred::service_check::cleanup_before':
+    command   => $cleanup_cmd,
+    tries     => 1,
+    try_sleep => 5,
+    user      => $smoke_test_user
+  }
+
+  hdp-hadoop::exec-hadoop { 'mapred::service_check::create_file':
+    command   => $create_file_cmd,
+    tries     => 1,
+    try_sleep => 5,
+    user      => $smoke_test_user
+  }
+
+  hdp-hadoop::exec-hadoop { 'mapred::service_check::run_wordcount':
+    command   => $run_wordcount_job,
+    tries     => 1,
+    try_sleep => 5,
+    user      => $smoke_test_user,
+    logoutput => "true"
+  }
+
+  hdp-hadoop::exec-hadoop { 'mapred::service_check::test':
+    command     => $test_cmd,
+    refreshonly => true,
+    user        => $smoke_test_user
+  }
+
+  anchor { 'hdp-yarn::mapred2::service_check::end':}
+
+  Anchor['hdp-yarn::mapred2::service_check::begin'] -> Hdp-hadoop::Exec-hadoop['mapred::service_check::cleanup_before'] -> Hdp-hadoop::Exec-hadoop['mapred::service_check::create_file'] -> Hdp-hadoop::Exec-hadoop['mapred::service_check::run_wordcount'] -> Hdp-hadoop::Exec-hadoop['mapred::service_check::test'] -> Anchor['hdp-yarn::mapred2::service_check::end']
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/nodemanager.pp
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/nodemanager.pp b/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/nodemanager.pp
index df852ad..7f40ff3 100644
--- a/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/nodemanager.pp
+++ b/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/nodemanager.pp
@@ -25,7 +25,8 @@ class hdp-yarn::nodemanager(
 {
   $yarn_user = $hdp-yarn::params::yarn_user
   $nm_local_dirs = $hdp-yarn::params::nm_local_dirs
-  
+  $nm_log_dirs = $hdp-yarn::params::nm_log_dirs
+
   if ($service_state == 'no_op') {
   } elsif ($service_state in 'installed_and_configured') {
   
@@ -45,14 +46,21 @@ class hdp-yarn::nodemanager(
       force => true
     }
 
+    hdp::directory_recursive_create { $nm_log_dirs: 
+      owner       => $yarn_user,
+      context_tag => 'yarn_service',
+      service_state => $service_state,
+      force => true
+    }
+
     hdp-yarn::service{ 'nodemanager':
       ensure       => $service_state,
       user         => $yarn_user
     }
 
-    Hdp::Directory_recursive_create[$nm_local_dirs] -> Hdp-yarn::Service['nodemanager']
+    anchor{"hdp-yarn::nodemanager::begin":} -> Hdp::Directory_recursive_create[$nm_local_dirs] -> Hdp-yarn::Service['nodemanager'] -> anchor{"hdp-yarn::nodemanager::end":}
 
   } else {
     hdp_fail("TODO not implemented yet: service_state = ${service_state}")
   }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/params.pp
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/params.pp b/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/params.pp
index c1faf1c..9cb799f 100644
--- a/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/params.pp
+++ b/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/params.pp
@@ -23,22 +23,28 @@ class hdp-yarn::params(
 {
 
   $conf_dir = $hdp::params::yarn_conf_dir 
+  $stack_version = $hdp::params::stack_version
     
   ## yarn-env 
   $hadoop_libexec_dir = hdp_default("yarn/yarn-env/hadoop_libexec_dir","/usr/lib/hadoop/libexec")
   
   $hadoop_common_home = hdp_default("yarn/yarn-env/hadoop_common_home","/usr/lib/hadoop")
   $hadoop_hdfs_home = hdp_default("yarn/yarn-env/hadoop_hdfs_home","/usr/lib/hadoop-hdfs")
-  $hadoop_mapred_home = hdp_default("yarn/yarn-env/hadoop_mapred_home","/usr/lib/hadoop-yarn")
+  $hadoop_mapred_home = hdp_default("yarn/yarn-env/hadoop_mapred_home","/usr/lib/hadoop-mapreduce")
   $hadoop_yarn_home = hdp_default("yarn/yarn-env/hadoop_yarn_home","/usr/lib/hadoop-yarn")
   
   $yarn_log_dir_prefix = hdp_default("hadoop/yarn-env/yarn_log_dir_prefix","/var/log/hadoop-yarn")
   $yarn_pid_dir_prefix = hdp_default("hadoop/yarn-env/yarn_pid_dir_prefix","/var/run/hadoop-yarn")
   
   ## yarn-site
-  $rm_webui_address = hdp_default("yarn-site/yarn.resourcemanager.webapp.address", "localhost:8088")
-  $nm_webui_address = hdp_default("yarn-site/yarn.nodemanager.webapp.address", "localhost:8042")
-  $hs_webui_address = hdp_default("mapred-site/mapreduce.jobhistory.webapp.address", "localhost:19888")
+  $rm_webui_address = hdp_default("yarn-site/yarn.resourcemanager.webapp.address", "0.0.0.0:8088")
+  $nm_webui_address = hdp_default("yarn-site/yarn.nodemanager.webapp.address", "0.0.0.0:8042")
+  $hs_webui_address = hdp_default("mapred-site/mapreduce.jobhistory.webapp.address", "0.0.0.0:19888")
   
-  $nm_local_dirs = hdp_default("yarn-site/yarn.nodemanager.local-dirs", "/yarn/loc/dir") 
+  $nm_local_dirs = hdp_default("yarn-site/yarn.nodemanager.local-dirs", "$hadoop_tmp_dir/nm-local-dir")
+  $nm_log_dirs = hdp_default("yarn-site/yarn.nodemanager.log-dirs", "/var/log/hadoop-yarn/yarn")
+
+  ##smoke test configs
+  $distrAppJarName = "hadoop-yarn-applications-distributedshell-2.*.jar"
+  $hadoopMapredExamplesJarName = "hadoop-mapreduce-examples-2.*.jar"
 }

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/resourcemanager/service_check.pp
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/resourcemanager/service_check.pp b/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/resourcemanager/service_check.pp
index 8f42c0c..c5386c3 100644
--- a/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/resourcemanager/service_check.pp
+++ b/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/resourcemanager/service_check.pp
@@ -20,5 +20,5 @@
 #
 class hdp-yarn::resourcemanager::service_check() inherits hdp-yarn::params
 {
-  class { 'hdp-yarn::smoketest': component_name => 'resourcemanager'}
+  hdp-yarn::smoketest{'hdp-yarn::smoketest:rm': component_name => 'resourcemanager'}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/service.pp
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/service.pp b/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/service.pp
index cd479b0..ab0f2ec 100644
--- a/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/service.pp
+++ b/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/service.pp
@@ -98,8 +98,7 @@ define hdp-yarn::service(
   anchor{"hdp-yarn::service::${name}::begin":}
   anchor{"hdp-yarn::service::${name}::end":}
   if ($daemon_cmd != undef) {
-    Anchor["hdp-yarn::service::${name}::begin"] -> Hdp::Directory_recursive_create<|context_tag == 'yarn_service'|> ->
-      Hdp::Exec[$daemon_cmd] -> Anchor["hdp-yarn::service::${name}::end"]
+    Anchor["hdp-yarn::service::${name}::begin"] -> Hdp::Directory_recursive_create<|title == $pid_dir or title == $log_dir|> -> Hdp::Exec[$daemon_cmd] -> Anchor["hdp-yarn::service::${name}::end"]
 
   }
   if ($ensure == 'running') {

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/smoketest.pp
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/smoketest.pp b/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/smoketest.pp
index 383138f..6ef7bf8 100644
--- a/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/smoketest.pp
+++ b/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/smoketest.pp
@@ -18,7 +18,7 @@
 # under the License.
 #
 #
-class hdp-yarn::smoketest(
+define hdp-yarn::smoketest(
   $component_name = undef
 )
 {
@@ -29,15 +29,18 @@ class hdp-yarn::smoketest(
   if ($component_name == 'resourcemanager') {
     $component_type = 'rm'
     $component_address = $rm_webui_address
+  } elsif ($component_name == 'nodemanager') {
+    $component_type = 'nm'
+    $component_address = $nm_webui_address
   } elsif ($component_name == 'historyserver') {
-    $component_type = 'hs' 
+    $component_type = 'hs'
     $component_address = $hs_webui_address
   } else {
     hdp_fail("Unsupported component name: $component_name")
   }
 
   $smoke_test_user = $hdp::params::smokeuser
-  
+
   $validateStatusFileName = "validateYarnComponentStatus.py"
   $validateStatusFilePath = "/tmp/$validateStatusFileName"
 
@@ -55,6 +58,6 @@ class hdp-yarn::smoketest(
     try_sleep => 5,
     path      => '/usr/sbin:/sbin:/usr/local/bin:/bin:/usr/bin',
     logoutput => "true"
-  }
-  File[$validateStatusFilePath] -> Exec[$validateStatusFilePath]
+}
+  anchor{"hdp-yarn::smoketest::begin":} -> File[$validateStatusFilePath] -> Exec[$validateStatusFilePath] -> anchor{"hdp-yarn::smoketest::end":}
 }

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/yarn/service_check.pp
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/yarn/service_check.pp b/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/yarn/service_check.pp
new file mode 100644
index 0000000..fe053ac
--- /dev/null
+++ b/ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/yarn/service_check.pp
@@ -0,0 +1,37 @@
+#
+#
+# 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.
+#
+#
+class hdp-yarn::yarn::service_check() inherits hdp-yarn::params
+{
+
+  $jar_path = "$hadoop_yarn_home/$distrAppJarName"
+  $run_dist_shell_app_cmd = "jar $jar_path -appname yarnservicecheck -master_memory 512 -container_memory 128 -num_containers 2 -shell_command \"ls\" -jar $jar_path"
+  
+  ## Check availability of REST api
+  hdp-yarn::smoketest{'hdp-yarn::smoketest:rm': component_name => 'resourcemanager'}
+  
+  ## Run distributed shell application check
+  hdp-hadoop::exec-hadoop { 'hdp-yarn::yarn::service_check':
+    command     => $run_dist_shell_app_cmd,
+    user        => $smoke_test_user
+  }
+  
+  anchor{"hdp-yarn::yarn::service_check::begin":} -> Hdp-yarn::Smoketest['hdp-yarn::smoketest:rm'] ->  Hdp-hadoop::Exec-hadoop['hdp-yarn::yarn::service_check'] -> anchor{"hdp-yarn::yarn::service_check::end":}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp/lib/puppet/parser/functions/hdp_get_major_stack_version.rb
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp/lib/puppet/parser/functions/hdp_get_major_stack_version.rb b/ambari-agent/src/main/puppet/modules/hdp/lib/puppet/parser/functions/hdp_get_major_stack_version.rb
new file mode 100644
index 0000000..859af6f
--- /dev/null
+++ b/ambari-agent/src/main/puppet/modules/hdp/lib/puppet/parser/functions/hdp_get_major_stack_version.rb
@@ -0,0 +1,28 @@
+#
+#
+# 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.
+#
+#
+#to handle differences in how args passed in
+module Puppet::Parser::Functions
+  newfunction(:hdp_get_major_stack_version, :type => :rvalue) do |args|
+    stack_version = args[0]
+    major_stack_version = stack_version.split('.')[0]
+    major_stack_version.to_i
+  end
+end
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp/manifests/init.pp
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp/manifests/init.pp b/ambari-agent/src/main/puppet/modules/hdp/manifests/init.pp
index bc7405b..11a4d4f 100644
--- a/ambari-agent/src/main/puppet/modules/hdp/manifests/init.pp
+++ b/ambari-agent/src/main/puppet/modules/hdp/manifests/init.pp
@@ -69,7 +69,7 @@ class hdp(
   $ganglia_collector_jobtracker_port = hdp_default("ganglia_collector_jobtracker_port","8662")
   $ganglia_collector_hbase_port = hdp_default("ganglia_collector_hbase_port","8663")
   $ganglia_collector_rm_port = hdp_default("ganglia_collector_rm_port","8664")
-  $ganglia_collector_nm_port = hdp_default("ganglia_collector_nm_port","8665")
+  $ganglia_collector_nm_port = hdp_default("ganglia_collector_nm_port","8660")
   $ganglia_collector_hs_port = hdp_default("ganglia_collector_hs_port","8666")
 
   $oozie_server_port = hdp_default("oozie_server_port","11000")

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/puppet/modules/hdp/manifests/params.pp
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/puppet/modules/hdp/manifests/params.pp b/ambari-agent/src/main/puppet/modules/hdp/manifests/params.pp
index 715fc46..de23776 100644
--- a/ambari-agent/src/main/puppet/modules/hdp/manifests/params.pp
+++ b/ambari-agent/src/main/puppet/modules/hdp/manifests/params.pp
@@ -230,7 +230,6 @@ class hdp::params()
   $hive_apps_whs_dir = hdp_default("hive_apps_whs_dir", "/apps/hive/warehouse")
   $webhcat_apps_dir = hdp_default("webhcat_apps_dir", "/apps/webhcat")
   $hbase_hdfs_root_dir = hdp_default("hbase-site/hbase.hdfs.root.dir","/apps/hbase/data")
-  $hbase_staging_dir = hdp_default("hbase-site/hbase.bulkload.staging.dir","/apps/hbase/staging")
 
   $yarn_nm_app_log_dir = hdp_default("yarn-site/yarn.nodemanager.remote-app-log-dir","/app-logs")
 
@@ -317,6 +316,7 @@ class hdp::params()
     $pig_conf_dir = "/etc/pig"
     $oozie_conf_dir = "/etc/oozie"
     $hadoop_jar_location = "/usr/share/hadoop"
+    $hadoop_mapred2_jar_location = "/usr/lib/hadoop-mapreduce"
     $hbase_daemon_script = "/usr/bin/hbase-daemon.sh"
     $use_32_bits_on_slaves = false
     $zk_bin = '/usr/sbin'
@@ -332,10 +332,12 @@ class hdp::params()
    
     $mapred_smoke_test_script = "/usr/lib/hadoop/sbin/hadoop-validate-setup.sh"
 
-    if $stack_version in ("2.0.1") {
+    if (hdp_get_major_stack_version($stack_version) >= 2) {
       $hadoop_bin = "/usr/lib/hadoop/sbin"
+      $hadoop_deps = ['hadoop','hadoop-libhdfs','hadoop-lzo', 'hadoop-lzo-native']
     } else {
       $hadoop_bin = "/usr/lib/hadoop/bin"
+      $hadoop_deps = ['hadoop','hadoop-libhdfs','hadoop-native','hadoop-pipes','hadoop-sbin','hadoop-lzo', 'hadoop-lzo-native']
     }
     $yarn_bin = "/usr/lib/hadoop-yarn/sbin"
     $mapred_bin = "/usr/lib/hadoop-mapreduce/sbin"
@@ -349,6 +351,7 @@ class hdp::params()
     $hive_conf_dir = "/etc/hive/conf"
     $hcat_conf_dir = "/etc/hcatalog/conf"
     $hadoop_jar_location = "/usr/lib/hadoop/"
+    $hadoop_mapred2_jar_location = "/usr/lib/hadoop-mapreduce"
     $hbase_daemon_script = "/usr/lib/hbase/bin/hbase-daemon.sh"
     $use_32_bits_on_slaves = false
     $zk_bin = '/usr/lib/zookeeper/bin'
@@ -384,7 +387,7 @@ class hdp::params()
      suse => 'htpasswd2'} 
 
     }
-    
+
     # StackId => Arch => Os
     $package_names = 
     {
@@ -419,12 +422,7 @@ class hdp::params()
             'ALL' => ['hadoop','hadoop-libhdfs.i386','hadoop-native.i386','hadoop-pipes.i386','hadoop-sbin.i386','hadoop-lzo', 'hadoop-lzo-native.i386']
           },
           64 => {
-            'ALL' => ['hadoop','hadoop-libhdfs','hadoop-native','hadoop-pipes','hadoop-sbin','hadoop-lzo', 'hadoop-lzo-native']
-          }
-        },
-        '2.0.1' => {
-          64 => {
-            'ALL' => ['hadoop','hadoop-libhdfs','hadoop-lzo', 'hadoop-lzo-native']
+            'ALL' => $hadoop_deps
           }
         }
       },

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/python/ambari_agent/AmbariConfig.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/python/ambari_agent/AmbariConfig.py b/ambari-agent/src/main/python/ambari_agent/AmbariConfig.py
index e621f4f..1fcb718 100644
--- a/ambari-agent/src/main/python/ambari_agent/AmbariConfig.py
+++ b/ambari-agent/src/main/python/ambari_agent/AmbariConfig.py
@@ -115,6 +115,7 @@ rolesToClass = {
   'HUE_SERVER': 'hdp-hue::server',
   'HDFS_SERVICE_CHECK': 'hdp-hadoop::hdfs::service_check',
   'MAPREDUCE_SERVICE_CHECK': 'hdp-hadoop::mapred::service_check',
+  'MAPREDUCE2_SERVICE_CHECK': 'hdp-yarn::mapred2::service_check',
   'ZOOKEEPER_SERVICE_CHECK': 'hdp-zookeeper::zookeeper::service_check',
   'ZOOKEEPER_QUORUM_SERVICE_CHECK': 'hdp-zookeeper::quorum::service_check',
   'HBASE_SERVICE_CHECK': 'hdp-hbase::hbase::service_check',
@@ -130,6 +131,7 @@ rolesToClass = {
   'RESOURCEMANAGER_SERVICE_CHECK': 'hdp-yarn::resourcemanager::service_check',
   'HISTORYSERVER_SERVICE_CHECK': 'hdp-yarn::historyserver::service_check',
   'TEZ_CLIENT': 'hdp-tez::tez_client',
+  'YARN_SERVICE_CHECK': 'hdp-yarn::yarn::service_check',
   'FLUME_SERVER': 'hdp-flume'
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-agent/src/main/python/ambari_agent/Controller.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/python/ambari_agent/Controller.py b/ambari-agent/src/main/python/ambari_agent/Controller.py
index 67ff920..3e59882 100644
--- a/ambari-agent/src/main/python/ambari_agent/Controller.py
+++ b/ambari-agent/src/main/python/ambari_agent/Controller.py
@@ -141,6 +141,7 @@ class Controller(threading.Thread):
         if not retry:
           data = json.dumps(
               self.heartbeat.build(self.responseId, int(hb_interval), self.hasMappedComponents))
+          logger.debug("Sending request: " + data)
           pass
         else:
           self.DEBUG_HEARTBEAT_RETRIES += 1

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/docs/api/v1/index.md
----------------------------------------------------------------------
diff --git a/ambari-server/docs/api/v1/index.md b/ambari-server/docs/api/v1/index.md
index de2de58..8157ae7 100644
--- a/ambari-server/docs/api/v1/index.md
+++ b/ambari-server/docs/api/v1/index.md
@@ -1080,7 +1080,6 @@ The "end" keyword indicates the end of the set of resources and is equivalent to
 
 The default ordering of the resources (by the natural ordering of the resource key properties) is implied.	
 	
-
 HTTP Return Codes
 ----
 

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/java/org/apache/ambari/eventdb/db/DBConnector.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/eventdb/db/DBConnector.java b/ambari-server/src/main/java/org/apache/ambari/eventdb/db/DBConnector.java
index b859114..7a2913c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/eventdb/db/DBConnector.java
+++ b/ambari-server/src/main/java/org/apache/ambari/eventdb/db/DBConnector.java
@@ -19,11 +19,8 @@ package org.apache.ambari.eventdb.db;
 import java.io.IOException;
 import java.util.List;
 
-import org.apache.ambari.eventdb.model.DataTable;
+import org.apache.ambari.eventdb.model.*;
 import org.apache.ambari.eventdb.model.Jobs.JobDBEntry;
-import org.apache.ambari.eventdb.model.TaskAttempt;
-import org.apache.ambari.eventdb.model.WorkflowContext;
-import org.apache.ambari.eventdb.model.Workflows;
 import org.apache.ambari.eventdb.model.Workflows.WorkflowDBEntry.WorkflowFields;
 
 public interface DBConnector {
@@ -37,9 +34,11 @@ public interface DBConnector {
   
   public DataTable fetchWorkflows(int offset, int limit, String searchTerm, int echo, WorkflowFields field, boolean sortAscending, String searchWorkflowId,
       String searchWorkflowName, String searchWorkflowType, String searchUserName, int minJobs, int maxJobs, long minInputBytes, long maxInputBytes,
-      long minOutputBytes, long maxOutputBytes, long minDuration, long maxDuration, long minStartTime, long maxStartTime, long minFinishTime, long maxFinishTime)
-      throws IOException;
-  
+      long minOutputBytes, long maxOutputBytes, long minDuration, long maxDuration, long minStartTime, long maxStartTime, long minFinishTime, 
+      long maxFinishTime, String tagSearchTerm) throws IOException;
+
+  public List<Apps.AppDBEntry> fetchAppDetails(String workflowId) throws IOException;
+
   public List<JobDBEntry> fetchJobDetails(String workflowID) throws IOException;
   
   public List<JobDBEntry> fetchJobDetails(long minFinishTime, long maxStartTime) throws IOException;

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/java/org/apache/ambari/eventdb/db/PostgresConnector.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/eventdb/db/PostgresConnector.java b/ambari-server/src/main/java/org/apache/ambari/eventdb/db/PostgresConnector.java
index 9c5d7ee..6b0d36c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/eventdb/db/PostgresConnector.java
+++ b/ambari-server/src/main/java/org/apache/ambari/eventdb/db/PostgresConnector.java
@@ -27,20 +27,18 @@ import java.util.EnumMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.ambari.eventdb.model.DataTable;
+import org.apache.ambari.eventdb.model.*;
 import org.apache.ambari.eventdb.model.DataTable.AvgData;
 import org.apache.ambari.eventdb.model.DataTable.Summary;
 import org.apache.ambari.eventdb.model.DataTable.Summary.SummaryFields;
 import org.apache.ambari.eventdb.model.DataTable.Times;
 import org.apache.ambari.eventdb.model.Jobs.JobDBEntry;
 import org.apache.ambari.eventdb.model.Jobs.JobDBEntry.JobFields;
-import org.apache.ambari.eventdb.model.TaskAttempt;
 import org.apache.ambari.eventdb.model.TaskAttempt.TaskAttemptFields;
-import org.apache.ambari.eventdb.model.WorkflowContext;
-import org.apache.ambari.eventdb.model.Workflows;
 import org.apache.ambari.eventdb.model.Workflows.WorkflowDBEntry;
 import org.apache.ambari.eventdb.model.Workflows.WorkflowDBEntry.WorkflowFields;
 import org.apache.commons.lang.NotImplementedException;
+import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.codehaus.jackson.JsonParseException;
@@ -50,6 +48,7 @@ import org.codehaus.jackson.map.ObjectMapper;
 public class PostgresConnector implements DBConnector {
   private static Log LOG = LogFactory.getLog(PostgresConnector.class);
   private static final String WORKFLOW_TABLE_NAME = "workflow";
+  private static final String APP_TABLE_NAME = "application";
   private static final String JOB_TABLE_NAME = "job";
   private static final String TASK_ATTEMPT_TABLE_NAME = "taskattempt";
   public static final String SORT_ASC = "ASC";
@@ -75,6 +74,7 @@ public class PostgresConnector implements DBConnector {
         + getAvg(WorkflowFields.DURATION, SummaryFields.avgDuration, SummaryFields.minDuration, SummaryFields.maxDuration) + ", min("
         + WorkflowFields.STARTTIME + ") as " + SummaryFields.youngest + ", max(" + WorkflowFields.STARTTIME + ") as " + SummaryFields.oldest + " FROM "
         + WORKFLOW_TABLE_NAME),
+    FAD_PS("SELECT " + Apps.AppDBEntry.APP_FIELDS + " FROM " + APP_TABLE_NAME + " WHERE " + Apps.AppDBEntry.AppFields.WORKFLOWID.toString() + " = ?"),
     FJD_PS("SELECT " + JobDBEntry.JOB_FIELDS + " FROM " + JOB_TABLE_NAME + " WHERE " + JobFields.WORKFLOWID.toString() + " = ?"),
     FJD_TIMERANGE_PS("SELECT " + JobDBEntry.JOB_FIELDS + " FROM " + JOB_TABLE_NAME + " WHERE " + JobFields.FINISHTIME.toString() + " >= ? AND "
         + JobFields.SUBMITTIME.toString() + " <= ? ORDER BY " + JobFields.WORKFLOWID + ", " + JobFields.JOBID),
@@ -213,6 +213,7 @@ public class PostgresConnector implements DBConnector {
     w.setOutputBytes(WorkflowFields.OUTPUTBYTES.getLong(rs));
     w.setNumJobsCompleted(WorkflowFields.NUMJOBSCOMPLETED.getInt(rs));
     w.setWorkflowContext(jsonMapper.readValue(WorkflowFields.WORKFLOWCONTEXT.getString(rs), WorkflowContext.class));
+    w.setWorkflowTags(WorkflowFields.WORKFLOWTAGS.getString(rs));
     return w;
   }
   
@@ -227,8 +228,8 @@ public class PostgresConnector implements DBConnector {
   @Override
   public DataTable fetchWorkflows(int offset, int limit, String searchTerm, int echo, WorkflowFields col, boolean sortAscending, String searchWorkflowId,
       String searchWorkflowName, String searchWorkflowType, String searchUserName, int minJobs, int maxJobs, long minInputBytes, long maxInputBytes,
-      long minOutputBytes, long maxOutputBytes, long minDuration, long maxDuration, long minStartTime, long maxStartTime, long minFinishTime, long maxFinishTime)
-      throws IOException {
+      long minOutputBytes, long maxOutputBytes, long minDuration, long maxDuration, long minStartTime, long maxStartTime, long minFinishTime, 
+      long maxFinishTime, String tagSearchTerm) throws IOException {
     int total = 0;
     PreparedStatement ps = getPS(Statements.FW_COUNT_PS);
     ResultSet rs = null;
@@ -248,7 +249,8 @@ public class PostgresConnector implements DBConnector {
     }
     
     String searchClause = buildSearchClause(searchTerm, searchWorkflowId, searchWorkflowName, searchWorkflowType, searchUserName, minJobs, maxJobs,
-        minInputBytes, maxInputBytes, minOutputBytes, maxOutputBytes, minDuration, maxDuration, minStartTime, maxStartTime, minFinishTime, maxFinishTime);
+        minInputBytes, maxInputBytes, minOutputBytes, maxOutputBytes, minDuration, maxDuration, minStartTime, maxStartTime, minFinishTime, maxFinishTime,
+        tagSearchTerm);
     List<WorkflowDBEntry> workflows = fetchWorkflows(getQualifiedPS(Statements.FW_PS, searchClause, col, sortAscending, offset, limit));
     Summary summary = fetchSummary(getQualifiedPS(Statements.FW_SUMMARY_PS, searchClause));
     DataTable table = new DataTable();
@@ -266,7 +268,54 @@ public class PostgresConnector implements DBConnector {
     table.setSummary(summary);
     return table;
   }
-  
+
+  private static Apps.AppDBEntry getAppDBEntry(ResultSet rs) throws SQLException {
+    Apps.AppDBEntry a = new Apps.AppDBEntry();
+    a.setWorkflowId(Apps.AppDBEntry.AppFields.WORKFLOWID.getString(rs));
+    a.setWorkflowEntityName(Apps.AppDBEntry.AppFields.WORKFLOWENTITYNAME.getString(rs));
+    a.setAppId(Apps.AppDBEntry.AppFields.APPID.getString(rs));
+    a.setAppName(Apps.AppDBEntry.AppFields.APPNAME.getString(rs));
+    a.setAppType(Apps.AppDBEntry.AppFields.APPTYPE.getString(rs));
+    a.setFinishTime(Apps.AppDBEntry.AppFields.FINISHTIME.getLong(rs));
+    a.setLaunchTime(Apps.AppDBEntry.AppFields.LAUNCHTIME.getLong(rs));
+    a.setQueue(Apps.AppDBEntry.AppFields.QUEUE.getString(rs));
+    String[] stageStrings = StringUtils.split(Apps.AppDBEntry.AppFields.APPINFO.getString(rs), "-");
+    List<Integer> stages = new ArrayList<Integer>();
+    for (String s : stageStrings)
+      stages.add(Integer.parseInt(s));
+    a.setStages(stages);
+    a.setStatus(Apps.AppDBEntry.AppFields.STATUS.getString(rs));
+    a.setSubmitTime(Apps.AppDBEntry.AppFields.SUBMITTIME.getLong(rs));
+    a.setUserName(Apps.AppDBEntry.AppFields.USERNAME.getString(rs));
+    return a;
+  }
+
+  @Override
+  public List<Apps.AppDBEntry> fetchAppDetails(String workflowId) throws IOException {
+    PreparedStatement ps = getPS(Statements.FAD_PS);
+    List<Apps.AppDBEntry> apps = new ArrayList<Apps.AppDBEntry>();
+    ResultSet rs = null;
+    try {
+      ps.setString(1, workflowId);
+      rs = ps.executeQuery();
+      while (rs.next()) {
+        apps.add(getAppDBEntry(rs));
+      }
+      rs.close();
+    } catch (SQLException e) {
+      throw new IOException(e);
+    } finally {
+      if (rs != null)
+        try {
+          rs.close();
+        } catch (SQLException e) {
+          LOG.error("Exception while closing ResultSet", e);
+        }
+
+    }
+    return apps;
+  }
+
   private static JobDBEntry getJobDBEntry(ResultSet rs) throws SQLException {
     JobDBEntry j = new JobDBEntry();
     j.setConfPath(JobFields.CONFPATH.getString(rs));
@@ -288,7 +337,7 @@ public class PostgresConnector implements DBConnector {
     j.setWorkflowId(JobFields.WORKFLOWID.getString(rs));
     return j;
   }
-  
+
   @Override
   public List<JobDBEntry> fetchJobDetails(String workflowId) throws IOException {
     PreparedStatement ps = getPS(Statements.FJD_PS);
@@ -310,11 +359,11 @@ public class PostgresConnector implements DBConnector {
         } catch (SQLException e) {
           LOG.error("Exception while closing ResultSet", e);
         }
-      
+
     }
     return jobs;
   }
-  
+
   @Override
   public List<JobDBEntry> fetchJobDetails(long minFinishTime, long maxStartTime) throws IOException {
     PreparedStatement ps = getPS(Statements.FJD_TIMERANGE_PS);
@@ -547,7 +596,7 @@ public class PostgresConnector implements DBConnector {
   
   private static String buildSearchClause(String searchTerm, String searchWorkflowId, String searchWorkflowName, String searchWorkflowType,
       String searchUserName, int minJobs, int maxJobs, long minInputBytes, long maxInputBytes, long minOutputBytes, long maxOutputBytes, long minDuration,
-      long maxDuration, long minStartTime, long maxStartTime, long minFinishTime, long maxFinishTime) {
+      long maxDuration, long minStartTime, long maxStartTime, long minFinishTime, long maxFinishTime, String searchTags) {
     StringBuilder sb = new StringBuilder();
     sb.append(WHERE);
     if (searchTerm != null && searchTerm.length() > 0) {
@@ -567,6 +616,8 @@ public class PostgresConnector implements DBConnector {
       append(sb, startsWith(WorkflowFields.WORKFLOWID, searchWorkflowType));
     if (searchUserName != null)
       append(sb, equals(WorkflowFields.USERNAME, searchUserName));
+    if (searchTags != null)
+      append(sb, like(WorkflowFields.WORKFLOWTAGS, searchTags));
     addRangeSearch(sb, WorkflowFields.NUMJOBSTOTAL, minJobs, maxJobs);
     addRangeSearch(sb, WorkflowFields.INPUTBYTES, minInputBytes, maxInputBytes);
     addRangeSearch(sb, WorkflowFields.OUTPUTBYTES, minOutputBytes, maxOutputBytes);


[10/14] AMBARI-2677. Merge from branch-1.4.0 (ncole)

Posted by nc...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/metainfo.xml
deleted file mode 100644
index 45a63e5..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/metainfo.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<!--
-   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.
--->
-<metainfo>
-    <versions>
-	  <active>false</active>
-    </versions>
-</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/repos/repoinfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/repos/repoinfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/repos/repoinfo.xml
deleted file mode 100644
index d429a85..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/repos/repoinfo.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0"?>
-<!--
-   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.
--->
-<reposinfo>
-  <os type="centos6">
-    <repo>
-      <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.0.2/repos/centos6</baseurl>
-      <repoid>HDP-2.0.1</repoid>
-      <reponame>HDP</reponame>
-    </repo>
-  </os>
-  <os type="centos5">
-    <repo>
-      <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.0.2/repos/centos5</baseurl>
-      <repoid>HDP-2.0.1</repoid>
-      <reponame>HDP</reponame>
-    </repo>
-  </os>
-  <os type="redhat6">
-    <repo>
-      <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.0.2/repos/centos6</baseurl>
-      <repoid>HDP-2.0.1</repoid>
-      <reponame>HDP</reponame>
-    </repo>
-  </os>
-  <os type="redhat5">
-    <repo>
-      <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.0.2/repos/centos5</baseurl>
-      <repoid>HDP-2.0.1</repoid>
-      <reponame>HDP</reponame>
-    </repo>
-  </os>
-<!--
-  <os type="suse11">
-    <repo>
-      <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.1/repos/suse11</baseurl>
-      <repoid>HDP-2.0.1</repoid>
-      <reponame>HDP</reponame>
-    </repo>
-    <repo>
-      <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/suse11</baseurl>
-      <repoid>HDP-UTILS-1.1.0.15</repoid>
-      <reponame>HDP-UTILS</reponame>
-      <mirrorslist></mirrorslist>
-    </repo>
-  </os>
-    <os type="sles11">
-    <repo>
-      <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.1/repos/suse11</baseurl>
-      <repoid>HDP-2.0.1</repoid>
-      <reponame>HDP</reponame>
-    </repo>
-    <repo>
-      <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/suse11</baseurl>
-      <repoid>HDP-UTILS-1.1.0.15</repoid>
-      <reponame>HDP-UTILS</reponame>
-      <mirrorslist></mirrorslist>
-    </repo>
-  </os>
--->
-</reposinfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/GANGLIA/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/GANGLIA/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/GANGLIA/metainfo.xml
deleted file mode 100644
index 395bb4f..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/GANGLIA/metainfo.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0"?>
-<!--
-   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.
--->
-<metainfo>
-    <user>root</user>
-    <comment>Ganglia Metrics Collection system</comment>
-    <version>3.2.0</version>
-
-    <components>
-        <component>
-            <name>GANGLIA_SERVER</name>
-            <category>MASTER</category>
-        </component>
-
-        <component>
-            <name>GANGLIA_MONITOR</name>
-            <category>SLAVE</category>
-        </component>
-
-    </components>
-
-</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HBASE/configuration/hbase-policy.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HBASE/configuration/hbase-policy.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HBASE/configuration/hbase-policy.xml
deleted file mode 100644
index e45f23c..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HBASE/configuration/hbase-policy.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-<!--
-/**
- * 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.
- */
--->
-
-<configuration>
-  <property>
-    <name>security.client.protocol.acl</name>
-    <value>*</value>
-    <description>ACL for HRegionInterface protocol implementations (ie. 
-    clients talking to HRegionServers)
-    The ACL is a comma-separated list of user and group names. The user and 
-    group list is separated by a blank. For e.g. "alice,bob users,wheel". 
-    A special value of "*" means all users are allowed.</description>
-  </property>
-
-  <property>
-    <name>security.admin.protocol.acl</name>
-    <value>*</value>
-    <description>ACL for HMasterInterface protocol implementation (ie. 
-    clients talking to HMaster for admin operations).
-    The ACL is a comma-separated list of user and group names. The user and 
-    group list is separated by a blank. For e.g. "alice,bob users,wheel". 
-    A special value of "*" means all users are allowed.</description>
-  </property>
-
-  <property>
-    <name>security.masterregion.protocol.acl</name>
-    <value>*</value>
-    <description>ACL for HMasterRegionInterface protocol implementations
-    (for HRegionServers communicating with HMaster)
-    The ACL is a comma-separated list of user and group names. The user and 
-    group list is separated by a blank. For e.g. "alice,bob users,wheel". 
-    A special value of "*" means all users are allowed.</description>
-  </property>
-</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HBASE/configuration/hbase-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HBASE/configuration/hbase-site.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HBASE/configuration/hbase-site.xml
deleted file mode 100644
index 84d3eea..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HBASE/configuration/hbase-site.xml
+++ /dev/null
@@ -1,350 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-<!--
-/**
- * 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.
- */
--->
-<configuration>
-  <property>
-    <name>hbase.rootdir</name>
-    <value></value>
-    <description>The directory shared by region servers and into
-    which HBase persists.  The URL should be 'fully-qualified'
-    to include the filesystem scheme.  For example, to specify the
-    HDFS directory '/hbase' where the HDFS instance's namenode is
-    running at namenode.example.org on port 9000, set this value to:
-    hdfs://namenode.example.org:9000/hbase.  By default HBase writes
-    into /tmp.  Change this configuration else all data will be lost
-    on machine restart.
-    </description>
-  </property>
-  <property>
-    <name>hbase.cluster.distributed</name>
-    <value>true</value>
-    <description>The mode the cluster will be in. Possible values are
-      false for standalone mode and true for distributed mode.  If
-      false, startup will run all HBase and ZooKeeper daemons together
-      in the one JVM.
-    </description>
-  </property>
-  <property>
-    <name>hbase.tmp.dir</name>
-    <value></value>
-    <description>Temporary directory on the local filesystem.
-    Change this setting to point to a location more permanent
-    than '/tmp' (The '/tmp' directory is often cleared on
-    machine restart).
-    </description>
-  </property>
-  <property>
-    <name>hbase.master.info.bindAddress</name>
-    <value></value>
-    <description>The bind address for the HBase Master web UI
-    </description>
-  </property>
-  <property>
-    <name>hbase.master.info.port</name>
-    <value></value>
-    <description>The port for the HBase Master web UI.</description>
-  </property>
-  <property>
-    <name>hbase.regionserver.info.port</name>
-    <value></value>
-    <description>The port for the HBase RegionServer web UI.</description>
-  </property>
-  <property>
-    <name>hbase.regionserver.global.memstore.upperLimit</name>
-    <value></value>
-    <description>Maximum size of all memstores in a region server before new
-      updates are blocked and flushes are forced. Defaults to 40% of heap
-    </description>
-  </property>
-  <property>
-    <name>hbase.regionserver.handler.count</name>
-    <value></value>
-    <description>Count of RPC Listener instances spun up on RegionServers.
-    Same property is used by the Master for count of master handlers.
-    Default is 10.
-    </description>
-  </property>
-  <property>
-    <name>hbase.hregion.majorcompaction</name>
-    <value></value>
-    <description>The time (in miliseconds) between 'major' compactions of all
-    HStoreFiles in a region.  Default: 1 day.
-    Set to 0 to disable automated major compactions.
-    </description>
-  </property>
-  
-  <property>
-    <name>hbase.regionserver.global.memstore.lowerLimit</name>
-    <value></value>
-    <description>When memstores are being forced to flush to make room in
-      memory, keep flushing until we hit this mark. Defaults to 35% of heap.
-      This value equal to hbase.regionserver.global.memstore.upperLimit causes
-      the minimum possible flushing to occur when updates are blocked due to
-      memstore limiting.
-    </description>
-  </property>
-  <property>
-    <name>hbase.hregion.memstore.block.multiplier</name>
-    <value></value>
-    <description>Block updates if memstore has hbase.hregion.memstore.block.multiplier
-    time hbase.hregion.flush.size bytes.  Useful preventing
-    runaway memstore during spikes in update traffic.  Without an
-    upper-bound, memstore fills such that when it flushes the
-    resultant flush files take a long time to compact or split, or
-    worse, we OOME
-    </description>
-  </property>
-  <property>
-    <name>hbase.hregion.memstore.flush.size</name>
-    <value></value>
-    <description>
-    Memstore will be flushed to disk if size of the memstore
-    exceeds this number of bytes.  Value is checked by a thread that runs
-    every hbase.server.thread.wakefrequency.
-    </description>
-  </property>
-  <property>
-    <name>hbase.hregion.memstore.mslab.enabled</name>
-    <value></value>
-    <description>
-      Enables the MemStore-Local Allocation Buffer,
-      a feature which works to prevent heap fragmentation under
-      heavy write loads. This can reduce the frequency of stop-the-world
-      GC pauses on large heaps.
-    </description>
-  </property>
-  <property>
-    <name>hbase.hregion.max.filesize</name>
-    <value></value>
-    <description>
-    Maximum HStoreFile size. If any one of a column families' HStoreFiles has
-    grown to exceed this value, the hosting HRegion is split in two.
-    Default: 1G.
-    </description>
-  </property>
-  <property>
-    <name>hbase.client.scanner.caching</name>
-    <value></value>
-    <description>Number of rows that will be fetched when calling next
-    on a scanner if it is not served from (local, client) memory. Higher
-    caching values will enable faster scanners but will eat up more memory
-    and some calls of next may take longer and longer times when the cache is empty.
-    Do not set this value such that the time between invocations is greater
-    than the scanner timeout; i.e. hbase.regionserver.lease.period
-    </description>
-  </property>
-  <property>
-    <name>zookeeper.session.timeout</name>
-    <value>30000</value>
-    <description>ZooKeeper session timeout.
-      HBase passes this to the zk quorum as suggested maximum time for a
-      session (This setting becomes zookeeper's 'maxSessionTimeout').  See
-      http://hadoop.apache.org/zookeeper/docs/current/zookeeperProgrammers.html#ch_zkSessions
-      "The client sends a requested timeout, the server responds with the
-      timeout that it can give the client. " In milliseconds.
-    </description>
-  </property>
-  <property>
-    <name>hbase.client.keyvalue.maxsize</name>
-    <value></value>
-    <description>Specifies the combined maximum allowed size of a KeyValue
-    instance. This is to set an upper boundary for a single entry saved in a
-    storage file. Since they cannot be split it helps avoiding that a region
-    cannot be split any further because the data is too large. It seems wise
-    to set this to a fraction of the maximum region size. Setting it to zero
-    or less disables the check.
-    </description>
-  </property>
-  <property>
-    <name>hbase.hstore.compactionThreshold</name>
-    <value></value>
-    <description>
-    If more than this number of HStoreFiles in any one HStore
-    (one HStoreFile is written per flush of memstore) then a compaction
-    is run to rewrite all HStoreFiles files as one.  Larger numbers
-    put off compaction but when it runs, it takes longer to complete.
-    </description>
-  </property>
-  <property>
-    <name>hbase.hstore.blockingStoreFiles</name>
-    <value></value>
-    <description>
-    If more than this number of StoreFiles in any one Store
-    (one StoreFile is written per flush of MemStore) then updates are
-    blocked for this HRegion until a compaction is completed, or
-    until hbase.hstore.blockingWaitTime has been exceeded.
-    </description>
-  </property>
-  <property>
-    <name>hfile.block.cache.size</name>
-    <value></value>
-    <description>
-        Percentage of maximum heap (-Xmx setting) to allocate to block cache
-        used by HFile/StoreFile. Default of 0.25 means allocate 25%.
-        Set to 0 to disable but it's not recommended.
-    </description>
-  </property>
-
-  <!-- The following properties configure authentication information for
-       HBase processes when using Kerberos security.  There are no default
-       values, included here for documentation purposes -->
-  <property>
-    <name>hbase.master.keytab.file</name>
-    <value></value>
-    <description>Full path to the kerberos keytab file to use for logging in
-    the configured HMaster server principal.
-    </description>
-  </property>
-  <property>
-    <name>hbase.master.kerberos.principal</name>
-    <value></value>
-    <description>Ex. "hbase/_HOST@EXAMPLE.COM".  The kerberos principal name
-    that should be used to run the HMaster process.  The principal name should
-    be in the form: user/hostname@DOMAIN.  If "_HOST" is used as the hostname
-    portion, it will be replaced with the actual hostname of the running
-    instance.
-    </description>
-  </property>
-  <property>
-    <name>hbase.regionserver.keytab.file</name>
-    <value></value>
-    <description>Full path to the kerberos keytab file to use for logging in
-    the configured HRegionServer server principal.
-    </description>
-  </property>
-  <property>
-    <name>hbase.regionserver.kerberos.principal</name>
-    <value></value>
-    <description>Ex. "hbase/_HOST@EXAMPLE.COM".  The kerberos principal name
-    that should be used to run the HRegionServer process.  The principal name
-    should be in the form: user/hostname@DOMAIN.  If "_HOST" is used as the
-    hostname portion, it will be replaced with the actual hostname of the
-    running instance.  An entry for this principal must exist in the file
-    specified in hbase.regionserver.keytab.file
-    </description>
-  </property>
-
-  <!-- Additional configuration specific to HBase security -->
-  <property>
-    <name>hbase.superuser</name>
-    <value>hbase</value>
-    <description>List of users or groups (comma-separated), who are allowed
-    full privileges, regardless of stored ACLs, across the cluster.
-    Only used when HBase security is enabled.
-    </description>
-  </property>
-
-  <property>
-    <name>hbase.coprocessor.region.classes</name>
-    <value></value>
-    <description>A comma-separated list of Coprocessors that are loaded by
-    default on all tables. For any override coprocessor method, these classes
-    will be called in order. After implementing your own Coprocessor, just put
-    it in HBase's classpath and add the fully qualified class name here.
-    A coprocessor can also be loaded on demand by setting HTableDescriptor.
-    </description>
-  </property>
-
-  <property>
-    <name>hbase.coprocessor.master.classes</name>
-    <value></value>
-    <description>A comma-separated list of
-      org.apache.hadoop.hbase.coprocessor.MasterObserver coprocessors that are
-      loaded by default on the active HMaster process. For any implemented
-      coprocessor methods, the listed classes will be called in order. After
-      implementing your own MasterObserver, just put it in HBase's classpath
-      and add the fully qualified class name here.
-    </description>
-  </property>
-
-  <property>
-    <name>hbase.zookeeper.property.clientPort</name>
-    <value>2181</value>
-    <description>Property from ZooKeeper's config zoo.cfg.
-    The port at which the clients will connect.
-    </description>
-  </property>
-
-  <!--
-  The following three properties are used together to create the list of
-  host:peer_port:leader_port quorum servers for ZooKeeper.
-  -->
-  <property>
-    <name>hbase.zookeeper.quorum</name>
-    <value></value>
-    <description>Comma separated list of servers in the ZooKeeper Quorum.
-    For example, "host1.mydomain.com,host2.mydomain.com,host3.mydomain.com".
-    By default this is set to localhost for local and pseudo-distributed modes
-    of operation. For a fully-distributed setup, this should be set to a full
-    list of ZooKeeper quorum servers. If HBASE_MANAGES_ZK is set in hbase-env.sh
-    this is the list of servers which we will start/stop ZooKeeper on.
-    </description>
-  </property>
-  <!-- End of properties used to generate ZooKeeper host:port quorum list. -->
-
-  <property>
-    <name>dfs.support.append</name>
-    <value></value>
-    <description>Does HDFS allow appends to files?
-    This is an hdfs config. set in here so the hdfs client will do append support.
-    You must ensure that this config. is true serverside too when running hbase
-    (You will have to restart your cluster after setting it).
-    </description>
-  </property>
-
-  <property>
-    <name>dfs.client.read.shortcircuit</name>
-    <value></value>
-    <description>Enable/Disable short circuit read for your client.
-    Hadoop servers should be configured to allow short circuit read
-    for the hbase user for this to take effect
-    </description>
-  </property>
-
-  <property>
-    <name>dfs.client.read.shortcircuit.skip.checksum</name>
-    <value></value>
-    <description>Enable/disbale skipping the checksum check</description>
-  </property>
-  
-  <property>
-    <name>hbase.zookeeper.useMulti</name>
-    <value>true</value>
-    <description>Instructs HBase to make use of ZooKeeper's multi-update functionality.
-    This allows certain ZooKeeper operations to complete more quickly and prevents some issues
-    with rare Replication failure scenarios (see the release note of HBASE-2611 for an example).·
-    IMPORTANT: only set this to true if all ZooKeeper servers in the cluster are on version 3.4+
-    and will not be downgraded.  ZooKeeper versions before 3.4 do not support multi-update and will
-    not fail gracefully if multi-update is invoked (see ZOOKEEPER-1495).
-    </description>
-  </property>
-  <property>
-    <name>zookeeper.znode.parent</name>
-    <value></value>
-    <description>Root ZNode for HBase in ZooKeeper. All of HBase's ZooKeeper
-      files that are configured with a relative path will go under this node.
-      By default, all of HBase's ZooKeeper file path are configured with a
-      relative path, so they will all go under this directory unless changed.
-    </description>
-  </property>
-
-
-</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HBASE/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HBASE/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HBASE/metainfo.xml
deleted file mode 100644
index 645f7ce..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HBASE/metainfo.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0"?>
-<!--
-   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.
--->
-<metainfo>
-    <user>mapred</user>
-    <comment>Non-relational distributed database and centralized service for configuration management &amp; synchronization</comment>
-    <version>0.94.5.22-1</version>
-
-    <components>
-        <component>
-            <name>HBASE_MASTER</name>
-            <category>MASTER</category>
-        </component>
-
-        <component>
-            <name>HBASE_REGIONSERVER</name>
-            <category>SLAVE</category>
-        </component>
-
-        <component>
-            <name>HBASE_CLIENT</name>
-            <category>CLIENT</category>
-        </component>
-    </components>
-
-</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HCATALOG/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HCATALOG/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HCATALOG/metainfo.xml
deleted file mode 100644
index 45f3342..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HCATALOG/metainfo.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!--
-   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.
--->
-<metainfo>
-    <user>root</user>
-    <comment>This is comment for HCATALOG service</comment>
-    <version>0.5.0.22-1</version>
-
-    <components>
-        <component>
-            <name>HCAT</name>
-            <category>CLIENT</category>
-        </component>
-    </components>
-
-</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HDFS/configuration/core-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HDFS/configuration/core-site.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HDFS/configuration/core-site.xml
deleted file mode 100644
index e646d5b..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HDFS/configuration/core-site.xml
+++ /dev/null
@@ -1,257 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-
- <!--
-    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.
- -->
- 
-<!-- Put site-specific property overrides in this file. -->
-
-<configuration xmlns:xi="http://www.w3.org/2001/XInclude">
-
-<!-- i/o properties -->
-
-  <property>
-    <name>io.file.buffer.size</name>
-    <value>131072</value>
-    <description>The size of buffer for use in sequence files.
-  The size of this buffer should probably be a multiple of hardware
-  page size (4096 on Intel x86), and it determines how much data is
-  buffered during read and write operations.</description>
-  </property>
-
-  <property>
-    <name>io.serializations</name>
-    <value>org.apache.hadoop.io.serializer.WritableSerialization</value>
-  </property>
-
-  <property>
-    <name>io.compression.codecs</name>
-    <value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec</value>
-    <description>A list of the compression codec classes that can be used
-                 for compression/decompression.</description>
-  </property>
-
-  <property>
-    <name>io.compression.codec.lzo.class</name>
-    <value>com.hadoop.compression.lzo.LzoCodec</value>
-    <description>The implementation for lzo codec.</description>
-  </property>
-
-<!-- file system properties -->
-
-  <property>
-    <name>fs.default.name</name>
-    <!-- cluster variant -->
-    <value></value>
-    <description>The name of the default file system.  Either the
-  literal string "local" or a host:port for NDFS.</description>
-    <final>true</final>
-  </property>
-
-  <property>
-    <name>fs.trash.interval</name>
-    <value>360</value>
-    <description>Number of minutes between trash checkpoints.
-  If zero, the trash feature is disabled.
-  </description>
-  </property>
-
-  <property>
-    <name>fs.checkpoint.dir</name>
-    <value></value>
-    <description>Determines where on the local filesystem the DFS secondary
-        name node should store the temporary images to merge.
-        If this is a comma-delimited list of directories then the image is
-        replicated in all of the directories for redundancy.
-    </description>
-  </property>
-
-  <property>
-    <name>fs.checkpoint.edits.dir</name>
-    <value>${fs.checkpoint.dir}</value>
-    <description>Determines where on the local filesystem the DFS secondary
-        name node should store the temporary edits to merge.
-        If this is a comma-delimited list of directoires then teh edits is
-        replicated in all of the directoires for redundancy.
-        Default value is same as fs.checkpoint.dir
-    </description>
-  </property>
-
-  <property>
-    <name>fs.checkpoint.period</name>
-    <value>21600</value>
-    <description>The number of seconds between two periodic checkpoints.
-  </description>
-  </property>
-
-  <property>
-    <name>fs.checkpoint.size</name>
-    <value>536870912</value>
-    <description>The size of the current edit log (in bytes) that triggers
-       a periodic checkpoint even if the fs.checkpoint.period hasn't expired.
-  </description>
-  </property>
-
-  <!-- ipc properties: copied from kryptonite configuration -->
-  <property>
-    <name>ipc.client.idlethreshold</name>
-    <value>8000</value>
-    <description>Defines the threshold number of connections after which
-               connections will be inspected for idleness.
-  </description>
-  </property>
-
-  <property>
-    <name>ipc.client.connection.maxidletime</name>
-    <value>30000</value>
-    <description>The maximum time after which a client will bring down the
-               connection to the server.
-  </description>
-  </property>
-
-  <property>
-    <name>ipc.client.connect.max.retries</name>
-    <value>50</value>
-    <description>Defines the maximum number of retries for IPC connections.</description>
-  </property>
-
-  <!-- Web Interface Configuration -->
-  <property>
-    <name>webinterface.private.actions</name>
-    <value>false</value>
-    <description> If set to true, the web interfaces of JT and NN may contain
-                actions, such as kill job, delete file, etc., that should
-                not be exposed to public. Enable this option if the interfaces
-                are only reachable by those who have the right authorization.
-  </description>
-  </property>
-
- <property>
-   <name>hadoop.security.authentication</name>
-   <value>simple</value>
-   <description>
-   Set the authentication for the cluster. Valid values are: simple or
-   kerberos.
-   </description>
- </property>
-<property>
-  <name>hadoop.security.authorization</name>
-  <value>false</value>
-  <description>
-     Enable authorization for different protocols.
-  </description>
-</property>
-
-  <property>
-    <name>hadoop.security.auth_to_local</name>
-    <value>
-        RULE:[2:$1@$0]([rn]m@.*)s/.*/yarn/
-        RULE:[2:$1@$0]([nd]n@.*)s/.*/hdfs/
-        RULE:[2:$1@$0](hm@.*)s/.*/hbase/
-        RULE:[2:$1@$0](rs@.*)s/.*/hbase/
-        DEFAULT
-    </value>
-<description>The mapping from kerberos principal names to local OS user names.
-  So the default rule is just "DEFAULT" which takes all principals in your default domain to their first component.
-  "omalley@APACHE.ORG" and "omalley/admin@APACHE.ORG" to "omalley", if your default domain is APACHE.ORG.
-The translations rules have 3 sections:
-      base     filter    substitution
-The base consists of a number that represents the number of components in the principal name excluding the realm and the pattern for building the name from the sections of the principal name. The base uses $0 to mean the realm, $1 to mean the first component and $2 to mean the second component.
-
-[1:$1@$0] translates "omalley@APACHE.ORG" to "omalley@APACHE.ORG"
-[2:$1] translates "omalley/admin@APACHE.ORG" to "omalley"
-[2:$1%$2] translates "omalley/admin@APACHE.ORG" to "omalley%admin"
-
-The filter is a regex in parens that must the generated string for the rule to apply.
-
-"(.*%admin)" will take any string that ends in "%admin"
-"(.*@ACME.COM)" will take any string that ends in "@ACME.COM"
-
-Finally, the substitution is a sed rule to translate a regex into a fixed string.
-
-"s/@ACME\.COM//" removes the first instance of "@ACME.COM".
-"s/@[A-Z]*\.COM//" removes the first instance of "@" followed by a name followed by ".COM".
-"s/X/Y/g" replaces all of the "X" in the name with "Y"
-
-So, if your default realm was APACHE.ORG, but you also wanted to take all principals from ACME.COM that had a single component "joe@ACME.COM", you'd do:
-
-RULE:[1:$1@$0](.@ACME.ORG)s/@.//
-DEFAULT
-
-To also translate the names with a second component, you'd make the rules:
-
-RULE:[1:$1@$0](.@ACME.ORG)s/@.//
-RULE:[2:$1@$0](.@ACME.ORG)s/@.//
-DEFAULT
-
-If you want to treat all principals from APACHE.ORG with /admin as "admin", your rules would look like:
-
-RULE[2:$1%$2@$0](.%admin@APACHE.ORG)s/./admin/
-DEFAULT
-    </description>
-  </property>
-
-<!--
-<property>
-  <name>hadoop.proxyuser.scope.function_hdp_user("hcat_user").groups</name>
-  <value></value>
-  <description>
-     Proxy group for Hadoop.
-  </description>
-</property>
-
-<property>
-  <name>hadoop.proxyuser.scope.function_hdp_user("hcat_user").hosts</name>
-  <value></value>
-  <description>
-     Proxy host for Hadoop.
-  </description>
-</property>
-
-<property>
-  <name>hadoop.proxyuser.scope.function_hdp_user("oozie_user").groups</name>
-  <value></value>
-  <description>
-     Proxy group for Hadoop.
-  </description>
-</property>
-
-<property>
-  <name>hadoop.proxyuser.scope.function_hdp_user("oozie_user").hosts</name>
-  <value></value>
-  <description>
-     Proxy host for Hadoop.
-  </description>
-</property>
-
-<property>
-  <name>hadoop.proxyuser.scope.function_hdp_user("templeton_user").groups</name>
-  <value></value>
-  <description>
-    Proxy group for templeton.
-  </description>
-</property>
-
-<property>
-  <name>hadoop.proxyuser.scope.function_hdp_user("templeton_user").hosts</name>
-  <value></value>
-  <description>
-    Proxy host for templeton.
-  </description>
-</property>
--->
-</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HDFS/configuration/global.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HDFS/configuration/global.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HDFS/configuration/global.xml
deleted file mode 100644
index 95fd565..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HDFS/configuration/global.xml
+++ /dev/null
@@ -1,207 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-<!--
-/**
- * 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.
- */
--->
-
-<configuration>
-  <property>
-    <name>namenode_host</name>
-    <value></value>
-    <description>NameNode Host.</description>
-  </property>
-  <property>
-    <name>dfs_name_dir</name>
-    <value>/hadoop/hdfs/namenode</value>
-    <description>NameNode Directories.</description>
-  </property>
-  <property>
-    <name>snamenode_host</name>
-    <value></value>
-    <description>Secondary NameNode.</description>
-  </property>
-  <property>
-    <name>rm_host</name>
-    <value></value>
-    <description>Resource Manager.</description>
-  </property>
-  <property>
-    <name>nm_hosts</name>
-    <value></value>
-    <description>List of Node Manager Hosts.</description>
-  </property>
-  <property>
-    <name>hs_host</name>
-    <value></value>
-    <description>History Server.</description>
-  </property>
-  <property>
-    <name>fs_checkpoint_dir</name>
-    <value>/hadoop/hdfs/namesecondary</value>
-    <description>Secondary NameNode checkpoint dir.</description>
-  </property>
-  <property>
-    <name>datanode_hosts</name>
-    <value></value>
-    <description>List of Datanode Hosts.</description>
-  </property>
-  <property>
-    <name>dfs_data_dir</name>
-    <value>/hadoop/hdfs/data</value>
-    <description>Data directories for Data Nodes.</description>
-  </property>
-  <property>
-    <name>hdfs_log_dir_prefix</name>
-    <value>/var/log/hadoop</value>
-    <description>Hadoop Log Dir Prefix</description>
-  </property>
-  <property>
-    <name>hadoop_pid_dir_prefix</name>
-    <value>/var/run/hadoop</value>
-    <description>Hadoop PID Dir Prefix</description>
-  </property>
-  <property>
-    <name>dfs_webhdfs_enabled</name>
-    <value>true</value>
-    <description>WebHDFS enabled</description>
-  </property>
-  <property>
-    <name>hadoop_heapsize</name>
-    <value>1024</value>
-    <description>Hadoop maximum Java heap size</description>
-  </property>
-  <property>
-    <name>namenode_heapsize</name>
-    <value>1024</value>
-    <description>NameNode Java heap size</description>
-  </property>
-  <property>
-    <name>namenode_opt_newsize</name>
-    <value>200</value>
-    <description>NameNode new generation size</description>
-  </property>
-  <property>
-    <name>namenode_opt_maxnewsize</name>
-    <value>640</value>
-    <description>NameNode maximum new generation size</description>
-  </property>
-  <property>
-    <name>datanode_du_reserved</name>
-    <value>1</value>
-    <description>Reserved space for HDFS</description>
-  </property>
-  <property>
-    <name>dtnode_heapsize</name>
-    <value>1024</value>
-    <description>DataNode maximum Java heap size</description>
-  </property>
-  <property>
-    <name>dfs_datanode_failed_volume_tolerated</name>
-    <value>0</value>
-    <description>DataNode volumes failure toleration</description>
-  </property>
-  <property>
-    <name>fs_checkpoint_period</name>
-    <value>21600</value>
-    <description>HDFS Maximum Checkpoint Delay</description>
-  </property>
-  <property>
-    <name>fs_checkpoint_size</name>
-    <value>0.5</value>
-    <description>FS Checkpoint Size.</description>
-  </property>
-  <property>
-    <name>proxyuser_group</name>
-    <value>users</value>
-    <description>Proxy user group.</description>
-  </property>
-  <property>
-    <name>dfs_exclude</name>
-    <value></value>
-    <description>HDFS Exclude hosts.</description>
-  </property>
-  <property>
-    <name>dfs_include</name>
-    <value></value>
-    <description>HDFS Include hosts.</description>
-  </property>
-  <property>
-    <name>dfs_replication</name>
-    <value>3</value>
-    <description>Default Block Replication.</description>
-  </property>
-  <property>
-    <name>dfs_block_local_path_access_user</name>
-    <value>hbase</value>
-    <description>Default Block Replication.</description>
-  </property>
-  <property>
-    <name>dfs_datanode_address</name>
-    <value>50010</value>
-    <description>Port for datanode address.</description>
-  </property>
-  <property>
-    <name>dfs_datanode_http_address</name>
-    <value>50075</value>
-    <description>Port for datanode address.</description>
-  </property>
-  <property>
-    <name>dfs_datanode_data_dir_perm</name>
-    <value>750</value>
-    <description>Datanode dir perms.</description>
-  </property>
-
-  <property>
-    <name>security_enabled</name>
-    <value>false</value>
-    <description>Hadoop Security</description>
-  </property>
-  <property>
-    <name>kerberos_domain</name>
-    <value>EXAMPLE.COM</value>
-    <description>Kerberos realm.</description>
-  </property>
-  <property>
-    <name>kadmin_pw</name>
-    <value></value>
-    <description>Kerberos realm admin password</description>
-  </property>
-  <property>
-    <name>keytab_path</name>
-    <value>/etc/security/keytabs</value>
-    <description>Kerberos keytab path.</description>
-  </property>
-  
-  <property>
-    <name>keytab_path</name>
-    <value>/etc/security/keytabs</value>
-    <description>KeyTab Directory.</description>
-  </property>
-    <property>
-    <name>namenode_formatted_mark_dir</name>
-    <value>/var/run/hadoop/hdfs/namenode/formatted/</value>
-    <description>Formatteed Mark Directory.</description>
-  </property>
-    <property>
-    <name>hdfs_user</name>
-    <value>hdfs</value>
-    <description>User and Groups.</description>
-  </property>
-  
-</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HDFS/configuration/hadoop-policy.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HDFS/configuration/hadoop-policy.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HDFS/configuration/hadoop-policy.xml
deleted file mode 100644
index 6ec304d..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HDFS/configuration/hadoop-policy.xml
+++ /dev/null
@@ -1,134 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-
-<!--
-   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.
--->
-
-<!-- Put site-specific property overrides in this file. -->
-
-<configuration>
-  <property>
-    <name>security.client.protocol.acl</name>
-    <value>*</value>
-    <description>ACL for ClientProtocol, which is used by user code
-    via the DistributedFileSystem.
-    The ACL is a comma-separated list of user and group names. The user and
-    group list is separated by a blank. For e.g. "alice,bob users,wheel".
-    A special value of "*" means all users are allowed.</description>
-  </property>
-
-  <property>
-    <name>security.client.datanode.protocol.acl</name>
-    <value>*</value>
-    <description>ACL for ClientDatanodeProtocol, the client-to-datanode protocol
-    for block recovery.
-    The ACL is a comma-separated list of user and group names. The user and
-    group list is separated by a blank. For e.g. "alice,bob users,wheel".
-    A special value of "*" means all users are allowed.</description>
-  </property>
-
-  <property>
-    <name>security.datanode.protocol.acl</name>
-    <value>*</value>
-    <description>ACL for DatanodeProtocol, which is used by datanodes to
-    communicate with the namenode.
-    The ACL is a comma-separated list of user and group names. The user and
-    group list is separated by a blank. For e.g. "alice,bob users,wheel".
-    A special value of "*" means all users are allowed.</description>
-  </property>
-
-  <property>
-    <name>security.inter.datanode.protocol.acl</name>
-    <value>*</value>
-    <description>ACL for InterDatanodeProtocol, the inter-datanode protocol
-    for updating generation timestamp.
-    The ACL is a comma-separated list of user and group names. The user and
-    group list is separated by a blank. For e.g. "alice,bob users,wheel".
-    A special value of "*" means all users are allowed.</description>
-  </property>
-
-  <property>
-    <name>security.namenode.protocol.acl</name>
-    <value>*</value>
-    <description>ACL for NamenodeProtocol, the protocol used by the secondary
-    namenode to communicate with the namenode.
-    The ACL is a comma-separated list of user and group names. The user and
-    group list is separated by a blank. For e.g. "alice,bob users,wheel".
-    A special value of "*" means all users are allowed.</description>
-  </property>
-
-  <property>
-    <name>security.inter.tracker.protocol.acl</name>
-    <value>*</value>
-    <description>ACL for InterTrackerProtocol, used by the tasktrackers to
-    communicate with the jobtracker.
-    The ACL is a comma-separated list of user and group names. The user and
-    group list is separated by a blank. For e.g. "alice,bob users,wheel".
-    A special value of "*" means all users are allowed.</description>
-  </property>
-
-  <property>
-    <name>security.job.submission.protocol.acl</name>
-    <value>*</value>
-    <description>ACL for JobSubmissionProtocol, used by job clients to
-    communciate with the jobtracker for job submission, querying job status etc.
-    The ACL is a comma-separated list of user and group names. The user and
-    group list is separated by a blank. For e.g. "alice,bob users,wheel".
-    A special value of "*" means all users are allowed.</description>
-  </property>
-
-  <property>
-    <name>security.task.umbilical.protocol.acl</name>
-    <value>*</value>
-    <description>ACL for TaskUmbilicalProtocol, used by the map and reduce
-    tasks to communicate with the parent tasktracker.
-    The ACL is a comma-separated list of user and group names. The user and
-    group list is separated by a blank. For e.g. "alice,bob users,wheel".
-    A special value of "*" means all users are allowed.</description>
-  </property>
-
- <property>
-    <name>security.admin.operations.protocol.acl</name>
-    <value>hadoop</value>
-    <description>ACL for AdminOperationsProtocol. Used for admin commands.
-    The ACL is a comma-separated list of user and group names. The user and
-    group list is separated by a blank. For e.g. "alice,bob users,wheel".
-    A special value of "*" means all users are allowed.</description>
-  </property>
-
-  <property>
-    <name>security.refresh.usertogroups.mappings.protocol.acl</name>
-    <value>hadoop</value>
-    <description>ACL for RefreshUserMappingsProtocol. Used to refresh
-    users mappings. The ACL is a comma-separated list of user and
-    group names. The user and group list is separated by a blank. For
-    e.g. "alice,bob users,wheel".  A special value of "*" means all
-    users are allowed.</description>
-  </property>
-
-<property>
-    <name>security.refresh.policy.protocol.acl</name>
-    <value>hadoop</value>
-    <description>ACL for RefreshAuthorizationPolicyProtocol, used by the
-    dfsadmin and mradmin commands to refresh the security policy in-effect.
-    The ACL is a comma-separated list of user and group names. The user and
-    group list is separated by a blank. For e.g. "alice,bob users,wheel".
-    A special value of "*" means all users are allowed.</description>
-  </property>
-
-
-</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HDFS/configuration/hdfs-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HDFS/configuration/hdfs-site.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HDFS/configuration/hdfs-site.xml
deleted file mode 100644
index e1a244a..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HDFS/configuration/hdfs-site.xml
+++ /dev/null
@@ -1,438 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-
-<!--
-   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.
--->
-
-<!-- Put site-specific property overrides in this file. -->
-
-<configuration>
-
-<!-- file system properties -->
-
-  <property>
-    <name>dfs.name.dir</name>
-    <!-- cluster variant -->
-    <value></value>
-    <description>Determines where on the local filesystem the DFS name node
-      should store the name table.  If this is a comma-delimited list
-      of directories then the name table is replicated in all of the
-      directories, for redundancy. </description>
-    <final>true</final>
-  </property>
-
-  <property>
-    <name>dfs.support.append</name>
-    <value>true</value>
-    <description>to enable dfs append</description>
-    <final>true</final>
-  </property>
-
-  <property>
-    <name>dfs.webhdfs.enabled</name>
-    <value>true</value>
-    <description>to enable webhdfs</description>
-    <final>true</final>
-  </property>
-
-<!--
- <property>
-    <name>dfs.datanode.socket.write.timeout</name>
-    <value>0</value>
-    <description>DFS Client write socket timeout</description>
-  </property>
--->
-
-  <property>
-    <name>dfs.datanode.failed.volumes.tolerated</name>
-    <value>0</value>
-    <description>#of failed disks dn would tolerate</description>
-    <final>true</final>
-  </property>
-
-  <property>
-    <name>dfs.block.local-path-access.user</name>
-    <value>hbase</value>
-    <description>the user who is allowed to perform short
-    circuit reads.
-    </description>
-    <final>true</final>
-  </property>
-
-  <property>
-    <name>dfs.data.dir</name>
-    <value></value>
-    <description>Determines where on the local filesystem an DFS data node
-  should store its blocks.  If this is a comma-delimited
-  list of directories, then data will be stored in all named
-  directories, typically on different devices.
-  Directories that do not exist are ignored.
-  </description>
-    <final>true</final>
-  </property>
-
-  <property>
-    <name>dfs.hosts.exclude</name>
-    <value></value>
-    <description>Names a file that contains a list of hosts that are
-    not permitted to connect to the namenode.  The full pathname of the
-    file must be specified.  If the value is empty, no hosts are
-    excluded.</description>
-  </property>
-
-<!--
-  <property>
-    <name>dfs.hosts</name>
-    <value></value>
-    <description>Names a file that contains a list of hosts that are
-    permitted to connect to the namenode. The full pathname of the file
-    must be specified.  If the value is empty, all hosts are
-    permitted.</description>
-  </property>
--->
-
-  <property>
-    <name>dfs.checksum.type</name>
-    <value>CRC32</value>
-    <description>The checksum method to be used by default. To maintain
-    compatibility, it is being set to CRC32. Once all migration steps
-    are complete, we can change it to CRC32C and take advantage of the
-    additional performance benefit.</description>
-  </property>
-
-  <property>
-    <name>dfs.replication.max</name>
-    <value>50</value>
-    <description>Maximal block replication.
-  </description>
-  </property>
-
-  <property>
-    <name>dfs.replication</name>
-    <value>3</value>
-    <description>Default block replication.
-  </description>
-  </property>
-
-  <property>
-    <name>dfs.heartbeat.interval</name>
-    <value>3</value>
-    <description>Determines datanode heartbeat interval in seconds.</description>
-  </property>
-
-  <property>
-    <name>dfs.heartbeat.interval</name>
-    <value>3</value>
-    <description>Determines datanode heartbeat interval in seconds.</description>
-  </property>
-
-  <property>
-    <name>dfs.safemode.threshold.pct</name>
-    <value>1.0f</value>
-    <description>
-        Specifies the percentage of blocks that should satisfy
-        the minimal replication requirement defined by dfs.replication.min.
-        Values less than or equal to 0 mean not to start in safe mode.
-        Values greater than 1 will make safe mode permanent.
-        </description>
-  </property>
-
-  <property>
-    <name>dfs.balance.bandwidthPerSec</name>
-    <value>6250000</value>
-    <description>
-        Specifies the maximum amount of bandwidth that each datanode
-        can utilize for the balancing purpose in term of
-        the number of bytes per second.
-  </description>
-  </property>
-
-  <property>
-    <name>dfs.datanode.address</name>
-    <value>0.0.0.0:50010</value>
-  </property>
-
-  <property>
-    <name>dfs.datanode.http.address</name>
-    <value>0.0.0.0:50075</value>
-  </property>
-
-  <property>
-    <name>dfs.block.size</name>
-    <value>134217728</value>
-    <description>The default block size for new files.</description>
-  </property>
-
-  <property>
-    <name>dfs.http.address</name>
-    <value></value>
-<description>The name of the default file system.  Either the
-literal string "local" or a host:port for NDFS.</description>
-<final>true</final>
-</property>
-
-<property>
-<name>dfs.datanode.du.reserved</name>
-<!-- cluster variant -->
-<value>1073741824</value>
-<description>Reserved space in bytes per volume. Always leave this much space free for non dfs use.
-</description>
-</property>
-
-<property>
-<name>dfs.datanode.ipc.address</name>
-<value>0.0.0.0:8010</value>
-<description>
-The datanode ipc server address and port.
-If the port is 0 then the server will start on a free port.
-</description>
-</property>
-
-<property>
-<name>dfs.blockreport.initialDelay</name>
-<value>120</value>
-<description>Delay for first block report in seconds.</description>
-</property>
-
-<property>
-<name>dfs.datanode.du.pct</name>
-<value>0.85f</value>
-<description>When calculating remaining space, only use this percentage of the real available space
-</description>
-</property>
-
-<property>
-<name>dfs.namenode.handler.count</name>
-<value>40</value>
-<description>The number of server threads for the namenode.</description>
-</property>
-
-<property>
-<name>dfs.datanode.max.xcievers</name>
-<value>1024</value>
-<description>PRIVATE CONFIG VARIABLE</description>
-</property>
-
-<!-- Permissions configuration -->
-
-<property>
-<name>dfs.umaskmode</name>
-<value>022</value>
-<description>
-The octal umask used when creating files and directories.
-</description>
-</property>
-
-<property>
-<name>dfs.web.ugi</name>
-<!-- cluster variant -->
-<value>gopher,gopher</value>
-<description>The user account used by the web interface.
-Syntax: USERNAME,GROUP1,GROUP2, ...
-</description>
-</property>
-
-<property>
-<name>dfs.permissions</name>
-<value>true</value>
-<description>
-If "true", enable permission checking in HDFS.
-If "false", permission checking is turned off,
-but all other behavior is unchanged.
-Switching from one parameter value to the other does not change the mode,
-owner or group of files or directories.
-</description>
-</property>
-
-<property>
-<name>dfs.permissions.supergroup</name>
-<value>hdfs</value>
-<description>The name of the group of super-users.</description>
-</property>
-
-<property>
-<name>dfs.namenode.handler.count</name>
-<value>100</value>
-<description>Added to grow Queue size so that more client connections are allowed</description>
-</property>
-
-<property>
-<name>ipc.server.max.response.size</name>
-<value>5242880</value>
-</property>
-<property>
-<name>dfs.block.access.token.enable</name>
-<value>true</value>
-<description>
-If "true", access tokens are used as capabilities for accessing datanodes.
-If "false", no access tokens are checked on accessing datanodes.
-</description>
-</property>
-
-<property>
-<name>dfs.namenode.kerberos.principal</name>
-<value></value>
-<description>
-Kerberos principal name for the NameNode
-</description>
-</property>
-
-<property>
-<name>dfs.secondary.namenode.kerberos.principal</name>
-<value></value>
-    <description>
-        Kerberos principal name for the secondary NameNode.
-    </description>
-  </property>
-
-
-<!--
-  This is KRB DOMAIN specific. The FQDN of the namenode has to be mentioned.
--->
-  <property>
-    <name>dfs.namenode.kerberos.https.principal</name>
-    <value></value>
-     <description>The Kerberos principal for the host that the NameNode runs on.</description>
-
-  </property>
-
-  <property>
-    <name>dfs.secondary.namenode.kerberos.https.principal</name>
-    <value></value>
-    <description>The Kerberos principal for the hostthat the secondary NameNode runs on.</description>
-
-  </property>
-
-  <property>
-    <!-- cluster variant -->
-    <name>dfs.secondary.http.address</name>
-    <value></value>
-    <description>Address of secondary namenode web server</description>
-  </property>
-
-  <property>
-    <name>dfs.secondary.https.port</name>
-    <value>50490</value>
-    <description>The https port where secondary-namenode binds</description>
-  </property>
-
-  <property>
-    <name>dfs.web.authentication.kerberos.principal</name>
-    <value></value>
-    <description>
-      The HTTP Kerberos principal used by Hadoop-Auth in the HTTP endpoint.
-      The HTTP Kerberos principal MUST start with 'HTTP/' per Kerberos
-      HTTP SPENGO specification.
-    </description>
-  </property>
-
-  <property>
-    <name>dfs.web.authentication.kerberos.keytab</name>
-    <value></value>
-    <description>
-      The Kerberos keytab file with the credentials for the
-      HTTP Kerberos principal used by Hadoop-Auth in the HTTP endpoint.
-    </description>
-  </property>
-
-  <property>
-    <name>dfs.datanode.kerberos.principal</name>
-    <value></value>
- <description>
-        The Kerberos principal that the DataNode runs as. "_HOST" is replaced by the real host name.
-    </description>
-  </property>
-
-  <property>
-    <name>dfs.namenode.keytab.file</name>
-    <value></value>
- <description>
-        Combined keytab file containing the namenode service and host principals.
-    </description>
-  </property>
-
-  <property>
-    <name>dfs.secondary.namenode.keytab.file</name>
-    <value></value>
-  <description>
-        Combined keytab file containing the namenode service and host principals.
-    </description>
-  </property>
-
-  <property>
-    <name>dfs.datanode.keytab.file</name>
-    <value></value>
- <description>
-        The filename of the keytab file for the DataNode.
-    </description>
-  </property>
-
-  <property>
-    <name>dfs.https.port</name>
-    <value>50470</value>
- <description>The https port where namenode binds</description>
-
-  </property>
-
-  <property>
-    <name>dfs.https.address</name>
-    <value></value>
-  <description>The https address where namenode binds</description>
-
-  </property>
-
-  <property>
-    <name>dfs.datanode.data.dir.perm</name>
-    <value>750</value>
-<description>The permissions that should be there on dfs.data.dir
-directories. The datanode will not come up if the permissions are
-different on existing dfs.data.dir directories. If the directories
-don't exist, they will be created with this permission.</description>
-  </property>
-
-  <property>
-    <name>dfs.access.time.precision</name>
-    <value>0</value>
-    <description>The access time for HDFS file is precise upto this value.
-                 The default value is 1 hour. Setting a value of 0 disables
-                 access times for HDFS.
-    </description>
-  </property>
-
-  <property>
-   <name>dfs.cluster.administrators</name>
-   <value> hdfs</value>
-   <description>ACL for who all can view the default servlets in the HDFS</description>
-  </property>
-
-  <property>
-    <name>ipc.server.read.threadpool.size</name>
-    <value>5</value>
-    <description></description>
-  </property>
-
-  <property>
-    <name>dfs.namenode.check.stale.datanode</name>
-    <value>true</value>
-    <description>
-      With this setting, the datanodes that have not replied to the heartbeat
-      for more than 30s (i.e. in a stale state) are used for reads only if all
-      other remote replicas have failed.
-    </description>
-  </property>
-
-</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HDFS/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HDFS/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HDFS/metainfo.xml
deleted file mode 100644
index 1fbfbe6..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HDFS/metainfo.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0"?>
-<!--
-   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.
--->
-<metainfo>
-    <user>root</user>
-    <comment>Apache Hadoop Distributed File System</comment>
-    <version>2.0.3.22-1</version>
-
-    <components>
-        <component>
-            <name>NAMENODE</name>
-            <category>MASTER</category>
-        </component>
-
-        <component>
-            <name>DATANODE</name>
-            <category>SLAVE</category>
-        </component>
-
-        <component>
-            <name>SECONDARY_NAMENODE</name>
-            <category>MASTER</category>
-        </component>
-
-        <component>
-            <name>HDFS_CLIENT</name>
-            <category>CLIENT</category>
-        </component>
-    </components>
-
-
-</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HIVE/configuration/hive-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HIVE/configuration/hive-site.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HIVE/configuration/hive-site.xml
deleted file mode 100644
index 7d35558..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HIVE/configuration/hive-site.xml
+++ /dev/null
@@ -1,138 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-<!--
-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.
--->
-
-<configuration>
-  <property>
-    <name>hive.metastore.local</name>
-    <value>false</value>
-    <description>controls whether to connect to remove metastore server or
-    open a new metastore server in Hive Client JVM</description>
-  </property>
-
-  <property>
-    <name>javax.jdo.option.ConnectionURL</name>
-    <value></value>
-    <description>JDBC connect string for a JDBC metastore</description>
-  </property>
-
-  <property>
-    <name>javax.jdo.option.ConnectionDriverName</name>
-    <value>com.mysql.jdbc.Driver</value>
-    <description>Driver class name for a JDBC metastore</description>
-  </property>
-
-  <property>
-    <name>javax.jdo.option.ConnectionUserName</name>
-    <value></value>
-    <description>username to use against metastore database</description>
-  </property>
-
-  <property>
-    <name>javax.jdo.option.ConnectionPassword</name>
-    <value></value>
-    <description>password to use against metastore database</description>
-  </property>
-
-  <property>
-    <name>hive.metastore.warehouse.dir</name>
-    <value>/apps/hive/warehouse</value>
-    <description>location of default database for the warehouse</description>
-  </property>
-
-  <property>
-    <name>hive.metastore.sasl.enabled</name>
-    <value></value>
-    <description>If true, the metastore thrift interface will be secured with SASL.
-     Clients must authenticate with Kerberos.</description>
-  </property>
-
-  <property>
-    <name>hive.metastore.kerberos.keytab.file</name>
-    <value></value>
-    <description>The path to the Kerberos Keytab file containing the metastore
-     thrift server's service principal.</description>
-  </property>
-
-  <property>
-    <name>hive.metastore.kerberos.principal</name>
-    <value></value>
-    <description>The service principal for the metastore thrift server. The special
-    string _HOST will be replaced automatically with the correct host name.</description>
-  </property>
-
-  <property>
-    <name>hive.metastore.cache.pinobjtypes</name>
-    <value>Table,Database,Type,FieldSchema,Order</value>
-    <description>List of comma separated metastore object types that should be pinned in the cache</description>
-  </property>
-
-  <property>
-    <name>hive.metastore.uris</name>
-    <value></value>
-    <description>URI for client to contact metastore server</description>
-  </property>
-
-  <property>
-    <name>hive.semantic.analyzer.factory.impl</name>
-    <value>org.apache.hivealog.cli.HCatSemanticAnalyzerFactory</value>
-    <description>controls which SemanticAnalyzerFactory implemenation class is used by CLI</description>
-  </property>
-
-  <property>
-    <name>hadoop.clientside.fs.operations</name>
-    <value>true</value>
-    <description>FS operations are owned by client</description>
-  </property>
-
-  <property>
-    <name>hive.metastore.client.socket.timeout</name>
-    <value>60</value>
-    <description>MetaStore Client socket timeout in seconds</description>
-  </property>
-
-  <property>
-    <name>hive.metastore.execute.setugi</name>
-    <value>true</value>
-    <description>In unsecure mode, setting this property to true will cause the metastore to execute DFS operations using the client's reported user and group permissions. Note that this property must be set on both the client and     server sides. Further note that its best effort. If client sets its to true and server sets it to false, client setting will be ignored.</description>
-  </property>
-
-  <property>
-    <name>hive.security.authorization.enabled</name>
-    <value>true</value>
-    <description>enable or disable the hive client authorization</description>
-  </property>
-
-  <property>
-    <name>hive.security.authorization.manager</name>
-    <value>org.apache.hcatalog.security.HdfsAuthorizationProvider</value>
-    <description>the hive client authorization manager class name.
-    The user defined authorization class should implement interface org.apache.hadoop.hive.ql.security.authorization.HiveAuthorizationProvider.  </description>
-  </property>
-
-  <property>
-    <name>hive.server2.enable.doAs</name>
-    <value>true</value>
-  </property>
-
-  <property>
-    <name>fs.hdfs.impl.disable.cache</name>
-    <value>true</value>
-  </property>
-
-</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HIVE/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HIVE/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HIVE/metainfo.xml
deleted file mode 100644
index c87b494..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/HIVE/metainfo.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0"?>
-<!--
-   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.
--->
-<metainfo>
-    <user>root</user>
-    <comment>Data warehouse system for ad-hoc queries &amp; analysis of large datasets and table &amp; storage management service</comment>
-    <version>0.10.0.22-1</version>
-
-    <components>        
-        <component>
-            <name>HIVE_METASTORE</name>
-            <category>MASTER</category>
-        </component>
-        <component>
-            <name>HIVE_SERVER</name>
-            <category>MASTER</category>
-        </component>
-        <component>
-            <name>MYSQL_SERVER</name>
-            <category>MASTER</category>
-        </component>
-        <component>
-            <name>HIVE_CLIENT</name>
-            <category>CLIENT</category>
-        </component>
-    </components>
-
-
-</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/container-executor.cfg
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/container-executor.cfg b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/container-executor.cfg
deleted file mode 100644
index 502ddaa..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/container-executor.cfg
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-# 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.
-#
-yarn.nodemanager.local-dirs=TODO-YARN-LOCAL-DIR
-yarn.nodemanager.linux-container-executor.group=hadoop
-yarn.nodemanager.log-dirs=TODO-YARN-LOG-DIR
-banned.users=hfds,bin,0

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/core-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/core-site.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/core-site.xml
deleted file mode 100644
index 3a2af49..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/core-site.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-<!--
-   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.
--->
-<configuration>
-</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/mapred-queue-acls.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/mapred-queue-acls.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/mapred-queue-acls.xml
deleted file mode 100644
index ce12380..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/mapred-queue-acls.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-
-<!--
-   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.
--->
-
-<!-- mapred-queue-acls.xml -->
-<configuration>
-
-
-<!-- queue default -->
-
-  <property>
-    <name>mapred.queue.default.acl-submit-job</name>
-    <value>*</value>
-  </property>
-
-  <property>
-    <name>mapred.queue.default.acl-administer-jobs</name>
-    <value>*</value>
-  </property>
-
-  <!-- END ACLs -->
-
-</configuration>


[12/14] AMBARI-2677. Merge from branch-1.4.0 (ncole)

Posted by nc...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/ganglia_properties_2.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/ganglia_properties_2.json b/ambari-server/src/main/resources/ganglia_properties_2.json
new file mode 100644
index 0000000..b78210c
--- /dev/null
+++ b/ambari-server/src/main/resources/ganglia_properties_2.json
@@ -0,0 +1,21535 @@
+{
+  "Cluster":{
+    "*":{
+      "metrics/cpu/Idle":{
+        "metric":"cpu_report.Idle\\g",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/cpu/Nice":{
+        "metric":"cpu_report.Nice\\g",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/cpu/System":{
+        "metric":"cpu_report.System\\g",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/cpu/User":{
+        "metric":"cpu_report.User\\g",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/cpu/Wait":{
+        "metric":"cpu_report.Wait\\g",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/load/1-min":{
+        "metric":"load_report.1-min",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/load/CPUs":{
+        "metric":"load_report.CPUs ",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/load/Nodes":{
+        "metric":"load_report.Nodes",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/load/Procs":{
+        "metric":"load_report.Procs",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/memory/Buffer":{
+        "metric":"mem_report.Buffer\\g",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/memory/Cache":{
+        "metric":"mem_report.Cache\\g",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/memory/Share":{
+        "metric":"mem_report.Share\\g",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/memory/Swap":{
+        "metric":"mem_report.Swap\\g",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/memory/Total":{
+        "metric":"mem_report.Total\\g",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/memory/Use":{
+        "metric":"mem_report.Use\\g",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/network/In":{
+        "metric":"network_report.In ",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/network/Out":{
+        "metric":"network_report.Out",
+        "pointInTime":false,
+        "temporal":true
+      }
+    }
+  },
+  "Host":{
+    "*":{
+      "metrics/boottime":{
+        "metric":"boottime",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/cpu/cpu_aidle":{
+        "metric":"cpu_aidle",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/cpu/cpu_idle":{
+        "metric":"cpu_idle",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/cpu/cpu_nice":{
+        "metric":"cpu_nice",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/cpu/cpu_num":{
+        "metric":"cpu_num",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/cpu/cpu_speed":{
+        "metric":"cpu_speed",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/cpu/cpu_system":{
+        "metric":"cpu_system",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/cpu/cpu_user":{
+        "metric":"cpu_user",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/cpu/cpu_wio":{
+        "metric":"cpu_wio",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/disk/disk_free":{
+        "metric":"disk_free",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/disk/disk_total":{
+        "metric":"disk_total",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/gcCount":{
+        "metric":"jvm.JvmMetrics.GcCount",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/gcTimeMillis":{
+        "metric":"jvm.JvmMetrics.GcTimeMillis",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/logError":{
+        "metric":"jvm.JvmMetrics.LogError",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/logFatal":{
+        "metric":"jvm.JvmMetrics.LogFatal",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/logInfo":{
+        "metric":"jvm.JvmMetrics.LogInfo",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/logWarn":{
+        "metric":"jvm.JvmMetrics.LogWarn",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/maxMemoryM":{
+        "metric":"jvm.metrics.maxMemoryM",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/memHeapCommittedM":{
+        "metric":"jvm.JvmMetrics.MemHeapCommittedM",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/memHeapUsedM":{
+        "metric":"jvm.JvmMetrics.MemHeapUsedM",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/memNonHeapCommittedM":{
+        "metric":"jvm.JvmMetrics.MemNonHeapCommittedM",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/memNonHeapUsedM":{
+        "metric":"jvm.JvmMetrics.MemNonHeapUsedM",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/threadsBlocked":{
+        "metric":"jvm.JvmMetrics.ThreadsBlocked",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/threadsNew":{
+        "metric":"jvm.JvmMetrics.ThreadsNew",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/threadsRunnable":{
+        "metric":"jvm.JvmMetrics.ThreadsRunnable",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/threadsTerminated":{
+        "metric":"jvm.JvmMetrics.ThreadsTerminated",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/threadsTimedWaiting":{
+        "metric":"jvm.JvmMetrics.ThreadsTimedWaiting",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/threadsWaiting":{
+        "metric":"jvm.JvmMetrics.ThreadsWaiting",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/load/load_fifteen":{
+        "metric":"load_fifteen",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/load/load_five":{
+        "metric":"load_five",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/load/load_one":{
+        "metric":"load_one",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/memory/mem_buffers":{
+        "metric":"mem_buffers",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/memory/mem_cached":{
+        "metric":"mem_cached",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/memory/mem_free":{
+        "metric":"mem_free",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/memory/mem_shared":{
+        "metric":"mem_shared",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/memory/mem_total":{
+        "metric":"mem_total",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/memory/swap_free":{
+        "metric":"swap_free",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/memory/swap_total":{
+        "metric":"swap_total",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/network/bytes_in":{
+        "metric":"bytes_in",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/network/bytes_out":{
+        "metric":"bytes_out",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/network/pkts_in":{
+        "metric":"pkts_in",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/network/pkts_out":{
+        "metric":"pkts_out",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/part_max_used":{
+        "metric":"part_max_used",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/process/proc_run":{
+        "metric":"proc_run",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/process/proc_total":{
+        "metric":"proc_total",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/NumOpenConnections":{
+        "metric":"rpc.rpc.NumOpenConnections",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/ReceivedBytes":{
+        "metric":"rpc.rpc.ReceivedBytes",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/RpcProcessingTime_avg_time":{
+        "metric":"rpc.rpc.RpcProcessingTimeAvgTime",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/RpcProcessingTime_num_ops":{
+        "metric":"rpc.rpc.RpcProcessingTimeNumOps",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/RpcQueueTime_avg_time":{
+        "metric":"rpc.rpc.RpcQueueTimeAvgTime",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/RpcQueueTime_num_ops":{
+        "metric":"rpc.rpc.RpcQueueTimeNumOps",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/RpcSlowResponse_avg_time":{
+        "metric":"rpc.metrics.RpcSlowResponse_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/RpcSlowResponse_num_ops":{
+        "metric":"rpc.metrics.RpcSlowResponse_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/SentBytes":{
+        "metric":"rpc.rpc.SentBytes",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/abort/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.abort.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/abort/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.abort.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/abort_avg_time":{
+        "metric":"rpc.metrics.abort_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/abort_num_ops":{
+        "metric":"rpc.metrics.abort_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/addColumn_avg_time":{
+        "metric":"rpc.metrics.addColumn_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/addColumn_num_ops":{
+        "metric":"rpc.metrics.addColumn_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/addToOnlineRegions/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.addToOnlineRegions.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/addToOnlineRegions/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.addToOnlineRegions.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/addToOnlineRegions_avg_time":{
+        "metric":"rpc.metrics.addToOnlineRegions_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/addToOnlineRegions_num_ops":{
+        "metric":"rpc.metrics.addToOnlineRegions_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/assign_avg_time":{
+        "metric":"rpc.metrics.assign_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/assign_num_ops":{
+        "metric":"rpc.metrics.assign_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/balanceSwitch_avg_time":{
+        "metric":"rpc.metrics.balanceSwitch_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/balanceSwitch_num_ops":{
+        "metric":"rpc.metrics.balanceSwitch_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/balance_avg_time":{
+        "metric":"rpc.metrics.balance_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/balance_num_ops":{
+        "metric":"rpc.metrics.balance_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/bulkLoadHFiles/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.bulkLoadHFiles.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/bulkLoadHFiles/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.bulkLoadHFiles.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/bulkLoadHFiles_avg_time":{
+        "metric":"rpc.metrics.bulkLoadHFiles_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/bulkLoadHFiles_num_ops":{
+        "metric":"rpc.metrics.bulkLoadHFiles_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/callQueueLen":{
+        "metric":"rpc.metrics.callQueueLen",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/checkAndDelete/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.checkAndDelete.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/checkAndDelete/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.checkAndDelete.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/checkAndDelete_avg_time":{
+        "metric":"rpc.metrics.checkAndDelete_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/checkAndDelete_num_ops":{
+        "metric":"rpc.metrics.checkAndDelete_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/checkAndPut/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.checkAndPut.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/checkAndPut/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.checkAndPut.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/checkAndPut_avg_time":{
+        "metric":"rpc.metrics.checkAndPut_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/checkAndPut_num_ops":{
+        "metric":"rpc.metrics.checkAndPut_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/checkOOME/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.checkOOME.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/checkOOME/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.checkOOME.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/checkOOME_avg_time":{
+        "metric":"rpc.metrics.checkOOME_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/checkOOME_num_ops":{
+        "metric":"rpc.metrics.checkOOME_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/close/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.close.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/close/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.close.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/closeRegion/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.closeRegion.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/closeRegion/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.closeRegion.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/closeRegion_avg_time":{
+        "metric":"rpc.metrics.closeRegion_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/closeRegion_num_ops":{
+        "metric":"rpc.metrics.closeRegion_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/close_avg_time":{
+        "metric":"rpc.metrics.close_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/close_num_ops":{
+        "metric":"rpc.metrics.close_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/compactRegion/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.compactRegion.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/compactRegion/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.compactRegion.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/compactRegion_avg_time":{
+        "metric":"rpc.metrics.compactRegion_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/compactRegion_num_ops":{
+        "metric":"rpc.metrics.compactRegion_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/createTable_avg_time":{
+        "metric":"rpc.metrics.createTable_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/createTable_num_ops":{
+        "metric":"rpc.metrics.createTable_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/delete/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.delete.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/delete/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.delete.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/deleteColumn_avg_time":{
+        "metric":"rpc.metrics.deleteColumn_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/deleteColumn_num_ops":{
+        "metric":"rpc.metrics.deleteColumn_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/deleteTable_avg_time":{
+        "metric":"rpc.metrics.deleteTable_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/deleteTable_num_ops":{
+        "metric":"rpc.metrics.deleteTable_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/delete_avg_time":{
+        "metric":"rpc.metrics.delete_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/delete_num_ops":{
+        "metric":"rpc.metrics.delete_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/disableTable_avg_time":{
+        "metric":"rpc.metrics.disableTable_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/disableTable_num_ops":{
+        "metric":"rpc.metrics.disableTable_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/enableTable_avg_time":{
+        "metric":"rpc.metrics.enableTable_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/enableTable_num_ops":{
+        "metric":"rpc.metrics.enableTable_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/execCoprocessor/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.execCoprocessor.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/execCoprocessor/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.execCoprocessor.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/execCoprocessor_avg_time":{
+        "metric":"rpc.metrics.execCoprocessor_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/execCoprocessor_num_ops":{
+        "metric":"rpc.metrics.execCoprocessor_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/exists/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.exists.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/exists/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.exists.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/exists_avg_time":{
+        "metric":"rpc.metrics.exists_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/exists_num_ops":{
+        "metric":"rpc.metrics.exists_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/flushRegion/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.flushRegion.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/flushRegion/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.flushRegion.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/flushRegion_avg_time":{
+        "metric":"rpc.metrics.flushRegion_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/flushRegion_num_ops":{
+        "metric":"rpc.metrics.flushRegion_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/get/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.get.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/get/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.get.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getAlterStatus_avg_time":{
+        "metric":"rpc.metrics.getAlterStatus_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getAlterStatus_num_ops":{
+        "metric":"rpc.metrics.getAlterStatus_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getBlockCacheColumnFamilySummaries/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.getBlockCacheColumnFamilySummaries.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getBlockCacheColumnFamilySummaries/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.getBlockCacheColumnFamilySummaries.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getBlockCacheColumnFamilySummaries_avg_time":{
+        "metric":"rpc.metrics.getBlockCacheColumnFamilySummaries_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getBlockCacheColumnFamilySummaries_num_ops":{
+        "metric":"rpc.metrics.getBlockCacheColumnFamilySummaries_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getCatalogTracker/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.getCatalogTracker.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getCatalogTracker/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.getCatalogTracker.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getCatalogTracker_avg_time":{
+        "metric":"rpc.metrics.getCatalogTracker_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getCatalogTracker_num_ops":{
+        "metric":"rpc.metrics.getCatalogTracker_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getClosestRowBefore/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.getClosestRowBefore.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getClosestRowBefore/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.getClosestRowBefore.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getClosestRowBefore_avg_time":{
+        "metric":"rpc.metrics.getClosestRowBefore_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getClosestRowBefore_num_ops":{
+        "metric":"rpc.metrics.getClosestRowBefore_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getClusterStatus_avg_time":{
+        "metric":"rpc.metrics.getClusterStatus_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getClusterStatus_num_ops":{
+        "metric":"rpc.metrics.getClusterStatus_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getConfiguration/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.getConfiguration.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getConfiguration/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.getConfiguration.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getConfiguration_avg_time":{
+        "metric":"rpc.metrics.getConfiguration_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getConfiguration_num_ops":{
+        "metric":"rpc.metrics.getConfiguration_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getFromOnlineRegions/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.getFromOnlineRegions.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getFromOnlineRegions/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.getFromOnlineRegions.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getFromOnlineRegions_avg_time":{
+        "metric":"rpc.metrics.getFromOnlineRegions_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getFromOnlineRegions_num_ops":{
+        "metric":"rpc.metrics.getFromOnlineRegions_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getHServerInfo/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.getHServerInfo.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getHServerInfo/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.getHServerInfo.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getHServerInfo_avg_time":{
+        "metric":"rpc.metrics.getHServerInfo_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getHServerInfo_num_ops":{
+        "metric":"rpc.metrics.getHServerInfo_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getHTableDescriptors_avg_time":{
+        "metric":"rpc.metrics.getHTableDescriptors_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getHTableDescriptors_num_ops":{
+        "metric":"rpc.metrics.getHTableDescriptors_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getOnlineRegions/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.getOnlineRegions.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getOnlineRegions/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.getOnlineRegions.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getOnlineRegions_avg_time":{
+        "metric":"rpc.metrics.getOnlineRegions_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getOnlineRegions_num_ops":{
+        "metric":"rpc.metrics.getOnlineRegions_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getProtocolSignature/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.getProtocolSignature.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getProtocolSignature/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.getProtocolSignature.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getProtocolSignature_avg_time":{
+        "metric":"rpc.metrics.getProtocolSignature_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getProtocolSignature_num_ops":{
+        "metric":"rpc.metrics.getProtocolSignature_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getProtocolVersion/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.getProtocolVersion.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getProtocolVersion/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.getProtocolVersion.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getProtocolVersion_avg_time":{
+        "metric":"rpc.metrics.getProtocolVersion_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getProtocolVersion_num_ops":{
+        "metric":"rpc.metrics.getProtocolVersion_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getRegionInfo/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.getRegionInfo.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getRegionInfo/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.getRegionInfo.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getRegionInfo_avg_time":{
+        "metric":"rpc.metrics.getRegionInfo_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getRegionInfo_num_ops":{
+        "metric":"rpc.metrics.getRegionInfo_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getServerName/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.getServerName.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getServerName/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.getServerName.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getServerName_avg_time":{
+        "metric":"rpc.metrics.getServerName_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getServerName_num_ops":{
+        "metric":"rpc.metrics.getServerName_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getZooKeeper/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.getZooKeeper.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getZooKeeper/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.getZooKeeper.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getZooKeeper_avg_time":{
+        "metric":"rpc.metrics.getZooKeeper_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/getZooKeeper_num_ops":{
+        "metric":"rpc.metrics.getZooKeeper_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/get_avg_time":{
+        "metric":"rpc.metrics.get_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/get_num_ops":{
+        "metric":"rpc.metrics.get_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/increment/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.increment.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/increment/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.increment.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/incrementColumnValue/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.incrementColumnValue.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/incrementColumnValue/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.incrementColumnValue.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/incrementColumnValue_avg_time":{
+        "metric":"rpc.metrics.incrementColumnValue_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/incrementColumnValue_num_ops":{
+        "metric":"rpc.metrics.incrementColumnValue_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/increment_avg_time":{
+        "metric":"rpc.metrics.increment_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/increment_num_ops":{
+        "metric":"rpc.metrics.increment_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/isAborted/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.isAborted.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/isAborted/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.isAborted.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/isAborted_avg_time":{
+        "metric":"rpc.metrics.isAborted_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/isAborted_num_ops":{
+        "metric":"rpc.metrics.isAborted_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/isMasterRunning_avg_time":{
+        "metric":"rpc.metrics.isMasterRunning_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/isMasterRunning_num_ops":{
+        "metric":"rpc.metrics.isMasterRunning_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/isStopped/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.isStopped.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/isStopped/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.isStopped.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/isStopped_avg_time":{
+        "metric":"rpc.metrics.isStopped_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/isStopped_num_ops":{
+        "metric":"rpc.metrics.isStopped_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/lockRow/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.lockRow.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/lockRow/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.lockRow.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/lockRow_avg_time":{
+        "metric":"rpc.metrics.lockRow_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/lockRow_num_ops":{
+        "metric":"rpc.metrics.lockRow_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/modifyColumn_avg_time":{
+        "metric":"rpc.metrics.modifyColumn_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/modifyColumn_num_ops":{
+        "metric":"rpc.metrics.modifyColumn_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/modifyTable_avg_time":{
+        "metric":"rpc.metrics.modifyTable_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/modifyTable_num_ops":{
+        "metric":"rpc.metrics.modifyTable_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/move_avg_time":{
+        "metric":"rpc.metrics.move_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/move_num_ops":{
+        "metric":"rpc.metrics.move_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/multi/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.multi.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/multi/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.multi.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/multi_avg_time":{
+        "metric":"rpc.metrics.multi_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/multi_num_ops":{
+        "metric":"rpc.metrics.multi_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/next/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.next.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/next/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.next.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/next_avg_time":{
+        "metric":"rpc.metrics.next_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/next_num_ops":{
+        "metric":"rpc.metrics.next_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/offline_avg_time":{
+        "metric":"rpc.metrics.offline_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/offline_num_ops":{
+        "metric":"rpc.metrics.offline_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/openRegion/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.openRegion.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/openRegion/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.openRegion.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/openRegion_avg_time":{
+        "metric":"rpc.metrics.openRegion_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/openRegion_num_ops":{
+        "metric":"rpc.metrics.openRegion_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/openRegions/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.openRegions.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/openRegions/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.openRegions.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/openRegions_avg_time":{
+        "metric":"rpc.metrics.openRegions_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/openRegions_num_ops":{
+        "metric":"rpc.metrics.openRegions_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/openScanner/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.openScanner.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/openScanner/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.openScanner.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/openScanner_avg_time":{
+        "metric":"rpc.metrics.openScanner_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/openScanner_num_ops":{
+        "metric":"rpc.metrics.openScanner_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/put/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.put.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/put/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.put.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/put_avg_time":{
+        "metric":"rpc.metrics.put_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/put_num_ops":{
+        "metric":"rpc.metrics.put_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/regionServerReport_avg_time":{
+        "metric":"rpc.metrics.regionServerReport_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/regionServerReport_num_ops":{
+        "metric":"rpc.metrics.regionServerReport_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/regionServerStartup_avg_time":{
+        "metric":"rpc.metrics.regionServerStartup_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/regionServerStartup_num_ops":{
+        "metric":"rpc.metrics.regionServerStartup_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/removeFromOnlineRegions/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.removeFromOnlineRegions.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/removeFromOnlineRegions/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.removeFromOnlineRegions.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/removeFromOnlineRegions_avg_time":{
+        "metric":"rpc.metrics.removeFromOnlineRegions_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/removeFromOnlineRegions_num_ops":{
+        "metric":"rpc.metrics.removeFromOnlineRegions_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/replicateLogEntries/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.replicateLogEntries.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/replicateLogEntries/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.replicateLogEntries.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/replicateLogEntries_avg_time":{
+        "metric":"rpc.metrics.replicateLogEntries_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/replicateLogEntries_num_ops":{
+        "metric":"rpc.metrics.replicateLogEntries_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/reportRSFatalError_avg_time":{
+        "metric":"rpc.metrics.reportRSFatalError_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/reportRSFatalError_num_ops":{
+        "metric":"rpc.metrics.reportRSFatalError_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/rollHLogWriter/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.rollHLogWriter.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/rollHLogWriter/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.rollHLogWriter.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/rollHLogWriter_avg_time":{
+        "metric":"rpc.metrics.rollHLogWriter_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/rollHLogWriter_num_ops":{
+        "metric":"rpc.metrics.rollHLogWriter_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/rpcAuthenticationFailures":{
+        "metric":"rpc.metrics.rpcAuthenticationFailures",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/rpcAuthenticationSuccesses":{
+        "metric":"rpc.metrics.rpcAuthenticationSuccesses",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/rpcAuthorizationFailures":{
+        "metric":"rpc.rpc.rpcAuthorizationFailures",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/rpcAuthorizationSuccesses":{
+        "metric":"rpc.rpc.RpcAuthorizationSuccesses",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/shutdown_avg_time":{
+        "metric":"rpc.metrics.shutdown_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/shutdown_num_ops":{
+        "metric":"rpc.metrics.shutdown_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/splitRegion/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.splitRegion.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/splitRegion/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.splitRegion.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/splitRegion_avg_time":{
+        "metric":"rpc.metrics.splitRegion_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/splitRegion_num_ops":{
+        "metric":"rpc.metrics.splitRegion_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/stop/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.stop.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/stop/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.stop.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/stopMaster_avg_time":{
+        "metric":"rpc.metrics.stopMaster_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/stopMaster_num_ops":{
+        "metric":"rpc.metrics.stopMaster_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/stop_avg_time":{
+        "metric":"rpc.metrics.stop_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/stop_num_ops":{
+        "metric":"rpc.metrics.stop_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/unassign_avg_time":{
+        "metric":"rpc.metrics.unassign_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/unassign_num_ops":{
+        "metric":"rpc.metrics.unassign_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/unlockRow/aboveOneSec/_avg_time":{
+        "metric":"rpc.metrics.unlockRow.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/unlockRow/aboveOneSec/_num_ops":{
+        "metric":"rpc.metrics.unlockRow.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/unlockRow_avg_time":{
+        "metric":"rpc.metrics.unlockRow_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/unlockRow_num_ops":{
+        "metric":"rpc.metrics.unlockRow_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/canCommit_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.canCommit_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/canCommit_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.canCommit_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/commitPending_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.commitPending_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/commitPending_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.commitPending_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/done_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.done_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/done_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.done_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/getBlockLocalPathInfo_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.getBlockLocalPathInfo_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/getBlockLocalPathInfo_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.getBlockLocalPathInfo_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/getProtocolVersion_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.getProtocolVersion_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/getProtocolVersion_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.getProtocolVersion_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/getTask_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.getTask_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/getTask_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.getTask_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/ping_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.ping_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/ping_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.ping_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/statusUpdate_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.statusUpdate_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/statusUpdate_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.statusUpdate_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/ugi/loginFailure_avg_time":{
+        "metric":"ugi.ugi.loginFailure_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/ugi/loginFailure_num_ops":{
+        "metric":"ugi.ugi.loginFailure_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/ugi/loginSuccess_avg_time":{
+        "metric":"ugi.ugi.loginSuccess_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/ugi/loginSuccess_num_ops":{
+        "metric":"ugi.ugi.loginSuccess_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      }
+    }
+  },
+  "Component":{
+    "NAMENODE":{
+      "metrics/boottime":{
+        "metric":"boottime",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/cpu/cpu_aidle":{
+        "metric":"cpu_aidle",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/cpu/cpu_idle":{
+        "metric":"cpu_idle",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/cpu/cpu_nice":{
+        "metric":"cpu_nice",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/cpu/cpu_num":{
+        "metric":"cpu_num",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/cpu/cpu_speed":{
+        "metric":"cpu_speed",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/cpu/cpu_system":{
+        "metric":"cpu_system",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/cpu/cpu_user":{
+        "metric":"cpu_user",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/cpu/cpu_wio":{
+        "metric":"cpu_wio",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/FSNamesystem/BlockCapacity":{
+        "metric":"dfs.FSNamesystem.BlockCapacity",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/FSNamesystem/BlocksTotal":{
+        "metric":"dfs.FSNamesystem.BlocksTotal",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/FSNamesystem/CapacityRemainingGB":{
+        "metric":"dfs.FSNamesystem.CapacityRemainingGB",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/FSNamesystem/CapacityTotalGB":{
+        "metric":"dfs.FSNamesystem.CapacityTotalGB",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/FSNamesystem/CapacityUsedGB":{
+        "metric":"dfs.FSNamesystem.CapacityUsedGB",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/FSNamesystem/CorruptBlocks":{
+        "metric":"dfs.FSNamesystem.CorruptBlocks",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/FSNamesystem/ExcessBlocks":{
+        "metric":"dfs.FSNamesystem.ExcessBlocks",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/FSNamesystem/FilesTotal":{
+        "metric":"dfs.FSNamesystem.FilesTotal",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/FSNamesystem/MissingBlocks":{
+        "metric":"dfs.FSNamesystem.MissingBlocks",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/FSNamesystem/PendingDeletionBlocks":{
+        "metric":"dfs.FSNamesystem.PendingDeletionBlocks",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/FSNamesystem/PendingReplicationBlocks":{
+        "metric":"dfs.FSNamesystem.PendingReplicationBlocks",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/FSNamesystem/ScheduledReplicationBlocks":{
+        "metric":"dfs.FSNamesystem.ScheduledReplicationBlocks",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/FSNamesystem/TotalLoad":{
+        "metric":"dfs.FSNamesystem.TotalLoad",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/FSNamesystem/UnderReplicatedBlocks":{
+        "metric":"dfs.FSNamesystem.UnderReplicatedBlocks",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/namenode/AddBlockOps":{
+        "metric":"dfs.namenode.AddBlockOps",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/namenode/CreateFileOps":{
+        "metric":"dfs.namenode.CreateFileOps",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/namenode/DeleteFileOps":{
+        "metric":"dfs.namenode.DeleteFileOps",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/namenode/FileInfoOps":{
+        "metric":"dfs.namenode.FileInfoOps",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/namenode/FilesAppended":{
+        "metric":"dfs.namenode.FilesAppended",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/namenode/FilesCreated":{
+        "metric":"dfs.namenode.FilesCreated",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/namenode/FilesDeleted":{
+        "metric":"dfs.namenode.FilesDeleted",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/namenode/FilesInGetListingOps":{
+        "metric":"dfs.namenode.FilesInGetListingOps",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/namenode/FilesRenamed":{
+        "metric":"dfs.namenode.FilesRenamed",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/namenode/GetBlockLocations":{
+        "metric":"dfs.namenode.GetBlockLocations",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/namenode/GetListingOps":{
+        "metric":"dfs.namenode.GetListingOps",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/namenode/JournalTransactionsBatchedInSync":{
+        "metric":"dfs.namenode.JournalTransactionsBatchedInSync",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/namenode/SafemodeTime":{
+        "metric":"dfs.namenode.SafemodeTime",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/namenode/Syncs_avg_time":{
+        "metric":"dfs.namenode.SyncsAvgTime",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/namenode/Syncs_num_ops":{
+        "metric":"dfs.namenode.SyncsNumOps",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/namenode/Transactions_avg_time":{
+        "metric":"dfs.namenode.TransactionsAvgTime",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/namenode/Transactions_num_ops":{
+        "metric":"dfs.namenode.TransactionsNumOps",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/namenode/blockReport_avg_time":{
+        "metric":"dfs.namenode.BlockReportAvgTime",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/namenode/blockReport_num_ops":{
+        "metric":"dfs.namenode.BlockReportNumOps",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/dfs/namenode/fsImageLoadTime":{
+        "metric":"dfs.namenode.FsImageLoadTime",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/disk/disk_free":{
+        "metric":"disk_free",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/disk/disk_total":{
+        "metric":"disk_total",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/disk/part_max_used":{
+        "metric":"part_max_used",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/gcCount":{
+        "metric":"jvm.JvmMetrics.GcCount",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/jvm/gcTimeMillis":{
+        "metric":"jvm.JvmMetrics.GcTimeMillis",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/jvm/logError":{
+        "metric":"jvm.JvmMetrics.LogError",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/jvm/logFatal":{
+        "metric":"jvm.JvmMetrics.LogFatal",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/jvm/logInfo":{
+        "metric":"jvm.JvmMetrics.LogInfo",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/jvm/logWarn":{
+        "metric":"jvm.JvmMetrics.LogWarn",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/jvm/memHeapCommittedM":{
+        "metric":"jvm.JvmMetrics.MemHeapCommittedM",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/jvm/memHeapUsedM":{
+        "metric":"jvm.JvmMetrics.MemHeapUsedM",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/jvm/memNonHeapCommittedM":{
+        "metric":"jvm.JvmMetrics.MemNonHeapCommittedM",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/jvm/memNonHeapUsedM":{
+        "metric":"jvm.JvmMetrics.MemNonHeapUsedM",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/jvm/threadsBlocked":{
+        "metric":"jvm.JvmMetrics.ThreadsBlocked",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/jvm/threadsNew":{
+        "metric":"jvm.JvmMetrics.ThreadsNew",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/jvm/threadsRunnable":{
+        "metric":"jvm.JvmMetrics.ThreadsRunnable",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/jvm/threadsTerminated":{
+        "metric":"jvm.JvmMetrics.ThreadsTerminated",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/jvm/threadsTimedWaiting":{
+        "metric":"jvm.JvmMetrics.ThreadsTimedWaiting",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/jvm/threadsWaiting":{
+        "metric":"jvm.JvmMetrics.ThreadsWaiting",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/load/load_fifteen":{
+        "metric":"load_fifteen",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/load/load_five":{
+        "metric":"load_five",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/load/load_one":{
+        "metric":"load_one",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/memory/mem_buffers":{
+        "metric":"mem_buffers",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/memory/mem_cached":{
+        "metric":"mem_cached",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/memory/mem_free":{
+        "metric":"mem_free",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/memory/mem_shared":{
+        "metric":"mem_shared",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/memory/mem_total":{
+        "metric":"mem_total",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/memory/swap_free":{
+        "metric":"swap_free",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/memory/swap_total":{
+        "metric":"swap_total",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/network/bytes_in":{
+        "metric":"bytes_in",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/network/bytes_out":{
+        "metric":"bytes_out",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/network/pkts_in":{
+        "metric":"pkts_in",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/network/pkts_out":{
+        "metric":"pkts_out",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/process/proc_run":{
+        "metric":"proc_run",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/process/proc_total":{
+        "metric":"proc_total",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/NumOpenConnections":{
+        "metric":"rpc.rpc.NumOpenConnections",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpc/ReceivedBytes":{
+        "metric":"rpc.rpc.ReceivedBytes",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpc/RpcProcessingTime_avg_time":{
+        "metric":"rpc.rpc.RpcProcessingTimeAvgTime",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpc/RpcProcessingTime_num_ops":{
+        "metric":"rpc.rpc.RpcProcessingTimeNumOps",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpc/RpcQueueTime_avg_time":{
+        "metric":"rpc.rpc.RpcQueueTimeAvgTime",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpc/RpcQueueTime_num_ops":{
+        "metric":"rpc.rpc.RpcQueueTimeNumOps",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpc/SentBytes":{
+        "metric":"rpc.rpc.SentBytes",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpc/callQueueLen":{
+        "metric":"rpc.rpc.callQueueLen",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpc/rpcAuthenticationFailures":{
+        "metric":"rpc.rpc.rpcAuthenticationFailures",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpc/rpcAuthenticationSuccesses":{
+        "metric":"rpc.rpc.rpcAuthenticationSuccesses",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpc/rpcAuthorizationFailures":{
+        "metric":"rpc.rpc.rpcAuthorizationFailures",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpc/rpcAuthorizationSuccesses":{
+        "metric":"rpc.rpc.RpcAuthorizationSuccesses",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/addBlock_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.AddBlockAvgTime",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/addBlock_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.AddBlockNumOps",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/blockReceived_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.blockReceived_avg_time",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/blockReceived_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.blockReceived_num_ops",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/blockReport_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.BlockReportAvgTime",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/blockReport_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.BlockReportNumOps",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/blocksBeingWrittenReport_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.blocksBeingWrittenReport_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/blocksBeingWrittenReport_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.blocksBeingWrittenReport_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/complete_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.CompleteAvgTime",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/complete_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.CompleteNumOps",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/create_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.CreateAvgTime",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/create_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.CreateNumOps",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/delete_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.delete_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/delete_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.delete_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/fsync_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.fsync_avg_time",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/fsync_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.fsync_num_ops",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/getBlockLocations_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.getBlockLocations_avg_time",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/getBlockLocations_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.getBlockLocations_num_ops",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/getEditLogSize_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.getEditLogSize_avg_time",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/getEditLogSize_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.getEditLogSize_num_ops",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/getFileInfo_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.GetFileInfoAvgTime",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/getFileInfo_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.GetFileInfoNumOps",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/getListing_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.GetListingAvgTime",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/getListing_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.GetListingNumOps",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/getProtocolVersion_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.getProtocolVersion_avg_time",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/getProtocolVersion_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.getProtocolVersion_num_ops",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/mkdirs_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.MkdirsAvgTime",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/mkdirs_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.MkdirsNumOps",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/register_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.register_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/register_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.register_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/rename_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.RenameAvgTime",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/rename_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.RenameNumOps",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/renewLease_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.renewLease_avg_time",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/renewLease_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.renewLease_num_ops",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/rollEditLog_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.RollEditLogAvgTime",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/rollEditLog_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.RollEditLogNumOps",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/rollFsImage_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.rollFsImage_avg_time",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/rollFsImage_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.rollFsImage_num_ops",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/sendHeartbeat_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.SendHeartbeatAvgTime",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/sendHeartbeat_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.SendHeartbeatNumOps",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/setOwner_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.SetOwnerAvgTime",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/setOwner_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.SetOwnerNumOps",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/setPermission_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.SetPermissionAvgTime",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/setPermission_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.SetPermissionNumOps",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/setReplication_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.setReplication_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/setReplication_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.setReplication_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/setSafeMode_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.SetSafeModeAvgTime",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/setSafeMode_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.SetSafeModeNumOps",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/versionRequest_avg_time":{
+        "metric":"rpcdetailed.rpcdetailed.VersionRequestAvgTime",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpcdetailed/versionRequest_num_ops":{
+        "metric":"rpcdetailed.rpcdetailed.VersionRequestNumOps",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/ugi/loginFailure_avg_time":{
+        "metric":"ugi.ugi.loginFailure_avg_time",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/ugi/loginFailure_num_ops":{
+        "metric":"ugi.ugi.loginFailure_num_ops",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/ugi/loginSuccess_avg_time":{
+        "metric":"ugi.ugi.loginSuccess_avg_time",
+        "pointInTime":false,
+        "temporal":true
+      },
+      "metrics/ugi/loginSuccess_num_ops":{
+        "metric":"ugi.ugi.loginSuccess_num_ops",
+        "pointInTime":false,
+        "temporal":true
+      }
+    },
+
+    "DATANODE":{
+
+      "metrics/boottime":{
+        "metric":"boottime",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/cpu/cpu_aidle":{
+        "metric":"cpu_aidle",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/cpu/cpu_idle":{
+        "metric":"cpu_idle",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/cpu/cpu_nice":{
+        "metric":"cpu_nice",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/cpu/cpu_num":{
+        "metric":"cpu_num",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/cpu/cpu_speed":{
+        "metric":"cpu_speed",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/cpu/cpu_system":{
+        "metric":"cpu_system",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/cpu/cpu_user":{
+        "metric":"cpu_user",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/cpu/cpu_wio":{
+        "metric":"cpu_wio",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/blockChecksumOp_avg_time":{
+        "metric":"dfs.datanode.blockChecksumOp_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/blockChecksumOp_num_ops":{
+        "metric":"dfs.datanode.blockChecksumOp_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/blockReports_avg_time":{
+        "metric":"dfs.datanode.BlockReportsAvgTime",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/blockReports_num_ops":{
+        "metric":"dfs.datanode.BlockReportsNumOps",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/block_verification_failures":{
+        "metric":"dfs.datanode.block_verification_failures",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/blocks_get_local_pathinfo":{
+        "metric":"dfs.datanode.blocks_get_local_pathinfo",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/blocks_read":{
+        "metric":"dfs.datanode.blocks_read",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/blocks_removed":{
+        "metric":"dfs.datanode.blocks_removed",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/blocks_replicated":{
+        "metric":"dfs.datanode.blocks_replicated",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/blocks_verified":{
+        "metric":"dfs.datanode.BlocksVerified",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/blocks_written":{
+        "metric":"dfs.datanode.BlocksWritten",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/bytes_read":{
+        "metric":"dfs.datanode.bytes_read",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/bytes_written":{
+        "metric":"dfs.datanode.BytesWritten",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/copyBlockOp_avg_time":{
+        "metric":"dfs.datanode.copyBlockOp_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/copyBlockOp_num_ops":{
+        "metric":"dfs.datanode.copyBlockOp_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/heartBeats_avg_time":{
+        "metric":"dfs.datanode.HeartbeatsAvgTime",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/heartBeats_num_ops":{
+        "metric":"dfs.datanode.HeartbeatsNumOps",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/readBlockOp_avg_time":{
+        "metric":"dfs.datanode.readBlockOp_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/readBlockOp_num_ops":{
+        "metric":"dfs.datanode.readBlockOp_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/reads_from_local_client":{
+        "metric":"dfs.datanode.reads_from_local_client",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/reads_from_remote_client":{
+        "metric":"dfs.datanode.reads_from_remote_client",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/replaceBlockOp_avg_time":{
+        "metric":"dfs.datanode.replaceBlockOp_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/replaceBlockOp_num_ops":{
+        "metric":"dfs.datanode.replaceBlockOp_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/writeBlockOp_avg_time":{
+        "metric":"dfs.datanode.WriteBlockOpAvgTime",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/writeBlockOp_num_ops":{
+        "metric":"dfs.datanode.WriteBlockOpNumOps",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/writes_from_local_client":{
+        "metric":"dfs.datanode.WritesFromLocalClient",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/dfs/datanode/writes_from_remote_client":{
+        "metric":"dfs.datanode.writes_from_remote_client",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/disk/disk_free":{
+        "metric":"disk_free",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/disk/disk_total":{
+        "metric":"disk_total",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/disk/part_max_used":{
+        "metric":"part_max_used",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/gcCount":{
+        "metric":"jvm.JvmMetrics.GcCount",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/gcTimeMillis":{
+        "metric":"jvm.JvmMetrics.GcTimeMillis",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/logError":{
+        "metric":"jvm.JvmMetrics.LogError",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/logFatal":{
+        "metric":"jvm.JvmMetrics.LogFatal",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/logInfo":{
+        "metric":"jvm.JvmMetrics.LogInfo",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/logWarn":{
+        "metric":"jvm.JvmMetrics.LogWarn",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/maxMemoryM":{
+        "metric":"jvm.metrics.maxMemoryM",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/memHeapCommittedM":{
+        "metric":"jvm.JvmMetrics.MemHeapCommittedM",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/memHeapUsedM":{
+        "metric":"jvm.JvmMetrics.MemHeapUsedM",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/memNonHeapCommittedM":{
+        "metric":"jvm.JvmMetrics.MemNonHeapCommittedM",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/memNonHeapUsedM":{
+        "metric":"jvm.JvmMetrics.MemNonHeapUsedM",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/threadsBlocked":{
+        "metric":"jvm.JvmMetrics.ThreadsBlocked",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/threadsNew":{
+        "metric":"jvm.JvmMetrics.ThreadsNew",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/threadsRunnable":{
+        "metric":"jvm.JvmMetrics.ThreadsRunnable",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/threadsTerminated":{
+        "metric":"jvm.JvmMetrics.ThreadsTerminated",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/threadsTimedWaiting":{
+        "metric":"jvm.JvmMetrics.ThreadsTimedWaiting",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/jvm/threadsWaiting":{
+        "metric":"jvm.JvmMetrics.ThreadsWaiting",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/load/load_fifteen":{
+        "metric":"load_fifteen",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/load/load_five":{
+        "metric":"load_five",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/load/load_one":{
+        "metric":"load_one",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/memory/mem_buffers":{
+        "metric":"mem_buffers",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/memory/mem_cached":{
+        "metric":"mem_cached",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/memory/mem_free":{
+        "metric":"mem_free",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/memory/mem_shared":{
+        "metric":"mem_shared",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/memory/mem_total":{
+        "metric":"mem_total",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/memory/swap_free":{
+        "metric":"swap_free",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/memory/swap_total":{
+        "metric":"swap_total",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/network/bytes_in":{
+        "metric":"bytes_in",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/network/bytes_out":{
+        "metric":"bytes_out",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/network/pkts_in":{
+        "metric":"pkts_in",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/network/pkts_out":{
+        "metric":"pkts_out",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/process/proc_run":{
+        "metric":"proc_run",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/process/proc_total":{
+        "metric":"proc_total",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/NumOpenConnections":{
+        "metric":"rpc.rpc.NumOpenConnections",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/ReceivedBytes":{
+        "metric":"rpc.rpc.ReceivedBytes",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/RpcProcessingTime_avg_time":{
+        "metric":"rpc.rpc.RpcProcessingTimeAvgTime",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/RpcProcessingTime_num_ops":{
+        "metric":"rpc.rpc.RpcProcessingTimeNumOps",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/RpcQueueTime_avg_time":{
+        "metric":"rpc.rpc.RpcQueueTimeAvgTime",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/RpcQueueTime_num_ops":{
+        "metric":"rpc.rpc.RpcQueueTimeNumOps",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/RpcSlowResponse_avg_time":{
+        "metric":"rpc.rpc.RpcSlowResponse_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/RpcSlowResponse_num_ops":{
+        "metric":"rpc.rpc.RpcSlowResponse_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/SentBytes":{
+        "metric":"rpc.rpc.SentBytes",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/abort/aboveOneSec/_avg_time":{
+        "metric":"rpc.rpc.abort.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/abort/aboveOneSec/_num_ops":{
+        "metric":"rpc.rpc.abort.aboveOneSec._num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/abort_avg_time":{
+        "metric":"rpc.rpc.abort_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/abort_num_ops":{
+        "metric":"rpc.rpc.abort_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/addColumn_avg_time":{
+        "metric":"rpc.rpc.addColumn_avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/addColumn_num_ops":{
+        "metric":"rpc.rpc.addColumn_num_ops",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/addToOnlineRegions/aboveOneSec/_avg_time":{
+        "metric":"rpc.rpc.addToOnlineRegions.aboveOneSec._avg_time",
+        "pointInTime":true,
+        "temporal":true
+      },
+      "metrics/rpc/addToOnlineRegions/aboveOneSec/_num_ops":{
+        "metric":"rpc.rpc.addToOnlineRegio

<TRUNCATED>

[06/14] AMBARI-2677. Merge from branch-1.4.0 (ncole)

Posted by nc...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/deploy_HDP2.sh
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/deploy_HDP2.sh b/ambari-server/src/test/resources/deploy_HDP2.sh
index 3ee0e3f..f603117 100644
--- a/ambari-server/src/test/resources/deploy_HDP2.sh
+++ b/ambari-server/src/test/resources/deploy_HDP2.sh
@@ -19,7 +19,7 @@ curl -i -X POST -d '{"Clusters": {"version" : "HDP-2.0.1"}}' -u admin:admin http
 echo "-----------------------Cluster-----------------------"
 curl -i -X POST -d '[{"ServiceInfo":{"service_name":"HDFS"}},{"ServiceInfo":{"service_name":"YARN"}}, {"ServiceInfo":{"service_name":"MAPREDUCEv2"}}, {"ServiceInfo":{"service_name":"TEZ"}}]' -u admin:admin http://localhost:8080/api/v1/clusters/c1/services
 echo "-----------------------Services-----------------------"
-curl -i -X PUT -d '{"Clusters":{"desired_configs":{"type":"global","tag":"version1","properties":{"dfs_name_dir":"/grid/0/hadoop/hdfs/namenode,/grid/1/hadoop/hdfs/namenode","fs_checkpoint_dir":"/grid/0/hadoop/hdfs/namesecondary","dfs_data_dir":"/grid/0/hadoop/hdfs/data,/grid/1/hadoop/hdfs/data","hdfs_log_dir_prefix":"/var/log/hadoop","hadoop_pid_dir_prefix":"/var/run/hadoop","dfs_webhdfs_enabled":false,"hadoop_heapsize":"1024","namenode_heapsize":"1024m","namenode_opt_newsize":"200m","namenode_opt_maxnewsize":"640m","datanode_du_reserved":"1","dtnode_heapsize":"1024m","dfs_datanode_failed_volume_tolerated":"0","fs_checkpoint_period":"21600","fs_checkpoint_size":"0.5","dfs_exclude":"","dfs_include":"","dfs_replication":"3","dfs_block_local_path_access_user":"hbase","dfs_datanode_data_dir_perm":"750","security_enabled":false,"kerberos_domain":"EXAMPLE.COM","kadmin_pw":"","keytab_path":"/etc/security/keytabs","namenode_formatted_mark_dir":"/var/run/hadoop/hdfs/namenode/formatted/","hca
 t_conf_dir":"","mapred_local_dir":"/grid/0/hadoop/mapred,/grid/1/hadoop/mapred","mapred_system_dir":"/mapred/system","scheduler_name":"org.apache.hadoop.mapred.CapacityTaskScheduler","jtnode_opt_newsize":"200m","jtnode_opt_maxnewsize":"200m","jtnode_heapsize":"1024m","mapred_map_tasks_max":"4","mapred_red_tasks_max":"2","mapred_cluster_map_mem_mb":"-1","mapred_cluster_red_mem_mb":"-1","mapred_cluster_max_map_mem_mb":"-1","mapred_cluster_max_red_mem_mb":"-1","mapred_job_map_mem_mb":"-1","mapred_job_red_mem_mb":"-1","mapred_child_java_opts_sz":"768","io_sort_mb":"200","io_sort_spill_percent":"0.9","mapreduce_userlog_retainhours":"24","maxtasks_per_job":"-1","lzo_enabled":false,"snappy_enabled":true,"rca_enabled":true,"mapred_hosts_exclude":"mapred.exclude","mapred_hosts_include":"mapred.include","mapred_jobstatus_dir":"file:////mapred/jobstatus","task_controller":"org.apache.hadoop.mapred.DefaultTaskController","hbase_conf_dir":"/etc/hbase","proxyuser_group":"users","dfs_datanode_addr
 ess":"50010","dfs_datanode_http_address":"50075","gpl_artifacts_download_url":"","apache_artifacts_download_url":"","ganglia_runtime_dir":"/var/run/ganglia/hdp","gmetad_user":"nobody","gmond_user":"nobody","java64_home":"/usr/jdk/jdk1.6.0_31","run_dir":"/var/run/hadoop","hadoop_conf_dir":"/etc/hadoop","hdfs_user":"hdfs","mapred_user":"mapred","hbase_user":"hbase","hive_user":"hive","hcat_user":"hcat","webhcat_user":"hcat","oozie_user":"oozie","zk_user":"zookeeper","smokeuser":"ambari-qa","user_group":"hadoop","rrdcached_base_dir":"/var/lib/ganglia/rrds"}}}}' -u admin:admin http://localhost:8080/api/v1/clusters/c1
+curl -i -X PUT -d '{"Clusters":{"desired_configs":{"type":"global","tag":"version1","properties":{"hive_lib":"/usr/lib/hive/lib/","hadoop_heapsize":"1024","hive_log_dir":"/var/log/hive","dfs_datanode_http_address":"50075","zk_user":"zookeeper","dfs_data_dir":"/grid/0/hadoop/hdfs/data,/grid/1/hadoop/hdfs/data","clientPort":"2181","hdfs_user":"hdfs","hive_dbroot":"/usr/lib/hive/lib","dfs_name_dir":"/grid/0/hadoop/hdfs/namenode,/grid/1/hadoop/hdfs/namenode","hfile_blockcache_size":"0.25","kadmin_pw":"","gmond_user":"nobody","hregion_majorcompaction":"86400000","user_group":"hadoop","dfs_datanode_failed_volume_tolerated":"0","zk_pid_file":"/var/run/zookeeper/zookeeper_server.pid","zookeeper_sessiontimeout":"60000","hcat_user":"hcat","zk_log_dir":"/var/log/zookeeper","oozie_derby_database":"Derby","hbase_conf_dir":"/etc/hbase","oozie_data_dir":"/grid/0/hadoop/oozie/data","dfs_replication":"3","fs_checkpoint_period":"21600","hive_database_type":"mysql","hbase_hdfs_root_dir":"/apps/hbase/d
 ata","run_dir":"/var/run/hadoop","oozie_log_dir":"/var/log/oozie","hbase_pid_dir":"/var/run/hbase","hive_user":"hive","security_enabled":"false","dfs_datanode_address":"50010","dfs_block_local_path_access_user":"hbase","dfs_datanode_data_dir_perm":"750","nagios_web_password":"admin","dtnode_heapsize":"1024m","tickTime":"2000","oozie_database":"New Derby Database","regionserver_memstore_upperlimit":"0.4","datanode_du_reserved":"1","hbase_tmp_dir":"/var/log/hbase","java64_home":"/usr/jdk/jdk1.6.0_31","oozie_user":"oozie","hive_metastore_port":"9083","namenode_heapsize":"1024m","nagios_contact":"a@d.m","oozie_JPAService_url":"${oozie.data.dir}/${oozie.db.schema.name}-db;create\u003dtrue","hive_ambari_database":"MySQL","oozie_jdbc_driver":"org.apache.derby.jdbc.EmbeddedDriver","zk_data_dir":"/grid/0/hadoop/zookeeper","hive_pid_dir":"/var/run/hive","mysql_connector_url":"${download_url}/mysql-connector-java-5.1.18.zip","hregion_blockmultiplier":"2","oozie_pid_dir":"/var/run/oozie","gpl_a
 rtifacts_download_url":"","gmetad_user":"nobody","oozie_metastore_user_name":"oozie","hive_metastore_user_passwd":"admin","hcat_log_dir":"/var/log/webhcat","hive_hostname":"HOST","syncLimit":"5","mapred_user":"mapred","fs_checkpoint_size":"0.5","initLimit":"10","hive_database":"New MySQL Database","hive_jdbc_driver":"com.mysql.jdbc.Driver","hive_conf_dir":"/etc/hive/conf","hdfs_log_dir_prefix":"/var/log/hadoop","keytab_path":"/etc/security/keytabs","proxyuser_group":"users","hive_database_name":"hive","client_scannercaching":"100","hcat_pid_dir":"/var/run/webhcat","hdfs_enable_shortcircuit_read":"true","kerberos_domain":"EXAMPLE.COM","nagios_group":"nagios","hdfs_support_append":"true","nagios_web_login":"nagiosadmin","oozie_database_type":"derby","namenode_formatted_mark_dir":"/var/run/hadoop/hdfs/namenode/formatted/","dfs_exclude":"dfs.exclude","namenode_opt_maxnewsize":"640m","oozie_database_name":"oozie","regionserver_memstore_lab":"true","namenode_opt_newsize":"200m","smokeuser
 ":"ambari-qa","nagios_user":"nagios","hcat_conf_dir":"","regionserver_memstore_lowerlimit":"0.35","apache_artifacts_download_url":"","hive_metastore_user_name":"hive","hstore_blockingstorefiles":"7","hadoop_conf_dir":"/etc/hadoop","oozie_metastore_user_passwd":"admin","hbase_user":"hbase","ganglia_runtime_dir":"/var/run/ganglia/hdp","fs_checkpoint_dir":"/grid/0/hadoop/hdfs/namesecondary","zk_pid_dir":"/var/run/zookeeper","hfile_max_keyvalue_size":"10485760","hive_aux_jars_path":"/usr/lib/hcatalog/share/hcatalog/hcatalog-core.jar","hstore_compactionthreshold":"3","hregion_memstoreflushsize":"134217728","hadoop_pid_dir_prefix":"/var/run/hadoop","hbase_log_dir":"/var/log/hbase","webhcat_user":"hcat","regionserver_handlers":"30","hbase_regionserver_heapsize":"1024m","dfs_include":"dfs.include","dfs_webhdfs_enabled":"true","rrdcached_base_dir":"/var/lib/ganglia/rrds","hstorefile_maxsize":"1073741824","hbase_master_heapsize":"1024m"}}}}' -u admin:admin http://localhost:8080/api/v1/cluster
 s/c1
 echo "-----------------------Global configs-----------------------"
 curl -i -X PUT -d `echo '{"Clusters":{"desired_configs":{"type":"core-site","tag":"version1","properties":{"io.file.buffer.size":"131072","io.serializations":"org.apache.hadoop.io.serializer.WritableSerialization","io.compression.codecs":"","io.compression.codec.lzo.class":"com.hadoop.compression.lzo.LzoCodec","fs.default.name":"hdfs://HOST:8020","fs.trash.interval":"360","fs.checkpoint.dir":"","fs.checkpoint.edits.dir":"${fs.checkpoint.dir}","fs.checkpoint.period":"21600","fs.checkpoint.size":"536870912","ipc.client.idlethreshold":"8000","ipc.client.connection.maxidletime":"30000","ipc.client.connect.max.retries":"50","webinterface.private.actions":"false","hadoop.security.authentication":"","hadoop.security.authorization":"","hadoop.security.auth_to_local":""}}}}' | sed s/HOST/$HOST/g` -u admin:admin http://localhost:8080/api/v1/clusters/c1
 echo "-----------------------core-site-----------------------"
@@ -33,6 +33,17 @@ curl -i -X PUT -d '{"Clusters":{"desired_configs":{"type":"mapred-site","tag":"v
 echo "-----------------------mapred-site-----------------------"
 curl -i -X PUT -d `echo '{"Clusters":{"desired_configs":{"type":"yarn-site","tag":"version1","properties":{"yarn.resourcemanager.resource-tracker.address":"HOST:8025","yarn.resourcemanager.scheduler.address":"HOST:8030","yarn.resourcemanager.address":"HOST:8050","yarn.resourcemanager.admin.address":"HOST:8141","yarn.resourcemanager.scheduler.class":"org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler","yarn.scheduler.minimum-allocation-mb":"1024","yarn.scheduler.maximum-allocation-mb":"8192","yarn.nodemanager.address":"0.0.0.0:45454","yarn.nodemanager.local-dirs":"/yarn/loc/dir","yarn.nodemanager.resource.memory-mb":"8192","yarn.application.classpath":"/etc/hadoop/conf,/usr/lib/hadoop/*,/usr/lib/hadoop/lib/*,/usr/lib/hadoop-hdfs/*,/usr/lib/hadoop-hdfs/lib/*,/usr/lib/hadoop-yarn/*,/usr/lib/hadoop-yarn/lib/*,/usr/lib/hadoop-mapreduce/*,/usr/lib/hadoop-mapreduce/lib/*,/usr/lib/ambari-server/*","yarn.nodemanager.vmem-pmem-ratio":"2.1","yarn.nodemanager.con
 tainer-executor.class":"org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor","yarn.nodemanager.aux-services":"mapreduce.shuffle","yarn.nodemanager.aux-services.class":"org.apache.hadoop.mapred.ShuffleHandler","yarn.nodemanager.log-dirs":"/var/log/hadoop-yarn/yarn","yarn.nodemanager.container-monitor.interval-ms":"3000","yarn.nodemanager.health-checker.script.path":"/etc/hadoop/conf/health_check","yarn.nodemanager.health-checker.interval-ms":"135000","yarn.nodemanager.health-checker.script.timeout-ms":"60000","yarn.nodemanager.log.retain-second":"604800","yarn.log-aggregation-enable":"true","yarn.nodemanager.remote-app-log-dir":"/app-logs","yarn.nodemanager.remote-app-log-dir-suffix":"logs","yarn.nodemanager.log-aggregation.compression-type":"gz","yarn.nodemanager.delete.debug-delay-sec":"36000"}}}}'| sed s/HOST/$HOST/g` -u admin:admin http://localhost:8080/api/v1/clusters/c1
 echo "-----------------------yarn-site-----------------------"
+curl -i -X PUT -d `echo '{"Clusters":{"desired_configs":{"type":"hive-site","tag":"version1","properties":{"hive.security.authorization.manager":"org.apache.hcatalog.security.HdfsAuthorizationProvider","hive.metastore.warehouse.dir":"/apps/hive/warehouse","hive.metastore.execute.setugi":"true","javax.jdo.option.ConnectionDriverName":"com.mysql.jdbc.Driver","hive.security.authorization.enabled":"true","hadoop.clientside.fs.operations":"true","hive.semantic.analyzer.factory.impl":"org.apache.hivealog.cli.HCatSemanticAnalyzerFactory","fs.hdfs.impl.disable.cache":"true","hive.server2.enable.doAs":"true","hive.metastore.client.socket.timeout":"60","hive.metastore.cache.pinobjtypes":"Table,Database,Type,FieldSchema,Order","hive.metastore.local":"false","javax.jdo.option.ConnectionUserName":"hive","javax.jdo.option.ConnectionPassword":"admin","hive.metastore.uris":"thrift://HOST:9083","javax.jdo.option.ConnectionURL":"jdbc:mysql://HOST/hive?createDatabaseIfNotExist=true"}}}}'| sed s/HOST/$
 HOST/g` -u admin:admin http://localhost:8080/api/v1/clusters/c1
+echo "-----------------------hive-site-----------------------"
+curl -i -X PUT -d `echo '{"Clusters":{"desired_configs":{"type":"webhcat-site","tag":"version1","properties":{"templeton.hcat":"/usr/bin/hcat","templeton.storage.class":"org.apache.hcatalog.templeton.tool.ZooKeeperStorage","templeton.jar":"/usr/lib/hcatalog/share/webhcat/svr/webhcat.jar","templeton.streaming.jar":"hdfs:///apps/webhcat/hadoop-streaming.jar","templeton.exec.timeout":"60000","templeton.hive.properties":"hive.metastore.local\u003dfalse,hive.metastore.uris\u003dthrift://HOST:9083,hive.metastore.sasl.enabled\u003dyes,hive.metastore.execute.setugi\u003dtrue","templeton.override.enabled":"false","templeton.pig.path":"pig.tar.gz/pig/bin/pig","templeton.hive.archive":"hdfs:///apps/webhcat/hive.tar.gz","templeton.port":"50111","templeton.libjars":"/usr/lib/zookeeper/zookeeper.jar","templeton.hadoop":"/usr/bin/hadoop","templeton.pig.archive":"hdfs:///apps/webhcat/pig.tar.gz","templeton.zookeeper.hosts":"HOST:2181","templeton.hive.path":"hive.tar.gz/hive/bin/hive","templeton.had
 oop.conf.dir":"/etc/hadoop/conf"}}}}'| sed s/HOST/$HOST/g` -u admin:admin http://localhost:8080/api/v1/clusters/c1
+echo "-----------------------webhcat-site-----------------------"
+curl -i -X PUT -d `echo '{"Clusters":{"desired_configs":{"type":"oozie-site","tag":"version1","properties":{"oozie.service.AuthorizationService.security.enabled":"true","oozie.service.PurgeService.purge.interval":"3600","oozie.service.PurgeService.older.than":"30","oozie.system.id":"oozie-${user.name}","oozie.service.coord.normal.default.timeout":"120","oozie.service.JPAService.pool.max.active.conn":"10","oozie.authentication.type":"simple","use.system.libpath.for.mapreduce.and.pig.jobs":"false","oozie.service.CallableQueueService.callable.concurrency":"3","oozie.service.CallableQueueService.threads":"10","oozie.base.url":"http://HOST:11000/oozie","oozie.service.CallableQueueService.queue.size":"1000","oozie.service.JPAService.jdbc.username":"oozie","oozie.authentication.kerberos.name.rules":"\n        RULE:[2:$1@$0]([jt]t@.*TODO-KERBEROS-DOMAIN)s/.*/TODO-MAPREDUSER/\n        RULE:[2:$1@$0]([nd]n@.*TODO-KERBEROS-DOMAIN)s/.*/TODO-HDFSUSER/\n        RULE:[2:$1@$0](hm@.*TODO-KERBEROS-D
 OMAIN)s/.*/TODO-HBASE-USER/\n        RULE:[2:$1@$0](rs@.*TODO-KERBEROS-DOMAIN)s/.*/TODO-HBASE-USER/\n        DEFAULT\n        ","oozie.service.SchemaService.wf.ext.schemas":"shell-action-0.1.xsd,email-action-0.1.xsd,hive-action-0.2.xsd,sqoop-action-0.2.xsd,ssh-action-0.1.xsd,distcp-action-0.1.xsd","oozie.service.HadoopAccessorService.nameNode.whitelist":" ","oozie.service.WorkflowAppService.system.libpath":"/user/${user.name}/share/lib","oozie.systemmode":"NORMAL","oozie.service.JPAService.create.db.schema":"false","oozie.service.JPAService.jdbc.password":"admin","oozie.service.HadoopAccessorService.jobTracker.whitelist":" ","oozie.db.schema.name":"oozie","oozie.service.JPAService.jdbc.url":"jdbc:derby:${oozie.data.dir}/${oozie.db.schema.name}-db;create\u003dtrue","oozie.service.JPAService.jdbc.driver":"org.apache.derby.jdbc.EmbeddedDriver","oozie.service.HadoopAccessorService.hadoop.configurations":"*\u003d/etc/hadoop/conf","oozie.service.ActionService.executor.ext.classes":"\n    
         org.apache.oozie.action.email.EmailActionExecutor,\n            org.apache.oozie.action.hadoop.HiveActionExecutor,\n            org.apache.oozie.action.hadoop.ShellActionExecutor,\n            org.apache.oozie.action.hadoop.SqoopActionExecutor,\n            org.apache.oozie.action.hadoop.DistcpActionExecutor\n        "}}}}'| sed s/HOST/$HOST/g` -u admin:admin http://localhost:8080/api/v1/clusters/c1
+echo "-----------------------oozie-site-----------------------"
+curl -i -X PUT -d `echo '{"Clusters":{"desired_configs":{"type":"capacity-scheduler","tag":"version1", "properties":{"yarn.scheduler.capacity.maximum-applications":"10000","yarn.scheduler.capacity.maximum-am-resource-percent":"0.1", "yarn.scheduler.capacity.root.queues":"default","yarn.scheduler.capacity.root.capacity":"100", "yarn.scheduler.capacity.root.default.capacity":"100","yarn.scheduler.capacity.root.default.user-limit-factor":"1", "yarn.scheduler.capacity.root.default.maximum-capacity":"100": "yarn.scheduler.capacity.root.default.state":"RUNNING","yarn.scheduler.capacity.root.default.acl_submit_jobs":"*", "yarn.scheduler.capacity.root.default.acl_administer_jobs":"*", "yarn.scheduler.capacity.root.acl_administer_queues":"*","yarn.scheduler.capacity.root.unfunded.capacity":"50"}}}}'| sed s/HOST/$HOST/g` -u admin:admin http://localhost:8080/api/v1/clusters/c1
+echo "-----------------------capacity-sscheduler-----------------------"
+curl -i -X POST -d '[{"ServiceInfo":{"service_name":"HIVE"}},{"ServiceInfo":{"service_name":"HCATALOG"}},{"ServiceInfo":{"service_name":"WEBHCAT"}}]' -u admin:admin http://localhost:8080/api/v1/clusters/c1/services
+
+
 
 curl -i -X POST -d '{"components":[{"ServiceComponentInfo":{"component_name":"NAMENODE"}},{"ServiceComponentInfo":{"component_name":"SECONDARY_NAMENODE"}},{"ServiceComponentInfo":{"component_name":"DATANODE"}},{"ServiceComponentInfo":{"component_name":"HDFS_CLIENT"}}]}' -u admin:admin http://localhost:8080/api/v1/clusters/c1/services?ServiceInfo/service_name=HDFS
 echo "-----------------------HDFS components-----------------------"
@@ -42,6 +53,13 @@ curl -i -X POST -d '{"components":[{"ServiceComponentInfo":{"component_name":"HI
 echo "-----------------------MAPREDUCEv2 components-----------------------"
 curl -i -X POST -d '{"components":[{"ServiceComponentInfo":{"component_name":"TEZ_CLIENT"}}]}' -u admin:admin http://localhost:8080/api/v1/clusters/c1/services?ServiceInfo/service_name=TEZ
 echo "-----------------------TEZ components-----------------------"
+curl -i -X POST -d '{"components":[{"ServiceComponentInfo":{"component_name":"HIVE_CLIENT"}},{"ServiceComponentInfo":{"component_name":"MYSQL_SERVER"}},{"ServiceComponentInfo":{"component_name":"HIVE_SERVER"}},{"ServiceComponentInfo":{"component_name":"HIVE_METASTORE"}}]}' -u admin:admin http://localhost:8080/api/v1/clusters/c1/services?ServiceInfo/service_name=HIVE
+echo "-----------------------HIVE components-----------------------"
+curl -i -X POST -d '{"components":[{"ServiceComponentInfo":{"component_name":"HCAT"}}]}' -u admin:admin http://localhost:8080/api/v1/clusters/c1/services?ServiceInfo/service_name=HCATALOG
+echo "-----------------------HCATALOG components-----------------------"
+curl -i -X POST -d '{"components":[{"ServiceComponentInfo":{"component_name":"WEBHCAT_SERVER"}}]}' -u admin:admin http://localhost:8080/api/v1/clusters/c1/services?ServiceInfo/service_name=WEBHCAT
+echo "-----------------------HCATALOG components-----------------------"
+
 curl -i -X POST -d `echo '[{"Hosts":{"host_name":"HOST"}}]' | sed s/HOST/$HOST/` -u admin:admin http://localhost:8080/api/v1/clusters/c1/hosts
 echo "-----------------------Hosts-----------------------"
 curl -i -X POST -d '{"host_components":[{"HostRoles":{"component_name":"NAMENODE"}}]}' -u admin:admin http://localhost:8080/api/v1/clusters/c1/hosts?Hosts/host_name=$HOST
@@ -53,7 +71,14 @@ curl -i -X POST -d '{"host_components":[{"HostRoles":{"component_name":"NODEMANA
 curl -i -X POST -d '{"host_components":[{"HostRoles":{"component_name":"YARN_CLIENT"}}]}' -u admin:admin http://localhost:8080/api/v1/clusters/c1/hosts?Hosts/host_name=$HOST
 curl -i -X POST -d '{"host_components":[{"HostRoles":{"component_name":"HISTORYSERVER"}}]}' -u admin:admin http://localhost:8080/api/v1/clusters/c1/hosts?Hosts/host_name=$HOST
 curl -i -X POST -d '{"host_components":[{"HostRoles":{"component_name":"TEZ_CLIENT"}}]}' -u admin:admin http://localhost:8080/api/v1/clusters/c1/hosts?Hosts/host_name=$HOST
+curl -i -X POST -d '{"host_components":[{"HostRoles":{"component_name":"HIVE_CLIENT"}}]}' -u admin:admin http://localhost:8080/api/v1/clusters/c1/hosts?Hosts/host_name=$HOST
+curl -i -X POST -d '{"host_components":[{"HostRoles":{"component_name":"MYSQL_SERVER"}}]}' -u admin:admin http://localhost:8080/api/v1/clusters/c1/hosts?Hosts/host_name=$HOST
+curl -i -X POST -d '{"host_components":[{"HostRoles":{"component_name":"HIVE_SERVER"}}]}' -u admin:admin http://localhost:8080/api/v1/clusters/c1/hosts?Hosts/host_name=$HOST
+curl -i -X POST -d '{"host_components":[{"HostRoles":{"component_name":"HIVE_METASTORE"}}]}' -u admin:admin http://localhost:8080/api/v1/clusters/c1/hosts?Hosts/host_name=$HOST
+curl -i -X POST -d '{"host_components":[{"HostRoles":{"component_name":"HCAT"}}]}' -u admin:admin http://localhost:8080/api/v1/clusters/c1/hosts?Hosts/host_name=$HOST
+curl -i -X POST -d '{"host_components":[{"HostRoles":{"component_name":"WEBHCAT_SERVER"}}]}' -u admin:admin http://localhost:8080/api/v1/clusters/c1/hosts?Hosts/host_name=$HOST
 echo "-----------------------Components to hosts-----------------------"
+
 curl -i -X PUT -d  '{"RequestInfo": {"context" :"Installing Services"}, "Body": {"ServiceInfo": {"state": "INSTALLED"}}}' -u admin:admin http://localhost:8080/api/v1/clusters/c1/services?ServiceInfo/state=INIT
 echo "-----------------------Installation requested-----------------------"
 

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/resourcemanager_jmx.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/resourcemanager_jmx.json b/ambari-server/src/test/resources/resourcemanager_jmx.json
new file mode 100644
index 0000000..4a5453b
--- /dev/null
+++ b/ambari-server/src/test/resources/resourcemanager_jmx.json
@@ -0,0 +1,865 @@
+{
+  "beans" : [ {
+    "name" : "java.lang:type=MemoryPool,name=PS Eden Space",
+    "modelerType" : "sun.management.MemoryPoolImpl",
+    "Name" : "PS Eden Space",
+    "Type" : "HEAP",
+    "Valid" : true,
+    "CollectionUsage" : {
+      "committed" : 21233664,
+      "init" : 30081024,
+      "max" : 343408640,
+      "used" : 0
+    },
+    "CollectionUsageThreshold" : 0,
+    "CollectionUsageThresholdCount" : 0,
+    "MemoryManagerNames" : [ "PS MarkSweep", "PS Scavenge" ],
+    "PeakUsage" : {
+      "committed" : 30081024,
+      "init" : 30081024,
+      "max" : 343408640,
+      "used" : 30081024
+    },
+    "Usage" : {
+      "committed" : 21233664,
+      "init" : 30081024,
+      "max" : 343408640,
+      "used" : 2272304
+    },
+    "CollectionUsageThresholdExceeded" : true,
+    "CollectionUsageThresholdSupported" : true,
+    "UsageThresholdSupported" : false
+  }, {
+    "name" : "java.lang:type=Memory",
+    "modelerType" : "sun.management.MemoryImpl",
+    "Verbose" : false,
+    "HeapMemoryUsage" : {
+      "committed" : 101646336,
+      "init" : 120225856,
+      "max" : 932118528,
+      "used" : 10442240
+    },
+    "NonHeapMemoryUsage" : {
+      "committed" : 46333952,
+      "init" : 24313856,
+      "max" : 136314880,
+      "used" : 45975032
+    },
+    "ObjectPendingFinalizationCount" : 0
+  }, {
+    "name" : "java.lang:type=MemoryPool,name=PS Survivor Space",
+    "modelerType" : "sun.management.MemoryPoolImpl",
+    "Name" : "PS Survivor Space",
+    "Type" : "HEAP",
+    "Valid" : true,
+    "CollectionUsage" : {
+      "committed" : 196608,
+      "init" : 4980736,
+      "max" : 196608,
+      "used" : 196608
+    },
+    "CollectionUsageThreshold" : 0,
+    "CollectionUsageThresholdCount" : 0,
+    "MemoryManagerNames" : [ "PS MarkSweep", "PS Scavenge" ],
+    "PeakUsage" : {
+      "committed" : 7733248,
+      "init" : 4980736,
+      "max" : 7733248,
+      "used" : 6158776
+    },
+    "Usage" : {
+      "committed" : 196608,
+      "init" : 4980736,
+      "max" : 196608,
+      "used" : 196608
+    },
+    "CollectionUsageThresholdExceeded" : true,
+    "CollectionUsageThresholdSupported" : true,
+    "UsageThresholdSupported" : false
+  }, {
+    "name" : "Hadoop:service=ResourceManager,name=UgiMetrics",
+    "modelerType" : "UgiMetrics",
+    "tag.Context" : "ugi",
+    "tag.Hostname" : "ip-10-147-212-220.ec2.internal",
+    "LoginSuccessNumOps" : 0,
+    "LoginSuccessAvgTime" : 0.0,
+    "LoginFailureNumOps" : 0,
+    "LoginFailureAvgTime" : 0.0
+  }, {
+    "name" : "java.lang:type=GarbageCollector,name=PS MarkSweep",
+    "modelerType" : "sun.management.GarbageCollectorImpl",
+    "LastGcInfo" : null,
+    "CollectionCount" : 0,
+    "CollectionTime" : 0,
+    "Name" : "PS MarkSweep",
+    "Valid" : true,
+    "MemoryPoolNames" : [ "PS Eden Space", "PS Survivor Space", "PS Old Gen", "PS Perm Gen" ]
+  }, {
+    "name" : "Hadoop:service=ResourceManager,name=MetricsSystem,sub=Stats",
+    "modelerType" : "MetricsSystem,sub=Stats",
+    "tag.Context" : "metricssystem",
+    "NumActiveSources" : 13,
+    "NumAllSources" : 13,
+    "NumActiveSinks" : 1,
+    "NumAllSinks" : 0,
+    "Sink_gangliaNumOps" : 696,
+    "Sink_gangliaAvgTime" : 3.0,
+    "Sink_gangliaDropped" : 0,
+    "Sink_gangliaQsize" : 0,
+    "SnapshotNumOps" : 9755,
+    "SnapshotAvgTime" : 0.07142857142857144,
+    "PublishNumOps" : 696,
+    "PublishAvgTime" : 0.0,
+    "DroppedPubAll" : 0
+  }, {
+    "name" : "java.lang:type=Compilation",
+    "modelerType" : "sun.management.CompilationImpl",
+    "Name" : "HotSpot 64-Bit Tiered Compilers",
+    "CompilationTimeMonitoringSupported" : true,
+    "TotalCompilationTime" : 9152
+  }, {
+    "name" : "Hadoop:service=ResourceManager,name=RpcDetailedActivityForPort8141",
+    "modelerType" : "RpcDetailedActivityForPort8141",
+    "tag.port" : "8141",
+    "tag.Context" : "rpcdetailed",
+    "tag.Hostname" : "ip-10-147-212-220.ec2.internal"
+  }, {
+    "name" : "Hadoop:service=ResourceManager,name=RpcActivityForPort8025",
+    "modelerType" : "RpcActivityForPort8025",
+    "tag.port" : "8025",
+    "tag.Context" : "rpc",
+    "tag.Hostname" : "ip-10-147-212-220.ec2.internal",
+    "ReceivedBytes" : 1123395,
+    "SentBytes" : 144341,
+    "RpcQueueTimeNumOps" : 6881,
+    "RpcQueueTimeAvgTime" : 0.09999999999999999,
+    "RpcProcessingTimeNumOps" : 6881,
+    "RpcProcessingTimeAvgTime" : 0.20000000000000004,
+    "RpcAuthenticationFailures" : 0,
+    "RpcAuthenticationSuccesses" : 0,
+    "RpcAuthorizationFailures" : 0,
+    "RpcAuthorizationSuccesses" : 1,
+    "NumOpenConnections" : 1,
+    "CallQueueLength" : 0
+  }, {
+    "name" : "java.lang:type=OperatingSystem",
+    "modelerType" : "com.sun.management.UnixOperatingSystem",
+    "MaxFileDescriptorCount" : 32768,
+    "OpenFileDescriptorCount" : 207,
+    "CommittedVirtualMemorySize" : 1692700672,
+    "FreePhysicalMemorySize" : 4225703936,
+    "FreeSwapSpaceSize" : 0,
+    "ProcessCpuTime" : 33410000000,
+    "TotalPhysicalMemorySize" : 7694454784,
+    "TotalSwapSpaceSize" : 0,
+    "Name" : "Linux",
+    "Version" : "2.6.32-220.17.1.el6.centos.plus.x86_64",
+    "AvailableProcessors" : 2,
+    "Arch" : "amd64",
+    "SystemLoadAverage" : 0.03
+  }, {
+    "name" : "Hadoop:service=ResourceManager,name=ClusterMetrics",
+    "modelerType" : "ClusterMetrics",
+    "tag.ClusterMetrics" : "ResourceManager",
+    "tag.Context" : "yarn",
+    "tag.Hostname" : "ip-10-147-212-220.ec2.internal",
+    "NumActiveNMs" : 1,
+    "NumDecommissionedNMs" : 0,
+    "NumLostNMs" : 0,
+    "NumUnhealthyNMs" : 0,
+    "NumRebootedNMs" : 0
+  }, {
+    "name" : "java.lang:type=MemoryManager,name=CodeCacheManager",
+    "modelerType" : "sun.management.MemoryManagerImpl",
+    "Name" : "CodeCacheManager",
+    "Valid" : true,
+    "MemoryPoolNames" : [ "Code Cache" ]
+  }, {
+    "name" : "Hadoop:service=ResourceManager,name=RpcDetailedActivityForPort8025",
+    "modelerType" : "RpcDetailedActivityForPort8025",
+    "tag.port" : "8025",
+    "tag.Context" : "rpcdetailed",
+    "tag.Hostname" : "ip-10-147-212-220.ec2.internal",
+    "RegisterNodeManagerNumOps" : 1,
+    "RegisterNodeManagerAvgTime" : 31.0,
+    "NodeHeartbeatNumOps" : 6880,
+    "NodeHeartbeatAvgTime" : 0.20000000000000004
+  }, {
+    "name" : "Hadoop:service=ResourceManager,name=RpcActivityForPort8050",
+    "modelerType" : "RpcActivityForPort8050",
+    "tag.port" : "8050",
+    "tag.Context" : "rpc",
+    "tag.Hostname" : "ip-10-147-212-220.ec2.internal",
+    "ReceivedBytes" : 5936,
+    "SentBytes" : 7067,
+    "RpcQueueTimeNumOps" : 37,
+    "RpcQueueTimeAvgTime" : 0.12500000000000003,
+    "RpcProcessingTimeNumOps" : 37,
+    "RpcProcessingTimeAvgTime" : 0.875,
+    "RpcAuthenticationFailures" : 0,
+    "RpcAuthenticationSuccesses" : 0,
+    "RpcAuthorizationFailures" : 0,
+    "RpcAuthorizationSuccesses" : 2,
+    "NumOpenConnections" : 0,
+    "CallQueueLength" : 0
+  }, {
+    "name" : "java.lang:type=MemoryPool,name=Code Cache",
+    "modelerType" : "sun.management.MemoryPoolImpl",
+    "Name" : "Code Cache",
+    "Type" : "NON_HEAP",
+    "Valid" : true,
+    "CollectionUsage" : null,
+    "MemoryManagerNames" : [ "CodeCacheManager" ],
+    "PeakUsage" : {
+      "committed" : 2555904,
+      "init" : 2555904,
+      "max" : 50331648,
+      "used" : 2290560
+    },
+    "Usage" : {
+      "committed" : 2555904,
+      "init" : 2555904,
+      "max" : 50331648,
+      "used" : 2279872
+    },
+    "UsageThreshold" : 0,
+    "UsageThresholdCount" : 0,
+    "CollectionUsageThresholdSupported" : false,
+    "UsageThresholdExceeded" : true,
+    "UsageThresholdSupported" : true
+  }, {
+    "name" : "java.lang:type=Runtime",
+    "modelerType" : "sun.management.RuntimeImpl",
+    "Name" : "11065@ip-10-147-212-220.ec2.internal",
+    "ClassPath" : "/etc/hadoop/conf:/etc/hadoop/conf:/etc/hadoop/conf:/usr/lib/hadoop/lib/xmlenc-0.52.jar:/usr/lib/hadoop/lib/jasper-compiler-5.5.23.jar:/usr/lib/hadoop/lib/commons-math-2.1.jar:/usr/lib/hadoop/lib/jetty-6.1.26.jar:/usr/lib/hadoop/lib/jets3t-0.6.1.jar:/usr/lib/hadoop/lib/slf4j-api-1.6.1.jar:/usr/lib/hadoop/lib/hadoop-lzo-0.5.0.jar:/usr/lib/hadoop/lib/commons-beanutils-1.7.0.jar:/usr/lib/hadoop/lib/commons-httpclient-3.1.jar:/usr/lib/hadoop/lib/paranamer-2.3.jar:/usr/lib/hadoop/lib/ambari-log4j-1.4.0.9.jar:/usr/lib/hadoop/lib/commons-el-1.0.jar:/usr/lib/hadoop/lib/commons-collections-3.2.1.jar:/usr/lib/hadoop/lib/jasper-runtime-5.5.23.jar:/usr/lib/hadoop/lib/log4j-1.2.17.jar:/usr/lib/hadoop/lib/jsch-0.1.42.jar:/usr/lib/hadoop/lib/servlet-api-2.5.jar:/usr/lib/hadoop/lib/commons-io-2.1.jar:/usr/lib/hadoop/lib/commons-lang-2.5.jar:/usr/lib/hadoop/lib/stax-api-1.0.1.jar:/usr/lib/hadoop/lib/protobuf-java-2.4.0a.jar:/usr/lib/hadoop/lib/jsr305-1.3.9.jar:/usr/lib/hadoop/lib/p
 ostgresql-9.1-901-1.jdbc4.jar:/usr/lib/hadoop/lib/jaxb-api-2.2.2.jar:/usr/lib/hadoop/lib/asm-3.2.jar:/usr/lib/hadoop/lib/jackson-mapper-asl-1.8.8.jar:/usr/lib/hadoop/lib/jersey-server-1.8.jar:/usr/lib/hadoop/lib/jettison-1.1.jar:/usr/lib/hadoop/lib/jersey-core-1.8.jar:/usr/lib/hadoop/lib/jetty-util-6.1.26.jar:/usr/lib/hadoop/lib/commons-codec-1.4.jar:/usr/lib/hadoop/lib/commons-beanutils-core-1.8.0.jar:/usr/lib/hadoop/lib/commons-logging-1.1.1.jar:/usr/lib/hadoop/lib/snappy-java-1.0.3.2.jar:/usr/lib/hadoop/lib/jackson-jaxrs-1.8.8.jar:/usr/lib/hadoop/lib/activation-1.1.jar:/usr/lib/hadoop/lib/commons-net-3.1.jar:/usr/lib/hadoop/lib/jersey-json-1.8.jar:/usr/lib/hadoop/lib/hadoop-tools.jar:/usr/lib/hadoop/lib/slf4j-log4j12-1.6.1.jar:/usr/lib/hadoop/lib/guava-11.0.2.jar:/usr/lib/hadoop/lib/jackson-core-asl-1.8.8.jar:/usr/lib/hadoop/lib/jackson-xc-1.8.8.jar:/usr/lib/hadoop/lib/commons-digester-1.8.jar:/usr/lib/hadoop/lib/jsp-api-2.1.jar:/usr/lib/hadoop/lib/commons-configuration-1.6.jar:/
 usr/lib/hadoop/lib/avro-1.5.3.jar:/usr/lib/hadoop/lib/zookeeper-3.4.2.jar:/usr/lib/hadoop/lib/jaxb-impl-2.2.3-1.jar:/usr/lib/hadoop/lib/commons-cli-1.2.jar:/usr/lib/hadoop/.//hadoop-common-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop/.//hadoop-auth-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop/.//hadoop-annotations-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop/.//hadoop-common-2.1.0.2.0.3.0-81-tests.jar:/usr/lib/hadoop-hdfs/./:/usr/lib/hadoop-hdfs/lib/xmlenc-0.52.jar:/usr/lib/hadoop-hdfs/lib/jetty-6.1.26.jar:/usr/lib/hadoop-hdfs/lib/commons-el-1.0.jar:/usr/lib/hadoop-hdfs/lib/jasper-runtime-5.5.23.jar:/usr/lib/hadoop-hdfs/lib/log4j-1.2.17.jar:/usr/lib/hadoop-hdfs/lib/servlet-api-2.5.jar:/usr/lib/hadoop-hdfs/lib/commons-io-2.1.jar:/usr/lib/hadoop-hdfs/lib/commons-lang-2.5.jar:/usr/lib/hadoop-hdfs/lib/protobuf-java-2.4.0a.jar:/usr/lib/hadoop-hdfs/lib/jsr305-1.3.9.jar:/usr/lib/hadoop-hdfs/lib/asm-3.2.jar:/usr/lib/hadoop-hdfs/lib/commons-daemon-1.0.13.jar:/usr/lib/hadoop-hdfs/lib/jackson-mapper-asl-1.8.8.jar:/us
 r/lib/hadoop-hdfs/lib/jersey-server-1.8.jar:/usr/lib/hadoop-hdfs/lib/jersey-core-1.8.jar:/usr/lib/hadoop-hdfs/lib/jetty-util-6.1.26.jar:/usr/lib/hadoop-hdfs/lib/commons-codec-1.4.jar:/usr/lib/hadoop-hdfs/lib/commons-logging-1.1.1.jar:/usr/lib/hadoop-hdfs/lib/guava-11.0.2.jar:/usr/lib/hadoop-hdfs/lib/jackson-core-asl-1.8.8.jar:/usr/lib/hadoop-hdfs/lib/jsp-api-2.1.jar:/usr/lib/hadoop-hdfs/lib/commons-cli-1.2.jar:/usr/lib/hadoop-hdfs/.//hadoop-hdfs-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-hdfs/.//hadoop-hdfs-2.1.0.2.0.3.0-81-tests.jar:/usr/lib/hadoop-yarn/lib/guice-3.0.jar:/usr/lib/hadoop-yarn/lib/netty-3.5.11.Final.jar:/usr/lib/hadoop-yarn/lib/paranamer-2.3.jar:/usr/lib/hadoop-yarn/lib/log4j-1.2.17.jar:/usr/lib/hadoop-yarn/lib/javax.inject-1.jar:/usr/lib/hadoop-yarn/lib/commons-io-2.1.jar:/usr/lib/hadoop-yarn/lib/protobuf-java-2.4.0a.jar:/usr/lib/hadoop-yarn/lib/hamcrest-core-1.1.jar:/usr/lib/hadoop-yarn/lib/asm-3.2.jar:/usr/lib/hadoop-yarn/lib/jersey-guice-1.8.jar:/usr/lib/hadoop-yarn/li
 b/junit-4.10.jar:/usr/lib/hadoop-yarn/lib/jackson-mapper-asl-1.8.8.jar:/usr/lib/hadoop-yarn/lib/jersey-server-1.8.jar:/usr/lib/hadoop-yarn/lib/jersey-core-1.8.jar:/usr/lib/hadoop-yarn/lib/guice-servlet-3.0.jar:/usr/lib/hadoop-yarn/lib/snappy-java-1.0.3.2.jar:/usr/lib/hadoop-yarn/lib/aopalliance-1.0.jar:/usr/lib/hadoop-yarn/lib/jackson-core-asl-1.8.8.jar:/usr/lib/hadoop-yarn/lib/avro-1.5.3.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-server-web-proxy-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-server-common-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-server-tests-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-applications-distributedshell-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-applications-unmanaged-am-launcher-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-server-nodemanager-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-common-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-api-2.1.0.2.0.3.0-81.jar:/usr/l
 ib/hadoop-yarn/.//hadoop-yarn-server-resourcemanager-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-client-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-site-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/lib/guice-3.0.jar:/usr/lib/hadoop-mapreduce/lib/netty-3.5.11.Final.jar:/usr/lib/hadoop-mapreduce/lib/paranamer-2.3.jar:/usr/lib/hadoop-mapreduce/lib/log4j-1.2.17.jar:/usr/lib/hadoop-mapreduce/lib/javax.inject-1.jar:/usr/lib/hadoop-mapreduce/lib/commons-io-2.1.jar:/usr/lib/hadoop-mapreduce/lib/protobuf-java-2.4.0a.jar:/usr/lib/hadoop-mapreduce/lib/hamcrest-core-1.1.jar:/usr/lib/hadoop-mapreduce/lib/asm-3.2.jar:/usr/lib/hadoop-mapreduce/lib/jersey-guice-1.8.jar:/usr/lib/hadoop-mapreduce/lib/junit-4.10.jar:/usr/lib/hadoop-mapreduce/lib/jackson-mapper-asl-1.8.8.jar:/usr/lib/hadoop-mapreduce/lib/jersey-server-1.8.jar:/usr/lib/hadoop-mapreduce/lib/jersey-core-1.8.jar:/usr/lib/hadoop-mapreduce/lib/guice-servlet-3.0.jar:/usr/lib/hadoop-mapreduce/lib/snappy-java-1.0.3.2
 .jar:/usr/lib/hadoop-mapreduce/lib/aopalliance-1.0.jar:/usr/lib/hadoop-mapreduce/lib/jackson-core-asl-1.8.8.jar:/usr/lib/hadoop-mapreduce/lib/avro-1.5.3.jar:/usr/lib/hadoop-mapreduce/.//hadoop-gridmix-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-datajoin-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-mapreduce-client-jobclient-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-mapreduce-client-shuffle-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-streaming-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-mapreduce-client-app-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-mapreduce-client-hs-plugins-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-extras-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-rumen-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-archives-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-mapreduce-examples-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-mapreduc
 e-client-jobclient-2.1.0.2.0.3.0-81-tests.jar:/usr/lib/hadoop-mapreduce/.//hadoop-mapreduce-client-core-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-mapreduce-client-common-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-distcp-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-mapreduce-client-hs-2.1.0.2.0.3.0-81.jar::/usr/lib/hadoop-mapreduce/hadoop-gridmix-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-datajoin-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-shuffle-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-streaming-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-app-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-hs-plugins-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-extras-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-rumen-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapred
 uce/hadoop-archives-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-2.1.0.2.0.3.0-81-tests.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-core-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-common-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-distcp-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-hs-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-gridmix-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-datajoin-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-shuffle-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-streaming-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-app-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-hs-plugins-2.1.0.2.0.3.0-81.jar:/
 usr/lib/hadoop-mapreduce/hadoop-extras-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-rumen-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-archives-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-2.1.0.2.0.3.0-81-tests.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-core-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-common-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-distcp-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-hs-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-server-web-proxy-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-server-common-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-server-tests-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-applications-distributedshell-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-applications-unmanaged-am-l
 auncher-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-server-nodemanager-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-common-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-api-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-server-resourcemanager-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-client-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-site-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/lib/guice-3.0.jar:/usr/lib/hadoop-yarn/lib/netty-3.5.11.Final.jar:/usr/lib/hadoop-yarn/lib/paranamer-2.3.jar:/usr/lib/hadoop-yarn/lib/log4j-1.2.17.jar:/usr/lib/hadoop-yarn/lib/javax.inject-1.jar:/usr/lib/hadoop-yarn/lib/commons-io-2.1.jar:/usr/lib/hadoop-yarn/lib/protobuf-java-2.4.0a.jar:/usr/lib/hadoop-yarn/lib/hamcrest-core-1.1.jar:/usr/lib/hadoop-yarn/lib/asm-3.2.jar:/usr/lib/hadoop-yarn/lib/jersey-guice-1.8.jar:/usr/lib/hadoop-yarn/lib/junit-4.10.jar:/usr/lib/hadoop-yarn/lib/jackson-mapper-asl-1.8.8.jar:/usr/lib/hadoop-yarn/lib/je
 rsey-server-1.8.jar:/usr/lib/hadoop-yarn/lib/jersey-core-1.8.jar:/usr/lib/hadoop-yarn/lib/guice-servlet-3.0.jar:/usr/lib/hadoop-yarn/lib/snappy-java-1.0.3.2.jar:/usr/lib/hadoop-yarn/lib/aopalliance-1.0.jar:/usr/lib/hadoop-yarn/lib/jackson-core-asl-1.8.8.jar:/usr/lib/hadoop-yarn/lib/avro-1.5.3.jar:/etc/hadoop/conf/rm-config/log4j.properties",
+    "StartTime" : 1370624989435,
+    "BootClassPath" : "/usr/jdk/jdk1.6.0_31/jre/lib/resources.jar:/usr/jdk/jdk1.6.0_31/jre/lib/rt.jar:/usr/jdk/jdk1.6.0_31/jre/lib/sunrsasign.jar:/usr/jdk/jdk1.6.0_31/jre/lib/jsse.jar:/usr/jdk/jdk1.6.0_31/jre/lib/jce.jar:/usr/jdk/jdk1.6.0_31/jre/lib/charsets.jar:/usr/jdk/jdk1.6.0_31/jre/lib/modules/jdk.boot.jar:/usr/jdk/jdk1.6.0_31/jre/classes",
+    "LibraryPath" : "/usr/lib/hadoop/lib/native",
+    "VmName" : "Java HotSpot(TM) 64-Bit Server VM",
+    "VmVendor" : "Sun Microsystems Inc.",
+    "VmVersion" : "20.6-b01",
+    "BootClassPathSupported" : true,
+    "InputArguments" : [ "-Dproc_resourcemanager", "-Xmx1000m", "-Dhadoop.log.dir=/var/log/hadoop-yarn/yarn", "-Dyarn.log.dir=/var/log/hadoop-yarn/yarn", "-Dhadoop.log.file=yarn-yarn-resourcemanager-ip-10-147-212-220.log", "-Dyarn.log.file=yarn-yarn-resourcemanager-ip-10-147-212-220.log", "-Dyarn.home.dir=/usr/lib/hadoop-yarn", "-Dhadoop.home.dir=/usr/lib/hadoop-yarn", "-Dhadoop.root.logger=INFO,RFA", "-Dyarn.root.logger=INFO,RFA", "-Djava.library.path=/usr/lib/hadoop/lib/native" ],
+    "ManagementSpecVersion" : "1.2",
+    "SpecName" : "Java Virtual Machine Specification",
+    "SpecVendor" : "Sun Microsystems Inc.",
+    "SpecVersion" : "1.0",
+    "SystemProperties" : [ {
+      "key" : "java.ext.dirs",
+      "value" : "/usr/jdk/jdk1.6.0_31/jre/lib/ext:/usr/java/packages/lib/ext"
+    }, {
+      "key" : "hadoop.home.dir",
+      "value" : "/usr/lib/hadoop-yarn"
+    }, {
+      "key" : "java.vm.specification.vendor",
+      "value" : "Sun Microsystems Inc."
+    }, {
+      "key" : "user.timezone",
+      "value" : "UTC"
+    }, {
+      "key" : "java.vm.vendor",
+      "value" : "Sun Microsystems Inc."
+    }, {
+      "key" : "user.name",
+      "value" : "yarn"
+    }, {
+      "key" : "java.vm.specification.name",
+      "value" : "Java Virtual Machine Specification"
+    }, {
+      "key" : "user.dir",
+      "value" : "/usr/lib/hadoop-yarn"
+    }, {
+      "key" : "user.country",
+      "value" : "US"
+    }, {
+      "key" : "user.language",
+      "value" : "en"
+    }, {
+      "key" : "java.specification.version",
+      "value" : "1.6"
+    }, {
+      "key" : "yarn.log.dir",
+      "value" : "/var/log/hadoop-yarn/yarn"
+    }, {
+      "key" : "hadoop.log.file",
+      "value" : "yarn-yarn-resourcemanager-ip-10-147-212-220.log"
+    }, {
+      "key" : "sun.cpu.endian",
+      "value" : "little"
+    }, {
+      "key" : "java.home",
+      "value" : "/usr/jdk/jdk1.6.0_31/jre"
+    }, {
+      "key" : "sun.jnu.encoding",
+      "value" : "ANSI_X3.4-1968"
+    }, {
+      "key" : "file.separator",
+      "value" : "/"
+    }, {
+      "key" : "java.vendor.url",
+      "value" : "http://java.sun.com/"
+    }, {
+      "key" : "java.awt.graphicsenv",
+      "value" : "sun.awt.X11GraphicsEnvironment"
+    }, {
+      "key" : "hadoop.log.dir",
+      "value" : "/var/log/hadoop-yarn/yarn"
+    }, {
+      "key" : "os.arch",
+      "value" : "amd64"
+    }, {
+      "key" : "java.io.tmpdir",
+      "value" : "/tmp"
+    }, {
+      "key" : "java.runtime.name",
+      "value" : "Java(TM) SE Runtime Environment"
+    }, {
+      "key" : "java.awt.printerjob",
+      "value" : "sun.print.PSPrinterJob"
+    }, {
+      "key" : "yarn.root.logger",
+      "value" : "INFO,RFA"
+    }, {
+      "key" : "file.encoding",
+      "value" : "ANSI_X3.4-1968"
+    }, {
+      "key" : "java.version",
+      "value" : "1.6.0_31"
+    }, {
+      "key" : "java.vendor.url.bug",
+      "value" : "http://java.sun.com/cgi-bin/bugreport.cgi"
+    }, {
+      "key" : "proc_resourcemanager",
+      "value" : ""
+    }, {
+      "key" : "java.vm.specification.version",
+      "value" : "1.0"
+    }, {
+      "key" : "file.encoding.pkg",
+      "value" : "sun.io"
+    }, {
+      "key" : "sun.java.command",
+      "value" : "org.apache.hadoop.yarn.server.resourcemanager.ResourceManager"
+    }, {
+      "key" : "yarn.home.dir",
+      "value" : "/usr/lib/hadoop-yarn"
+    }, {
+      "key" : "sun.java.launcher",
+      "value" : "SUN_STANDARD"
+    }, {
+      "key" : "path.separator",
+      "value" : ":"
+    }, {
+      "key" : "java.runtime.version",
+      "value" : "1.6.0_31-b04"
+    }, {
+      "key" : "java.class.path",
+      "value" : "/etc/hadoop/conf:/etc/hadoop/conf:/etc/hadoop/conf:/usr/lib/hadoop/lib/xmlenc-0.52.jar:/usr/lib/hadoop/lib/jasper-compiler-5.5.23.jar:/usr/lib/hadoop/lib/commons-math-2.1.jar:/usr/lib/hadoop/lib/jetty-6.1.26.jar:/usr/lib/hadoop/lib/jets3t-0.6.1.jar:/usr/lib/hadoop/lib/slf4j-api-1.6.1.jar:/usr/lib/hadoop/lib/hadoop-lzo-0.5.0.jar:/usr/lib/hadoop/lib/commons-beanutils-1.7.0.jar:/usr/lib/hadoop/lib/commons-httpclient-3.1.jar:/usr/lib/hadoop/lib/paranamer-2.3.jar:/usr/lib/hadoop/lib/ambari-log4j-1.4.0.9.jar:/usr/lib/hadoop/lib/commons-el-1.0.jar:/usr/lib/hadoop/lib/commons-collections-3.2.1.jar:/usr/lib/hadoop/lib/jasper-runtime-5.5.23.jar:/usr/lib/hadoop/lib/log4j-1.2.17.jar:/usr/lib/hadoop/lib/jsch-0.1.42.jar:/usr/lib/hadoop/lib/servlet-api-2.5.jar:/usr/lib/hadoop/lib/commons-io-2.1.jar:/usr/lib/hadoop/lib/commons-lang-2.5.jar:/usr/lib/hadoop/lib/stax-api-1.0.1.jar:/usr/lib/hadoop/lib/protobuf-java-2.4.0a.jar:/usr/lib/hadoop/lib/jsr305-1.3.9.jar:/usr/lib/hadoop/lib/pos
 tgresql-9.1-901-1.jdbc4.jar:/usr/lib/hadoop/lib/jaxb-api-2.2.2.jar:/usr/lib/hadoop/lib/asm-3.2.jar:/usr/lib/hadoop/lib/jackson-mapper-asl-1.8.8.jar:/usr/lib/hadoop/lib/jersey-server-1.8.jar:/usr/lib/hadoop/lib/jettison-1.1.jar:/usr/lib/hadoop/lib/jersey-core-1.8.jar:/usr/lib/hadoop/lib/jetty-util-6.1.26.jar:/usr/lib/hadoop/lib/commons-codec-1.4.jar:/usr/lib/hadoop/lib/commons-beanutils-core-1.8.0.jar:/usr/lib/hadoop/lib/commons-logging-1.1.1.jar:/usr/lib/hadoop/lib/snappy-java-1.0.3.2.jar:/usr/lib/hadoop/lib/jackson-jaxrs-1.8.8.jar:/usr/lib/hadoop/lib/activation-1.1.jar:/usr/lib/hadoop/lib/commons-net-3.1.jar:/usr/lib/hadoop/lib/jersey-json-1.8.jar:/usr/lib/hadoop/lib/hadoop-tools.jar:/usr/lib/hadoop/lib/slf4j-log4j12-1.6.1.jar:/usr/lib/hadoop/lib/guava-11.0.2.jar:/usr/lib/hadoop/lib/jackson-core-asl-1.8.8.jar:/usr/lib/hadoop/lib/jackson-xc-1.8.8.jar:/usr/lib/hadoop/lib/commons-digester-1.8.jar:/usr/lib/hadoop/lib/jsp-api-2.1.jar:/usr/lib/hadoop/lib/commons-configuration-1.6.jar:/us
 r/lib/hadoop/lib/avro-1.5.3.jar:/usr/lib/hadoop/lib/zookeeper-3.4.2.jar:/usr/lib/hadoop/lib/jaxb-impl-2.2.3-1.jar:/usr/lib/hadoop/lib/commons-cli-1.2.jar:/usr/lib/hadoop/.//hadoop-common-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop/.//hadoop-auth-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop/.//hadoop-annotations-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop/.//hadoop-common-2.1.0.2.0.3.0-81-tests.jar:/usr/lib/hadoop-hdfs/./:/usr/lib/hadoop-hdfs/lib/xmlenc-0.52.jar:/usr/lib/hadoop-hdfs/lib/jetty-6.1.26.jar:/usr/lib/hadoop-hdfs/lib/commons-el-1.0.jar:/usr/lib/hadoop-hdfs/lib/jasper-runtime-5.5.23.jar:/usr/lib/hadoop-hdfs/lib/log4j-1.2.17.jar:/usr/lib/hadoop-hdfs/lib/servlet-api-2.5.jar:/usr/lib/hadoop-hdfs/lib/commons-io-2.1.jar:/usr/lib/hadoop-hdfs/lib/commons-lang-2.5.jar:/usr/lib/hadoop-hdfs/lib/protobuf-java-2.4.0a.jar:/usr/lib/hadoop-hdfs/lib/jsr305-1.3.9.jar:/usr/lib/hadoop-hdfs/lib/asm-3.2.jar:/usr/lib/hadoop-hdfs/lib/commons-daemon-1.0.13.jar:/usr/lib/hadoop-hdfs/lib/jackson-mapper-asl-1.8.8.jar:/usr/
 lib/hadoop-hdfs/lib/jersey-server-1.8.jar:/usr/lib/hadoop-hdfs/lib/jersey-core-1.8.jar:/usr/lib/hadoop-hdfs/lib/jetty-util-6.1.26.jar:/usr/lib/hadoop-hdfs/lib/commons-codec-1.4.jar:/usr/lib/hadoop-hdfs/lib/commons-logging-1.1.1.jar:/usr/lib/hadoop-hdfs/lib/guava-11.0.2.jar:/usr/lib/hadoop-hdfs/lib/jackson-core-asl-1.8.8.jar:/usr/lib/hadoop-hdfs/lib/jsp-api-2.1.jar:/usr/lib/hadoop-hdfs/lib/commons-cli-1.2.jar:/usr/lib/hadoop-hdfs/.//hadoop-hdfs-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-hdfs/.//hadoop-hdfs-2.1.0.2.0.3.0-81-tests.jar:/usr/lib/hadoop-yarn/lib/guice-3.0.jar:/usr/lib/hadoop-yarn/lib/netty-3.5.11.Final.jar:/usr/lib/hadoop-yarn/lib/paranamer-2.3.jar:/usr/lib/hadoop-yarn/lib/log4j-1.2.17.jar:/usr/lib/hadoop-yarn/lib/javax.inject-1.jar:/usr/lib/hadoop-yarn/lib/commons-io-2.1.jar:/usr/lib/hadoop-yarn/lib/protobuf-java-2.4.0a.jar:/usr/lib/hadoop-yarn/lib/hamcrest-core-1.1.jar:/usr/lib/hadoop-yarn/lib/asm-3.2.jar:/usr/lib/hadoop-yarn/lib/jersey-guice-1.8.jar:/usr/lib/hadoop-yarn/lib/
 junit-4.10.jar:/usr/lib/hadoop-yarn/lib/jackson-mapper-asl-1.8.8.jar:/usr/lib/hadoop-yarn/lib/jersey-server-1.8.jar:/usr/lib/hadoop-yarn/lib/jersey-core-1.8.jar:/usr/lib/hadoop-yarn/lib/guice-servlet-3.0.jar:/usr/lib/hadoop-yarn/lib/snappy-java-1.0.3.2.jar:/usr/lib/hadoop-yarn/lib/aopalliance-1.0.jar:/usr/lib/hadoop-yarn/lib/jackson-core-asl-1.8.8.jar:/usr/lib/hadoop-yarn/lib/avro-1.5.3.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-server-web-proxy-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-server-common-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-server-tests-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-applications-distributedshell-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-applications-unmanaged-am-launcher-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-server-nodemanager-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-common-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-api-2.1.0.2.0.3.0-81.jar:/usr/lib
 /hadoop-yarn/.//hadoop-yarn-server-resourcemanager-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-client-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-site-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/lib/guice-3.0.jar:/usr/lib/hadoop-mapreduce/lib/netty-3.5.11.Final.jar:/usr/lib/hadoop-mapreduce/lib/paranamer-2.3.jar:/usr/lib/hadoop-mapreduce/lib/log4j-1.2.17.jar:/usr/lib/hadoop-mapreduce/lib/javax.inject-1.jar:/usr/lib/hadoop-mapreduce/lib/commons-io-2.1.jar:/usr/lib/hadoop-mapreduce/lib/protobuf-java-2.4.0a.jar:/usr/lib/hadoop-mapreduce/lib/hamcrest-core-1.1.jar:/usr/lib/hadoop-mapreduce/lib/asm-3.2.jar:/usr/lib/hadoop-mapreduce/lib/jersey-guice-1.8.jar:/usr/lib/hadoop-mapreduce/lib/junit-4.10.jar:/usr/lib/hadoop-mapreduce/lib/jackson-mapper-asl-1.8.8.jar:/usr/lib/hadoop-mapreduce/lib/jersey-server-1.8.jar:/usr/lib/hadoop-mapreduce/lib/jersey-core-1.8.jar:/usr/lib/hadoop-mapreduce/lib/guice-servlet-3.0.jar:/usr/lib/hadoop-mapreduce/lib/snappy-java-1.0.3.2.j
 ar:/usr/lib/hadoop-mapreduce/lib/aopalliance-1.0.jar:/usr/lib/hadoop-mapreduce/lib/jackson-core-asl-1.8.8.jar:/usr/lib/hadoop-mapreduce/lib/avro-1.5.3.jar:/usr/lib/hadoop-mapreduce/.//hadoop-gridmix-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-datajoin-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-mapreduce-client-jobclient-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-mapreduce-client-shuffle-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-streaming-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-mapreduce-client-app-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-mapreduce-client-hs-plugins-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-extras-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-rumen-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-archives-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-mapreduce-examples-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-mapreduce-
 client-jobclient-2.1.0.2.0.3.0-81-tests.jar:/usr/lib/hadoop-mapreduce/.//hadoop-mapreduce-client-core-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-mapreduce-client-common-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-distcp-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/.//hadoop-mapreduce-client-hs-2.1.0.2.0.3.0-81.jar::/usr/lib/hadoop-mapreduce/hadoop-gridmix-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-datajoin-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-shuffle-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-streaming-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-app-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-hs-plugins-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-extras-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-rumen-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduc
 e/hadoop-archives-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-2.1.0.2.0.3.0-81-tests.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-core-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-common-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-distcp-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-hs-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-gridmix-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-datajoin-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-shuffle-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-streaming-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-app-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-hs-plugins-2.1.0.2.0.3.0-81.jar:/us
 r/lib/hadoop-mapreduce/hadoop-extras-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-rumen-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-archives-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-2.1.0.2.0.3.0-81-tests.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-core-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-common-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-distcp-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-hs-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-server-web-proxy-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-server-common-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-server-tests-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-applications-distributedshell-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-applications-unmanaged-am-lau
 ncher-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-server-nodemanager-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-common-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-api-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-server-resourcemanager-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-client-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/.//hadoop-yarn-site-2.1.0.2.0.3.0-81.jar:/usr/lib/hadoop-yarn/lib/guice-3.0.jar:/usr/lib/hadoop-yarn/lib/netty-3.5.11.Final.jar:/usr/lib/hadoop-yarn/lib/paranamer-2.3.jar:/usr/lib/hadoop-yarn/lib/log4j-1.2.17.jar:/usr/lib/hadoop-yarn/lib/javax.inject-1.jar:/usr/lib/hadoop-yarn/lib/commons-io-2.1.jar:/usr/lib/hadoop-yarn/lib/protobuf-java-2.4.0a.jar:/usr/lib/hadoop-yarn/lib/hamcrest-core-1.1.jar:/usr/lib/hadoop-yarn/lib/asm-3.2.jar:/usr/lib/hadoop-yarn/lib/jersey-guice-1.8.jar:/usr/lib/hadoop-yarn/lib/junit-4.10.jar:/usr/lib/hadoop-yarn/lib/jackson-mapper-asl-1.8.8.jar:/usr/lib/hadoop-yarn/lib/jers
 ey-server-1.8.jar:/usr/lib/hadoop-yarn/lib/jersey-core-1.8.jar:/usr/lib/hadoop-yarn/lib/guice-servlet-3.0.jar:/usr/lib/hadoop-yarn/lib/snappy-java-1.0.3.2.jar:/usr/lib/hadoop-yarn/lib/aopalliance-1.0.jar:/usr/lib/hadoop-yarn/lib/jackson-core-asl-1.8.8.jar:/usr/lib/hadoop-yarn/lib/avro-1.5.3.jar:/etc/hadoop/conf/rm-config/log4j.properties"
+    }, {
+      "key" : "os.name",
+      "value" : "Linux"
+    }, {
+      "key" : "line.separator",
+      "value" : "\n"
+    }, {
+      "key" : "os.version",
+      "value" : "2.6.32-220.17.1.el6.centos.plus.x86_64"
+    }, {
+      "key" : "sun.arch.data.model",
+      "value" : "64"
+    }, {
+      "key" : "java.class.version",
+      "value" : "50.0"
+    }, {
+      "key" : "yarn.log.file",
+      "value" : "yarn-yarn-resourcemanager-ip-10-147-212-220.log"
+    }, {
+      "key" : "sun.io.unicode.encoding",
+      "value" : "UnicodeLittle"
+    }, {
+      "key" : "java.vendor",
+      "value" : "Sun Microsystems Inc."
+    }, {
+      "key" : "sun.boot.class.path",
+      "value" : "/usr/jdk/jdk1.6.0_31/jre/lib/resources.jar:/usr/jdk/jdk1.6.0_31/jre/lib/rt.jar:/usr/jdk/jdk1.6.0_31/jre/lib/sunrsasign.jar:/usr/jdk/jdk1.6.0_31/jre/lib/jsse.jar:/usr/jdk/jdk1.6.0_31/jre/lib/jce.jar:/usr/jdk/jdk1.6.0_31/jre/lib/charsets.jar:/usr/jdk/jdk1.6.0_31/jre/lib/modules/jdk.boot.jar:/usr/jdk/jdk1.6.0_31/jre/classes"
+    }, {
+      "key" : "java.vm.info",
+      "value" : "mixed mode"
+    }, {
+      "key" : "java.specification.name",
+      "value" : "Java Platform API Specification"
+    }, {
+      "key" : "java.vm.name",
+      "value" : "Java HotSpot(TM) 64-Bit Server VM"
+    }, {
+      "key" : "java.vm.version",
+      "value" : "20.6-b01"
+    }, {
+      "key" : "sun.boot.library.path",
+      "value" : "/usr/jdk/jdk1.6.0_31/jre/lib/amd64"
+    }, {
+      "key" : "hadoop.root.logger",
+      "value" : "INFO,RFA"
+    }, {
+      "key" : "java.endorsed.dirs",
+      "value" : "/usr/jdk/jdk1.6.0_31/jre/lib/endorsed"
+    }, {
+      "key" : "sun.os.patch.level",
+      "value" : "unknown"
+    }, {
+      "key" : "sun.cpu.isalist",
+      "value" : ""
+    }, {
+      "key" : "user.home",
+      "value" : "/var/lib/hadoop-yarn"
+    }, {
+      "key" : "java.library.path",
+      "value" : "/usr/lib/hadoop/lib/native"
+    }, {
+      "key" : "java.specification.vendor",
+      "value" : "Sun Microsystems Inc."
+    }, {
+      "key" : "sun.management.compiler",
+      "value" : "HotSpot 64-Bit Tiered Compilers"
+    } ],
+    "Uptime" : 6984352
+  }, {
+    "name" : "java.lang:type=ClassLoading",
+    "modelerType" : "sun.management.ClassLoadingImpl",
+    "LoadedClassCount" : 5921,
+    "UnloadedClassCount" : 0,
+    "TotalLoadedClassCount" : 5921,
+    "Verbose" : false
+  }, {
+    "name" : "Hadoop:service=ResourceManager,name=QueueMetrics,q0=root",
+    "modelerType" : "QueueMetrics,q0=root",
+    "tag.Queue" : "root",
+    "tag.Context" : "yarn",
+    "tag.Hostname" : "ip-10-147-212-220.ec2.internal",
+    "running_0" : 0,
+    "running_60" : 0,
+    "running_300" : 0,
+    "running_1440" : 0,
+    "AppsSubmitted" : 2,
+    "AppsRunning" : 0,
+    "AppsPending" : 0,
+    "AppsCompleted" : 2,
+    "AppsKilled" : 0,
+    "AppsFailed" : 0,
+    "AllocatedMB" : 0,
+    "AllocatedVCores" : 0,
+    "AllocatedContainers" : 0,
+    "AggregateContainersAllocated" : 6,
+    "AggregateContainersReleased" : 6,
+    "AvailableMB" : 8192,
+    "AvailableVCores" : 1,
+    "PendingMB" : 0,
+    "PendingVCores" : 0,
+    "PendingContainers" : 0,
+    "ReservedMB" : 0,
+    "ReservedVCores" : 0,
+    "ReservedContainers" : 0,
+    "ActiveUsers" : 0,
+    "ActiveApplications" : 0
+  }, {
+    "name" : "java.lang:type=Threading",
+    "modelerType" : "sun.management.ThreadImpl",
+    "ThreadAllocatedMemoryEnabled" : true,
+    "ThreadAllocatedMemorySupported" : true,
+    "ThreadContentionMonitoringEnabled" : false,
+    "AllThreadIds" : [ 281, 208, 206, 204, 200, 197, 17, 196, 193, 195, 194, 192, 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 140, 142, 141, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 87, 89, 88, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 34, 36, 35, 33, 16, 32, 31, 13, 30, 29, 28, 27, 26, 24, 23, 22, 21, 20, 15, 14, 12, 4, 3, 2 ],
+    "DaemonThreadCount" : 171,
+    "PeakThreadCount" : 196,
+    "CurrentThreadCpuTimeSupported" : true,
+    "ObjectMonitorUsageSupported" : true,
+    "SynchronizerUsageSupported" : true,
+    "ThreadContentionMonitoringSupported" : true,
+    "ThreadCpuTimeEnabled" : true,
+    "CurrentThreadCpuTime" : 20000000,
+    "CurrentThreadUserTime" : 20000000,
+    "ThreadCount" : 191,
+    "TotalStartedThreadCount" : 275,
+    "ThreadCpuTimeSupported" : true
+  }, {
+    "name" : "Hadoop:service=ResourceManager,name=RpcActivityForPort8030",
+    "modelerType" : "RpcActivityForPort8030",
+    "tag.port" : "8030",
+    "tag.Context" : "rpc",
+    "tag.Hostname" : "ip-10-147-212-220.ec2.internal",
+    "ReceivedBytes" : 3085,
+    "SentBytes" : 2058,
+    "RpcQueueTimeNumOps" : 28,
+    "RpcQueueTimeAvgTime" : 0.2857142857142857,
+    "RpcProcessingTimeNumOps" : 28,
+    "RpcProcessingTimeAvgTime" : 1.2857142857142858,
+    "RpcAuthenticationFailures" : 0,
+    "RpcAuthenticationSuccesses" : 0,
+    "RpcAuthorizationFailures" : 0,
+    "RpcAuthorizationSuccesses" : 2,
+    "NumOpenConnections" : 0,
+    "CallQueueLength" : 0
+  }, {
+    "name" : "Hadoop:service=ResourceManager,name=RpcActivityForPort8141",
+    "modelerType" : "RpcActivityForPort8141",
+    "tag.port" : "8141",
+    "tag.Context" : "rpc",
+    "tag.Hostname" : "ip-10-147-212-220.ec2.internal",
+    "ReceivedBytes" : 0,
+    "SentBytes" : 0,
+    "RpcQueueTimeNumOps" : 0,
+    "RpcQueueTimeAvgTime" : 0.0,
+    "RpcProcessingTimeNumOps" : 0,
+    "RpcProcessingTimeAvgTime" : 0.0,
+    "RpcAuthenticationFailures" : 0,
+    "RpcAuthenticationSuccesses" : 0,
+    "RpcAuthorizationFailures" : 0,
+    "RpcAuthorizationSuccesses" : 0,
+    "NumOpenConnections" : 0,
+    "CallQueueLength" : 0
+  }, {
+    "name" : "java.util.logging:type=Logging",
+    "modelerType" : "java.util.logging.Logging",
+    "LoggerNames" : [ "com.sun.jersey.server.impl.resource.PerRequestFactory", "global", "com.sun.jersey.spi.container.ContainerRequest", "sun.awt.AppContext", "com.sun.jersey.server.impl.application.ResourceMethodDispatcherFactory", "com.sun.jersey.server.impl.monitoring.GlassFishMonitoringInitializer", "com.sun.jersey.spi.container.servlet.WebComponent", "com.google.inject.internal.ProxyFactory", "com.sun.jersey.server.impl.container.filter.FilterFactory", "com.google.inject.internal.util.$FinalizableReferenceQueue", "com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl", "com.sun.xml.bind.v2.runtime.JaxBeanInfo", "com.sun.jersey.server.impl.cdi.CDIComponentProviderFactoryInitializer", "javax.management", "com.google.inject.internal.util.$Finalizer", "com.sun.jersey.server.impl.ejb.EJBComponentProviderFactoryInitilizer", "com.sun.jersey.server.impl.managedbeans.ManagedBeanComponentProviderFactoryInitilizer", "com.sun.jersey.core.impl.provider.xml.SAXParserContextProvider", "com.sun.xml.b
 ind.v2.runtime.reflect.opt.OptimizedAccessorFactory", "com.sun.jersey.server.impl.wadl.WadlResource", "com.sun.jersey.json.impl.provider.entity.JSONWithPaddingProvider", "com.google.inject.spi.InjectionPoint", "com.sun.xml.bind.v2.ClassFactory", "com.sun.jersey.server.impl.application.CloseableServiceFactory", "com.sun.jersey.server.impl.resource.SingletonFactory", "com.sun.xml.bind.v2.runtime.reflect.opt.OptimizedTransducedAccessorFactory", "com.sun.jersey.guice.spi.container.GuiceComponentProviderFactory", "com.google.inject.internal.BytecodeGen", "com.google.inject.internal.util.$Stopwatch", "com.sun.xml.bind.v2.runtime.reflect.opt.AccessorInjector", "com.sun.jersey.spi.container.ContainerResponse", "com.sun.jersey.core.impl.provider.entity.EntityHolderReader", "javax.xml.bind", "com.sun.jersey.core.spi.component.ProviderServices", "com.sun.xml.bind.v2.runtime.reflect.Accessor$FieldReflection", "com.sun.jersey.server.impl.application.RootResourceUriRules", "com.sun.jersey.api.cor
 e.ResourceConfig", "com.sun.xml.bind.v2.runtime.reflect.opt.Injector", "com.google.common.collect.MapMakerInternalMap", "com.sun.jersey.server.impl.application.WebApplicationImpl", "com.sun.jersey.server.impl.model.method.dispatch.MultipartFormDispatchProvider", "com.google.inject.Guice", "com.sun.jersey.spi.service.ServiceFinder", "com.sun.xml.bind.v2.bytecode.ClassTailor", "com.sun.jersey.server.impl.modelapi.annotation.IntrospectionModeller", "com.sun.jersey.server.impl.wadl.WadlFactory", "com.sun.jersey.core.impl.provider.xml.DocumentBuilderFactoryProvider", "com.sun.jersey.core.spi.component.ProviderFactory", "javax.management.mbeanserver", "", "com.sun.jersey.spi.inject.Errors" ]
+  }, {
+    "name" : "Hadoop:service=ResourceManager,name=JvmMetrics",
+    "modelerType" : "JvmMetrics",
+    "tag.Context" : "jvm",
+    "tag.ProcessName" : "ResourceManager",
+    "tag.SessionId" : null,
+    "tag.Hostname" : "ip-10-147-212-220.ec2.internal",
+    "MemNonHeapUsedM" : 43.84217,
+    "MemNonHeapCommittedM" : 44.1875,
+    "MemHeapUsedM" : 9.462357,
+    "MemHeapCommittedM" : 96.9375,
+    "MemMaxM" : 888.9375,
+    "GcCount" : 21,
+    "GcTimeMillis" : 229,
+    "ThreadsNew" : 0,
+    "ThreadsRunnable" : 16,
+    "ThreadsBlocked" : 0,
+    "ThreadsWaiting" : 165,
+    "ThreadsTimedWaiting" : 10,
+    "ThreadsTerminated" : 0,
+    "LogFatal" : 0,
+    "LogError" : 0,
+    "LogWarn" : 1,
+    "LogInfo" : 275
+  }, {
+    "name" : "Hadoop:service=ResourceManager,name=RMNMInfo",
+    "modelerType" : "org.apache.hadoop.yarn.server.resourcemanager.RMNMInfo",
+    "LiveNodeManagers" : "[{\"HostName\":\"ip-10-147-212-220.ec2.internal\",\"Rack\":\"/default-rack\",\"State\":\"RUNNING\",\"NodeId\":\"ip-10-147-212-220.ec2.internal:45454\",\"NodeHTTPAddress\":\"ip-10-147-212-220.ec2.internal:8042\",\"HealthStatus\":\"Healthy\",\"LastHealthUpdate\":1370631907521,\"HealthReport\":\"\",\"NumContainers\":0,\"UsedMemoryMB\":0,\"AvailableMemoryMB\":8192}]"
+  }, {
+    "name" : "Hadoop:service=ResourceManager,name=RpcDetailedActivityForPort8050",
+    "modelerType" : "RpcDetailedActivityForPort8050",
+    "tag.port" : "8050",
+    "tag.Context" : "rpcdetailed",
+    "tag.Hostname" : "ip-10-147-212-220.ec2.internal",
+    "GetNewApplicationNumOps" : 2,
+    "GetNewApplicationAvgTime" : 1.0,
+    "SubmitApplicationNumOps" : 2,
+    "SubmitApplicationAvgTime" : 2.0,
+    "GetApplicationReportNumOps" : 29,
+    "GetApplicationReportAvgTime" : 0.875,
+    "GetClusterMetricsNumOps" : 1,
+    "GetClusterMetricsAvgTime" : 4.0,
+    "GetClusterNodesNumOps" : 1,
+    "GetClusterNodesAvgTime" : 11.0,
+    "GetQueueInfoNumOps" : 1,
+    "GetQueueInfoAvgTime" : 5.0,
+    "GetQueueUserAclsNumOps" : 1,
+    "GetQueueUserAclsAvgTime" : 9.0
+  }, {
+    "name" : "Hadoop:service=ResourceManager,name=RpcDetailedActivityForPort8030",
+    "modelerType" : "RpcDetailedActivityForPort8030",
+    "tag.port" : "8030",
+    "tag.Context" : "rpcdetailed",
+    "tag.Hostname" : "ip-10-147-212-220.ec2.internal",
+    "RegisterApplicationMasterNumOps" : 2,
+    "RegisterApplicationMasterAvgTime" : 1.0,
+    "AllocateNumOps" : 24,
+    "AllocateAvgTime" : 1.6,
+    "FinishApplicationMasterNumOps" : 2,
+    "FinishApplicationMasterAvgTime" : 0.0
+  }, {
+    "name" : "Hadoop:service=ResourceManager,name=MetricsSystem,sub=Control",
+    "modelerType" : "org.apache.hadoop.metrics2.impl.MetricsSystemImpl"
+  }, {
+    "name" : "com.sun.management:type=HotSpotDiagnostic",
+    "modelerType" : "sun.management.HotSpotDiagnostic",
+    "DiagnosticOptions" : [ {
+      "name" : "HeapDumpBeforeFullGC",
+      "origin" : "DEFAULT",
+      "value" : "false",
+      "writeable" : true
+    }, {
+      "name" : "HeapDumpAfterFullGC",
+      "origin" : "DEFAULT",
+      "value" : "false",
+      "writeable" : true
+    }, {
+      "name" : "HeapDumpOnOutOfMemoryError",
+      "origin" : "DEFAULT",
+      "value" : "false",
+      "writeable" : true
+    }, {
+      "name" : "HeapDumpPath",
+      "origin" : "DEFAULT",
+      "value" : "",
+      "writeable" : true
+    }, {
+      "name" : "CMSAbortablePrecleanWaitMillis",
+      "origin" : "DEFAULT",
+      "value" : "100",
+      "writeable" : true
+    }, {
+      "name" : "CMSWaitDuration",
+      "origin" : "DEFAULT",
+      "value" : "2000",
+      "writeable" : true
+    }, {
+      "name" : "PrintGC",
+      "origin" : "DEFAULT",
+      "value" : "false",
+      "writeable" : true
+    }, {
+      "name" : "PrintGCDetails",
+      "origin" : "DEFAULT",
+      "value" : "false",
+      "writeable" : true
+    }, {
+      "name" : "PrintGCDateStamps",
+      "origin" : "DEFAULT",
+      "value" : "false",
+      "writeable" : true
+    }, {
+      "name" : "PrintGCTimeStamps",
+      "origin" : "DEFAULT",
+      "value" : "false",
+      "writeable" : true
+    }, {
+      "name" : "PrintClassHistogramBeforeFullGC",
+      "origin" : "DEFAULT",
+      "value" : "false",
+      "writeable" : true
+    }, {
+      "name" : "PrintClassHistogramAfterFullGC",
+      "origin" : "DEFAULT",
+      "value" : "false",
+      "writeable" : true
+    }, {
+      "name" : "PrintClassHistogram",
+      "origin" : "DEFAULT",
+      "value" : "false",
+      "writeable" : true
+    }, {
+      "name" : "PrintConcurrentLocks",
+      "origin" : "DEFAULT",
+      "value" : "false",
+      "writeable" : true
+    } ]
+  }, {
+    "name" : "java.lang:type=MemoryPool,name=PS Perm Gen",
+    "modelerType" : "sun.management.MemoryPoolImpl",
+    "Name" : "PS Perm Gen",
+    "Type" : "NON_HEAP",
+    "Valid" : true,
+    "CollectionUsage" : {
+      "committed" : 0,
+      "init" : 21757952,
+      "max" : 85983232,
+      "used" : 0
+    },
+    "CollectionUsageThreshold" : 0,
+    "CollectionUsageThresholdCount" : 0,
+    "MemoryManagerNames" : [ "PS MarkSweep" ],
+    "PeakUsage" : {
+      "committed" : 43778048,
+      "init" : 21757952,
+      "max" : 85983232,
+      "used" : 43695160
+    },
+    "Usage" : {
+      "committed" : 43778048,
+      "init" : 21757952,
+      "max" : 85983232,
+      "used" : 43695160
+    },
+    "UsageThreshold" : 0,
+    "UsageThresholdCount" : 0,
+    "CollectionUsageThresholdExceeded" : true,
+    "CollectionUsageThresholdSupported" : true,
+    "UsageThresholdExceeded" : true,
+    "UsageThresholdSupported" : true
+  }, {
+    "name" : "Hadoop:service=ResourceManager,name=QueueMetrics,q0=root,q1=default",
+    "modelerType" : "QueueMetrics,q0=root,q1=default",
+    "tag.Queue" : "root.default",
+    "tag.Context" : "yarn",
+    "tag.Hostname" : "ip-10-147-212-220.ec2.internal",
+    "running_0" : 0,
+    "running_60" : 0,
+    "running_300" : 0,
+    "running_1440" : 0,
+    "AppsSubmitted" : 2,
+    "AppsRunning" : 0,
+    "AppsPending" : 0,
+    "AppsCompleted" : 2,
+    "AppsKilled" : 0,
+    "AppsFailed" : 0,
+    "AllocatedMB" : 0,
+    "AllocatedVCores" : 0,
+    "AllocatedContainers" : 0,
+    "AggregateContainersAllocated" : 6,
+    "AggregateContainersReleased" : 6,
+    "AvailableMB" : 8192,
+    "AvailableVCores" : 1,
+    "PendingMB" : 0,
+    "PendingVCores" : 0,
+    "PendingContainers" : 0,
+    "ReservedMB" : 0,
+    "ReservedVCores" : 0,
+    "ReservedContainers" : 0,
+    "ActiveUsers" : 0,
+    "ActiveApplications" : 0
+  }, {
+    "name" : "java.lang:type=GarbageCollector,name=PS Scavenge",
+    "modelerType" : "sun.management.GarbageCollectorImpl",
+    "LastGcInfo" : {
+      "GcThreadCount" : 2,
+      "duration" : 2,
+      "endTime" : 6936010,
+      "id" : 21,
+      "memoryUsageAfterGc" : [ {
+        "key" : "PS Survivor Space",
+        "value" : {
+          "committed" : 196608,
+          "init" : 4980736,
+          "max" : 196608,
+          "used" : 196608
+        }
+      }, {
+        "key" : "PS Old Gen",
+        "value" : {
+          "committed" : 80216064,
+          "init" : 80216064,
+          "max" : 699072512,
+          "used" : 7958264
+        }
+      }, {
+        "key" : "PS Perm Gen",
+        "value" : {
+          "committed" : 43778048,
+          "init" : 21757952,
+          "max" : 85983232,
+          "used" : 43691976
+        }
+      }, {
+        "key" : "Code Cache",
+        "value" : {
+          "committed" : 2555904,
+          "init" : 2555904,
+          "max" : 50331648,
+          "used" : 2279872
+        }
+      }, {
+        "key" : "PS Eden Space",
+        "value" : {
+          "committed" : 21233664,
+          "init" : 30081024,
+          "max" : 343408640,
+          "used" : 0
+        }
+      } ],
+      "memoryUsageBeforeGc" : [ {
+        "key" : "PS Survivor Space",
+        "value" : {
+          "committed" : 5373952,
+          "init" : 4980736,
+          "max" : 5373952,
+          "used" : 196624
+        }
+      }, {
+        "key" : "PS Old Gen",
+        "value" : {
+          "committed" : 80216064,
+          "init" : 80216064,
+          "max" : 699072512,
+          "used" : 7950072
+        }
+      }, {
+        "key" : "PS Perm Gen",
+        "value" : {
+          "committed" : 43778048,
+          "init" : 21757952,
+          "max" : 85983232,
+          "used" : 43691976
+        }
+      }, {
+        "key" : "Code Cache",
+        "value" : {
+          "committed" : 2555904,
+          "init" : 2555904,
+          "max" : 50331648,
+          "used" : 2279872
+        }
+      }, {
+        "key" : "PS Eden Space",
+        "value" : {
+          "committed" : 21626880,
+          "init" : 30081024,
+          "max" : 337969152,
+          "used" : 21626880
+        }
+      } ],
+      "startTime" : 6936008
+    },
+    "CollectionCount" : 21,
+    "CollectionTime" : 229,
+    "Name" : "PS Scavenge",
+    "Valid" : true,
+    "MemoryPoolNames" : [ "PS Eden Space", "PS Survivor Space" ]
+  }, {
+    "name" : "java.lang:type=MemoryPool,name=PS Old Gen",
+    "modelerType" : "sun.management.MemoryPoolImpl",
+    "Name" : "PS Old Gen",
+    "Type" : "HEAP",
+    "Valid" : true,
+    "CollectionUsage" : {
+      "committed" : 0,
+      "init" : 80216064,
+      "max" : 699072512,
+      "used" : 0
+    },
+    "CollectionUsageThreshold" : 0,
+    "CollectionUsageThresholdCount" : 0,
+    "MemoryManagerNames" : [ "PS MarkSweep" ],
+    "PeakUsage" : {
+      "committed" : 80216064,
+      "init" : 80216064,
+      "max" : 699072512,
+      "used" : 7958264
+    },
+    "Usage" : {
+      "committed" : 80216064,
+      "init" : 80216064,
+      "max" : 699072512,
+      "used" : 7958264
+    },
+    "UsageThreshold" : 0,
+    "UsageThresholdCount" : 0,
+    "CollectionUsageThresholdExceeded" : true,
+    "CollectionUsageThresholdSupported" : true,
+    "UsageThresholdExceeded" : true,
+    "UsageThresholdSupported" : true
+  }, {
+    "name" : "JMImplementation:type=MBeanServerDelegate",
+    "modelerType" : "javax.management.MBeanServerDelegate",
+    "MBeanServerId" : "ip-10-147-212-220.ec2.internal_1370624992772",
+    "SpecificationName" : "Java Management Extensions",
+    "SpecificationVersion" : "1.4",
+    "SpecificationVendor" : "Sun Microsystems",
+    "ImplementationName" : "JMX",
+    "ImplementationVersion" : "1.6.0_31-b04",
+    "ImplementationVendor" : "Sun Microsystems"
+  } ]
+}

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/metainfo.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/metainfo.xml
new file mode 100644
index 0000000..ca45822
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/metainfo.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <versions>
+	  <active>true</active>
+    </versions>
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/repos/repoinfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/repos/repoinfo.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/repos/repoinfo.xml
new file mode 100644
index 0000000..d429a85
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/repos/repoinfo.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<reposinfo>
+  <os type="centos6">
+    <repo>
+      <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.0.2/repos/centos6</baseurl>
+      <repoid>HDP-2.0.1</repoid>
+      <reponame>HDP</reponame>
+    </repo>
+  </os>
+  <os type="centos5">
+    <repo>
+      <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.0.2/repos/centos5</baseurl>
+      <repoid>HDP-2.0.1</repoid>
+      <reponame>HDP</reponame>
+    </repo>
+  </os>
+  <os type="redhat6">
+    <repo>
+      <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.0.2/repos/centos6</baseurl>
+      <repoid>HDP-2.0.1</repoid>
+      <reponame>HDP</reponame>
+    </repo>
+  </os>
+  <os type="redhat5">
+    <repo>
+      <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.0.2/repos/centos5</baseurl>
+      <repoid>HDP-2.0.1</repoid>
+      <reponame>HDP</reponame>
+    </repo>
+  </os>
+<!--
+  <os type="suse11">
+    <repo>
+      <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.1/repos/suse11</baseurl>
+      <repoid>HDP-2.0.1</repoid>
+      <reponame>HDP</reponame>
+    </repo>
+    <repo>
+      <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/suse11</baseurl>
+      <repoid>HDP-UTILS-1.1.0.15</repoid>
+      <reponame>HDP-UTILS</reponame>
+      <mirrorslist></mirrorslist>
+    </repo>
+  </os>
+    <os type="sles11">
+    <repo>
+      <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.1/repos/suse11</baseurl>
+      <repoid>HDP-2.0.1</repoid>
+      <reponame>HDP</reponame>
+    </repo>
+    <repo>
+      <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/suse11</baseurl>
+      <repoid>HDP-UTILS-1.1.0.15</repoid>
+      <reponame>HDP-UTILS</reponame>
+      <mirrorslist></mirrorslist>
+    </repo>
+  </os>
+-->
+</reposinfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/GANGLIA/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/GANGLIA/metainfo.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/GANGLIA/metainfo.xml
new file mode 100644
index 0000000..395bb4f
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/GANGLIA/metainfo.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <user>root</user>
+    <comment>Ganglia Metrics Collection system</comment>
+    <version>3.2.0</version>
+
+    <components>
+        <component>
+            <name>GANGLIA_SERVER</name>
+            <category>MASTER</category>
+        </component>
+
+        <component>
+            <name>GANGLIA_MONITOR</name>
+            <category>SLAVE</category>
+        </component>
+
+    </components>
+
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HBASE/configuration/hbase-policy.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HBASE/configuration/hbase-policy.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HBASE/configuration/hbase-policy.xml
new file mode 100644
index 0000000..e45f23c
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/HBASE/configuration/hbase-policy.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+/**
+ * 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.
+ */
+-->
+
+<configuration>
+  <property>
+    <name>security.client.protocol.acl</name>
+    <value>*</value>
+    <description>ACL for HRegionInterface protocol implementations (ie. 
+    clients talking to HRegionServers)
+    The ACL is a comma-separated list of user and group names. The user and 
+    group list is separated by a blank. For e.g. "alice,bob users,wheel". 
+    A special value of "*" means all users are allowed.</description>
+  </property>
+
+  <property>
+    <name>security.admin.protocol.acl</name>
+    <value>*</value>
+    <description>ACL for HMasterInterface protocol implementation (ie. 
+    clients talking to HMaster for admin operations).
+    The ACL is a comma-separated list of user and group names. The user and 
+    group list is separated by a blank. For e.g. "alice,bob users,wheel". 
+    A special value of "*" means all users are allowed.</description>
+  </property>
+
+  <property>
+    <name>security.masterregion.protocol.acl</name>
+    <value>*</value>
+    <description>ACL for HMasterRegionInterface protocol implementations
+    (for HRegionServers communicating with HMaster)
+    The ACL is a comma-separated list of user and group names. The user and 
+    group list is separated by a blank. For e.g. "alice,bob users,wheel". 
+    A special value of "*" means all users are allowed.</description>
+  </property>
+</configuration>


[13/14] AMBARI-2677. Merge from branch-1.4.0 (ncole)

Posted by nc...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/java/org/apache/ambari/eventdb/model/Apps.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/eventdb/model/Apps.java b/ambari-server/src/main/java/org/apache/ambari/eventdb/model/Apps.java
new file mode 100644
index 0000000..7b57114
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/eventdb/model/Apps.java
@@ -0,0 +1,193 @@
+/**
+ * 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.
+ */
+package org.apache.ambari.eventdb.model;
+
+import org.apache.commons.lang.StringUtils;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.List;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class Apps {
+  List<AppDBEntry> apps;
+
+  public static class AppDBEntry {
+    public static enum AppFields {
+      APPID,
+      APPNAME,
+      APPTYPE,
+      STATUS,
+      USERNAME,
+      QUEUE,
+      SUBMITTIME,
+      LAUNCHTIME,
+      FINISHTIME,
+      APPINFO,
+      WORKFLOWID,
+      WORKFLOWENTITYNAME;
+
+      public String getString(ResultSet rs) throws SQLException {
+        return rs.getString(this.toString());
+      }
+
+      public int getInt(ResultSet rs) throws SQLException {
+        return rs.getInt(this.toString());
+      }
+
+      public long getLong(ResultSet rs) throws SQLException {
+        return rs.getLong(this.toString());
+      }
+
+      public static String join() {
+        String[] tmp = new String[AppFields.values().length];
+        for (int i = 0; i < tmp.length; i++)
+          tmp[i] = AppFields.values()[i].toString();
+        return StringUtils.join(tmp, ",");
+      }
+    }
+
+    @XmlTransient
+    public static final String APP_FIELDS = AppFields.join();
+
+    private String appId;
+    private String appName;
+    private String appType;
+    private String status;
+    private String userName;
+    private String queue;
+    private long submitTime;
+    private long launchTime;
+    private long finishTime;
+    private List<Integer> stages;
+    private String workflowId;
+    private String workflowEntityName;
+
+    public AppDBEntry() {
+      /* Required by JAXB. */
+    }
+
+    public String getAppId() {
+      return appId;
+    }
+
+    public void setAppId(String appId) {
+      this.appId = appId;
+    }
+
+    public String getAppName() {
+      return appName;
+    }
+
+    public void setAppName(String appName) {
+      this.appName = appName;
+    }
+
+    public String getAppType() {
+      return appType;
+    }
+
+    public void setAppType(String appType) {
+      this.appType = appType;
+    }
+
+    public String getStatus() {
+      return status;
+    }
+
+    public void setStatus(String status) {
+      this.status = status;
+    }
+
+    public String getUserName() {
+      return userName;
+    }
+
+    public void setUserName(String userName) {
+      this.userName = userName;
+    }
+
+    public String getQueue() {
+      return queue;
+    }
+
+    public void setQueue(String queue) {
+      this.queue = queue;
+    }
+
+    public long getSubmitTime() {
+      return submitTime;
+    }
+
+    public void setSubmitTime(long submitTime) {
+      this.submitTime = submitTime;
+    }
+
+    public long getLaunchTime() {
+      return launchTime;
+    }
+
+    public void setLaunchTime(long launchTime) {
+      this.launchTime = launchTime;
+    }
+
+    public long getFinishTime() {
+      return finishTime;
+    }
+
+    public void setFinishTime(long finishTime) {
+      this.finishTime = finishTime;
+    }
+
+    public List<Integer> getStages() {
+      return stages;
+    }
+
+    public void setStages(List<Integer> stages) {
+      this.stages = stages;
+    }
+
+    public String getWorkflowId() {
+      return workflowId;
+    }
+
+    public void setWorkflowId(String workflowId) {
+      this.workflowId = workflowId;
+    }
+
+    public String getWorkflowEntityName() {
+      return workflowEntityName;
+    }
+
+    public void setWorkflowEntityName(String workflowEntityName) {
+      this.workflowEntityName = workflowEntityName;
+    }
+  }
+
+  public List<AppDBEntry> getApps() {
+    return apps;
+  }
+
+  public void setApps(List<AppDBEntry> apps) {
+    this.apps = apps;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/java/org/apache/ambari/eventdb/model/WorkflowContext.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/eventdb/model/WorkflowContext.java b/ambari-server/src/main/java/org/apache/ambari/eventdb/model/WorkflowContext.java
index c2b0468..a8b3945 100644
--- a/ambari-server/src/main/java/org/apache/ambari/eventdb/model/WorkflowContext.java
+++ b/ambari-server/src/main/java/org/apache/ambari/eventdb/model/WorkflowContext.java
@@ -29,6 +29,7 @@ public class WorkflowContext {
   private String workflowId;
   private String workflowName;
   private String workflowEntityName;
+  private String workflowTags;
   
   private WorkflowDag workflowDag;
   
@@ -51,6 +52,10 @@ public class WorkflowContext {
     return this.workflowEntityName;
   }
   
+  public String getWorkflowTags() {
+    return workflowTags;
+  }
+  
   public WorkflowDag getWorkflowDag() {
     return this.workflowDag;
   }
@@ -72,6 +77,10 @@ public class WorkflowContext {
     this.workflowEntityName = wfEntityName;
   }
   
+  public void setWorkflowTags(String workflowTags) {
+    this.workflowTags = workflowTags;
+  }
+  
   public void setWorkflowDag(WorkflowDag wfDag) {
     this.workflowDag = wfDag;
   }

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/java/org/apache/ambari/eventdb/model/Workflows.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/eventdb/model/Workflows.java b/ambari-server/src/main/java/org/apache/ambari/eventdb/model/Workflows.java
index 541ce79..0aa3e74 100644
--- a/ambari-server/src/main/java/org/apache/ambari/eventdb/model/Workflows.java
+++ b/ambari-server/src/main/java/org/apache/ambari/eventdb/model/Workflows.java
@@ -47,7 +47,8 @@ public class Workflows {
       INPUTBYTES,
       OUTPUTBYTES,
       PARENTWORKFLOWID,
-      WORKFLOWCONTEXT;
+      WORKFLOWCONTEXT,
+      WORKFLOWTAGS;
       
       public String getString(ResultSet rs) throws SQLException {
         return rs.getString(this.toString());
@@ -83,6 +84,7 @@ public class Workflows {
     private int numJobsCompleted;
     private String parentWorkflowId;
     private WorkflowContext workflowContext;
+    private String workflowTags;
     
     public WorkflowDBEntry() {
       /* Required by JAXB. */
@@ -124,6 +126,10 @@ public class Workflows {
       return workflowContext;
     }
     
+    public String getWorkflowTags() {
+      return workflowTags;
+    }
+    
     public void setWorkflowId(String workflowId) {
       this.workflowId = workflowId;
     }
@@ -160,6 +166,10 @@ public class Workflows {
       this.workflowContext = workflowContext;
     }
     
+    public void setWorkflowTags(String workflowTags) {
+      this.workflowTags = workflowTags;
+    }
+    
     public long getInputBytes() {
       return inputBytes;
     }

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/java/org/apache/ambari/eventdb/webservice/WorkflowJsonService.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/eventdb/webservice/WorkflowJsonService.java b/ambari-server/src/main/java/org/apache/ambari/eventdb/webservice/WorkflowJsonService.java
index 7d653f2..d2867e6 100644
--- a/ambari-server/src/main/java/org/apache/ambari/eventdb/webservice/WorkflowJsonService.java
+++ b/ambari-server/src/main/java/org/apache/ambari/eventdb/webservice/WorkflowJsonService.java
@@ -36,15 +36,10 @@ import javax.ws.rs.core.MediaType;
 import org.apache.ambari.eventdb.db.MySQLConnector;
 import org.apache.ambari.eventdb.db.OracleConnector;
 import org.apache.ambari.eventdb.db.PostgresConnector;
-import org.apache.ambari.eventdb.model.DataTable;
-import org.apache.ambari.eventdb.model.Jobs;
+import org.apache.ambari.eventdb.model.*;
 import org.apache.ambari.eventdb.model.Jobs.JobDBEntry;
-import org.apache.ambari.eventdb.model.TaskAttempt;
-import org.apache.ambari.eventdb.model.TaskData;
 import org.apache.ambari.eventdb.model.TaskData.Point;
-import org.apache.ambari.eventdb.model.TaskLocalityData;
 import org.apache.ambari.eventdb.model.TaskLocalityData.DataPoint;
-import org.apache.ambari.eventdb.model.Workflows;
 import org.apache.ambari.eventdb.model.Workflows.WorkflowDBEntry;
 import org.apache.ambari.eventdb.model.Workflows.WorkflowDBEntry.WorkflowFields;
 import org.apache.ambari.server.configuration.Configuration;
@@ -67,6 +62,7 @@ public class WorkflowJsonService {
   
   private static final Workflows EMPTY_WORKFLOWS = new Workflows();
   private static final List<JobDBEntry> EMPTY_JOBS = Collections.emptyList();
+  private static final List<Apps.AppDBEntry> EMPTY_APPS = Collections.emptyList();
   {
     List<WorkflowDBEntry> emptyWorkflows = Collections.emptyList();
     EMPTY_WORKFLOWS.setWorkflows(emptyWorkflows);
@@ -138,7 +134,8 @@ public class WorkflowJsonService {
       @DefaultValue("-1") @QueryParam("minOutputBytes") long minOutputBytes, @DefaultValue("-1") @QueryParam("maxOutputBytes") long maxOutputBytes,
       @DefaultValue("-1") @QueryParam("minDuration") long minDuration, @DefaultValue("-1") @QueryParam("maxDuration") long maxDuration,
       @DefaultValue("-1") @QueryParam("minStartTime") long minStartTime, @DefaultValue("-1") @QueryParam("maxStartTime") long maxStartTime,
-      @DefaultValue("-1") @QueryParam("minFinishTime") long minFinishTime, @DefaultValue("-1") @QueryParam("maxFinishTime") long maxFinishTime) {
+      @DefaultValue("-1") @QueryParam("minFinishTime") long minFinishTime, @DefaultValue("-1") @QueryParam("maxFinishTime") long maxFinishTime,
+      @QueryParam("tagSearch") String tagSearchTerm) {
     
     if (start < 0)
       start = 0;
@@ -163,22 +160,25 @@ public class WorkflowJsonService {
       case 3: // userName
         field = WorkflowFields.USERNAME;
         break;
-      case 4: // numJobsTotal
+      case 4: // tags
+        field = WorkflowFields.WORKFLOWTAGS;
+        break;
+      case 5: // numJobsTotal
         field = WorkflowFields.NUMJOBSTOTAL;
         break;
-      case 5: // inputBytes
+      case 6: // inputBytes
         field = WorkflowFields.INPUTBYTES;
         break;
-      case 6: // outputBytes
+      case 7: // outputBytes
         field = WorkflowFields.OUTPUTBYTES;
         break;
-      case 7: // duration
+      case 8: // duration
         field = WorkflowFields.DURATION;
         break;
-      case 8: // startTime
+      case 9: // startTime
         field = WorkflowFields.STARTTIME;
         break;
-      case 9: // lastUpdateTime
+      case 10: // lastUpdateTime
         field = WorkflowFields.LASTUPDATETIME;
         break;
       default:
@@ -190,7 +190,8 @@ public class WorkflowJsonService {
     try {
       conn = getConnector();
       table = conn.fetchWorkflows(start, amount, searchTerm, echo, field, sortAscending, workflowId, workflowName, workflowType, userName, minJobs, maxJobs,
-          minInputBytes, maxInputBytes, minOutputBytes, maxOutputBytes, minDuration, maxDuration, minStartTime, maxStartTime, minFinishTime, maxFinishTime);
+          minInputBytes, maxInputBytes, minOutputBytes, maxOutputBytes, minDuration, maxDuration, minStartTime, maxStartTime, minFinishTime, maxFinishTime,
+          tagSearchTerm);
     } catch (IOException e) {
       LOG.error("Error interacting with RCA database ", e);
     } finally {
@@ -200,7 +201,28 @@ public class WorkflowJsonService {
     }
     return table;
   }
-  
+
+  @GET
+  @Produces(MediaType.APPLICATION_JSON)
+  @Path("/app")
+  public Apps getApps(@QueryParam("workflowId") String workflowId) {
+    Apps apps = new Apps();
+    apps.setApps(EMPTY_APPS);
+    PostgresConnector conn = null;
+    try {
+      conn = getConnector();
+      if (workflowId != null)
+        apps.setApps(conn.fetchAppDetails(workflowId));
+    } catch (IOException e) {
+      LOG.error("Error interacting with RCA database ", e);
+    } finally {
+      if (conn != null) {
+        conn.close();
+      }
+    }
+    return apps;
+  }
+
   @GET
   @Produces(MediaType.APPLICATION_JSON)
   @Path("/job")
@@ -224,7 +246,7 @@ public class WorkflowJsonService {
     }
     return jobs;
   }
-  
+
   @GET
   @Produces(MediaType.APPLICATION_JSON)
   @Path("/task")

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/java/org/apache/ambari/server/Role.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/Role.java b/ambari-server/src/main/java/org/apache/ambari/server/Role.java
index 3106c69..82180dc 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/Role.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/Role.java
@@ -43,6 +43,7 @@ public enum Role {
   HADOOP_CLIENT,
   JOBTRACKER_SERVICE_CHECK,
   MAPREDUCE_SERVICE_CHECK,
+  MAPREDUCE2_SERVICE_CHECK,
   ZOOKEEPER_SERVICE_CHECK,
   ZOOKEEPER_QUORUM_SERVICE_CHECK,
   HBASE_SERVICE_CHECK,
@@ -77,6 +78,7 @@ public enum Role {
   RESOURCEMANAGER_SERVICE_CHECK,
   HISTORYSERVER_SERVICE_CHECK,
   NODEMANAGER,
+  YARN_SERVICE_CHECK,
   YARN_CLIENT,
   HISTORYSERVER,
   TEZ_CLIENT,

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartbeatMonitor.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartbeatMonitor.java b/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartbeatMonitor.java
index 4cc6f27..0e9a62b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartbeatMonitor.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartbeatMonitor.java
@@ -119,11 +119,11 @@ public class HeartbeatMonitor implements Runnable {
       } catch (AmbariException e) {
         LOG.warn("Exception in getting host object; Is it fatal?", e);
       }
-      if (lastHeartbeat + 2*threadWakeupInterval < now) {
-        LOG.warn("Hearbeat lost from host "+host);
+      if (lastHeartbeat + 2 * threadWakeupInterval < now) {
+        LOG.warn("Heartbeat lost from host " + host);
         //Heartbeat is expired
         hostObj.handleEvent(new HostHeartbeatLostEvent(host));
-        
+
         // mark all components that are not clients with unknown status
         for (Cluster cluster : fsm.getClustersForHost(hostObj.getHostName())) {
           for (ServiceComponentHost sch : cluster.getServiceComponentHosts(hostObj.getHostName())) {
@@ -134,14 +134,17 @@ public class HeartbeatMonitor implements Runnable {
                 !sch.getState().equals(State.INSTALLING) &&
                 !sch.getState().equals(State.INSTALL_FAILED) &&
                 !sch.getState().equals(State.UNINSTALLED)) {
+              LOG.warn("Setting component state to UNKNOWN for component " + sc.getName() + " on " + host);
               sch.setState(State.UNKNOWN);
             }
           }
         }
-        
+
         // hbase
-        if(hostState != hostObj.getState() && scanner != null) scanner.updateHBaseMaster(hostObj);
-        
+        if (hostState != hostObj.getState() && scanner != null) {
+          scanner.updateHBaseMaster(hostObj);
+        }
+
         //Purge action queue
         actionQueue.dequeueAll(host);
         //notify action manager
@@ -149,7 +152,7 @@ public class HeartbeatMonitor implements Runnable {
       }
       if (hostState == HostState.WAITING_FOR_HOST_STATUS_UPDATES) {
         long timeSpentInState = hostObj.getTimeInState();
-        if (timeSpentInState + 5*threadWakeupInterval < now) {
+        if (timeSpentInState + 5 * threadWakeupInterval < now) {
           //Go back to init, the agent will be asked to register again in the next heartbeat
           LOG.warn("timeSpentInState + 5*threadWakeupInterval < now, Go back to init");
           hostObj.setState(HostState.INIT);
@@ -159,7 +162,7 @@ public class HeartbeatMonitor implements Runnable {
       // Get status of service components
       List<StatusCommand> cmds = generateStatusCommands(hostname);
       LOG.trace("Generated " + cmds.size() + " status commands for host: " +
-        hostname);
+          hostname);
       if (cmds.isEmpty()) {
         // Nothing to do
       } else {

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
index 4d97759..9380420 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
@@ -2255,12 +2255,20 @@ public class AmbariManagementControllerImpl implements
         stage.getExecutionCommandWrapper(clientHost,
           smokeTestRole).getExecutionCommand()
           .setConfigurationTags(configTags);
-
+        
         // Generate cluster host info
         stage.getExecutionCommandWrapper(clientHost, smokeTestRole)
             .getExecutionCommand()
             .setClusterHostInfo(StageUtils.getClusterHostInfo(
                 clusters.getHostsForCluster(cluster.getClusterName()), cluster, hostsMap, injector));
+
+        Map<String,String> hostParams = new HashMap<String, String>();
+        hostParams.put("stack_version", cluster.getDesiredStackVersion().getStackVersion());
+        // smoke tests need stack version
+        stage.getExecutionCommandWrapper(clientHost,
+            smokeTestRole).getExecutionCommand()
+            .setHostLevelParams(hostParams);
+
       }
 
       RoleCommandOrder rco = this.getRCO(cluster);

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractProviderModule.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractProviderModule.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractProviderModule.java
index 34d3a26..923fca9 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractProviderModule.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractProviderModule.java
@@ -31,6 +31,7 @@ import org.apache.ambari.server.controller.utilities.PredicateBuilder;
 import org.apache.ambari.server.controller.utilities.PropertyHelper;
 import org.apache.ambari.server.controller.AmbariManagementController;
 import com.google.inject.Inject;
+import org.apache.ambari.server.controller.utilities.StreamProvider;
 import org.apache.ambari.server.state.Service;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -46,6 +47,7 @@ public abstract class AbstractProviderModule implements ProviderModule, Resource
   private static final int PROPERTY_REQUEST_READ_TIMEOUT    = 10000;
 
   private static final String CLUSTER_NAME_PROPERTY_ID                  = PropertyHelper.getPropertyId("Clusters", "cluster_name");
+  private static final String CLUSTER_VERSION_PROPERTY_ID               = PropertyHelper.getPropertyId("Clusters", "version");
   private static final String HOST_COMPONENT_CLUSTER_NAME_PROPERTY_ID   = PropertyHelper.getPropertyId("HostRoles", "cluster_name");
   private static final String HOST_COMPONENT_HOST_NAME_PROPERTY_ID      = PropertyHelper.getPropertyId("HostRoles", "host_name");
   private static final String HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID = PropertyHelper.getPropertyId("HostRoles", "component_name");
@@ -97,6 +99,12 @@ public abstract class AbstractProviderModule implements ProviderModule, Resource
   private AmbariManagementController managementController;
 
   /**
+   * Cluster versions.
+   */
+  private final Map<String, PropertyHelper.MetricsVersion> clusterVersionsMap =
+      new HashMap<String, PropertyHelper.MetricsVersion>();
+
+  /**
    * The map of host components.
    */
   private Map<String, Map<String, String>> clusterHostComponentMap;
@@ -156,8 +164,11 @@ public abstract class AbstractProviderModule implements ProviderModule, Resource
   public void update(ResourceProviderEvent event) {
     Resource.Type type = event.getResourceType();
 
-    if (type == Resource.Type.Cluster ||
-        type == Resource.Type.Host ||
+    if (type == Resource.Type.Cluster) {
+      resetInit();
+      updateClusterVersion();
+    }
+    if (type == Resource.Type.Host ||
         type == Resource.Type.HostComponent) {
       resetInit();
     }
@@ -235,7 +246,7 @@ public abstract class AbstractProviderModule implements ProviderModule, Resource
   }
 
   protected void putResourceProvider(Resource.Type type, ResourceProvider resourceProvider) {
-    resourceProviders.put( type , resourceProvider);
+    resourceProviders.put(type, resourceProvider);
   }
 
   protected void putPropertyProviders(Resource.Type type, List<PropertyProvider> providers) {
@@ -251,15 +262,15 @@ public abstract class AbstractProviderModule implements ProviderModule, Resource
 
     switch (type){
       case Cluster :
-        providers.add(new GangliaReportPropertyProvider(
-            PropertyHelper.getGangliaPropertyIds(type),
+        providers.add(createGangliaReportPropertyProvider(
+            type,
             streamProvider,
             this,
             PropertyHelper.getPropertyId("Clusters", "cluster_name")));
         break;
       case Host :
-        providers.add(new GangliaHostPropertyProvider(
-            PropertyHelper.getGangliaPropertyIds(type),
+        providers.add(createGangliaHostPropertyProvider(
+            type,
             streamProvider,
             this,
             PropertyHelper.getPropertyId("Hosts", "cluster_name"),
@@ -267,8 +278,8 @@ public abstract class AbstractProviderModule implements ProviderModule, Resource
         ));
         break;
       case Component :
-        providers.add(new JMXPropertyProvider(
-            PropertyHelper.getJMXPropertyIds(type),
+        providers.add(createJMXPropertyProvider(
+            type,
             streamProvider,
             this,
             PropertyHelper.getPropertyId("ServiceComponentInfo", "cluster_name"),
@@ -277,16 +288,16 @@ public abstract class AbstractProviderModule implements ProviderModule, Resource
             PropertyHelper.getPropertyId("ServiceComponentInfo", "state"),
             Collections.singleton("STARTED")));
 
-        providers.add(new GangliaComponentPropertyProvider(
-            PropertyHelper.getGangliaPropertyIds(type),
+        providers.add(createGangliaComponentPropertyProvider(
+            type,
             streamProvider,
             this,
             PropertyHelper.getPropertyId("ServiceComponentInfo", "cluster_name"),
             PropertyHelper.getPropertyId("ServiceComponentInfo", "component_name")));
         break;
       case HostComponent:
-        providers.add(new JMXPropertyProvider(
-            PropertyHelper.getJMXPropertyIds(type),
+        providers.add(createJMXPropertyProvider(
+            type,
             streamProvider,
             this,
             PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
@@ -295,8 +306,8 @@ public abstract class AbstractProviderModule implements ProviderModule, Resource
             PropertyHelper.getPropertyId("HostRoles", "state"),
             Collections.singleton("STARTED")));
 
-        providers.add(new GangliaHostComponentPropertyProvider(
-            PropertyHelper.getGangliaPropertyIds(type),
+        providers.add(createGangliaHostComponentPropertyProvider(
+            type,
             streamProvider,
             this,
             PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
@@ -329,7 +340,39 @@ public abstract class AbstractProviderModule implements ProviderModule, Resource
     }
   }
 
-  private void initProviderMaps() throws SystemException{
+  /**
+   * Update a map of known cluster names to version of JMX metrics.  The JMX metrics version is based on the
+   * HDP version of the cluster.
+   */
+  private void updateClusterVersion() {
+    synchronized (clusterVersionsMap) {
+      clusterVersionsMap.clear();
+
+      ResourceProvider provider = getResourceProvider(Resource.Type.Cluster);
+      Request request = PropertyHelper.getReadRequest(CLUSTER_NAME_PROPERTY_ID, CLUSTER_VERSION_PROPERTY_ID);
+
+      try {
+        Set<Resource> clusters = provider.getResources(request, null);
+
+        for (Resource cluster : clusters) {
+          String clusterVersion = (String) cluster.getPropertyValue(CLUSTER_VERSION_PROPERTY_ID);
+
+          PropertyHelper.MetricsVersion version =  clusterVersion.startsWith("HDP-1") ?
+              PropertyHelper.MetricsVersion.HDP1 : PropertyHelper.MetricsVersion.HDP2;
+
+          clusterVersionsMap.put(
+              (String) cluster.getPropertyValue(CLUSTER_NAME_PROPERTY_ID),
+              version);
+        }
+      } catch (Exception e) {
+        if (LOG.isErrorEnabled()) {
+          LOG.error("Caught exception while trying to get the cluster versions.", e);
+        }
+      }
+    }
+  }
+
+  private void initProviderMaps() throws SystemException {
     ResourceProvider provider = getResourceProvider(Resource.Type.Cluster);
     Request          request  = PropertyHelper.getReadRequest(CLUSTER_NAME_PROPERTY_ID);
 
@@ -465,4 +508,112 @@ public abstract class AbstractProviderModule implements ProviderModule, Resource
     }
     return mConfigs;
   }
+
+  /**
+   * Create the JMX property provider for the given type.
+   */
+  private PropertyProvider createJMXPropertyProvider( Resource.Type type, StreamProvider streamProvider,
+                                                      JMXHostProvider jmxHostProvider,
+                                                      String clusterNamePropertyId,
+                                                      String hostNamePropertyId,
+                                                      String componentNamePropertyId,
+                                                      String statePropertyId,
+                                                      Set<String> healthyStates) {
+    updateClusterVersion();
+
+    Map<PropertyHelper.MetricsVersion, AbstractPropertyProvider> providers =
+        new HashMap<PropertyHelper.MetricsVersion, AbstractPropertyProvider>();
+
+    for (PropertyHelper.MetricsVersion version : PropertyHelper.MetricsVersion.values()) {
+
+      providers.put(version, new JMXPropertyProvider(PropertyHelper.getJMXPropertyIds(type, version), streamProvider,
+          jmxHostProvider, clusterNamePropertyId, hostNamePropertyId, componentNamePropertyId, statePropertyId, healthyStates));
+    }
+
+    return new VersioningPropertyProvider(clusterVersionsMap, providers, clusterNamePropertyId);
+  }
+
+  /**
+   * Create the Ganglia report property provider for the given type.
+   */
+  private PropertyProvider createGangliaReportPropertyProvider( Resource.Type type, StreamProvider streamProvider,
+                                                                GangliaHostProvider hostProvider,
+                                                                String clusterNamePropertyId) {
+    updateClusterVersion();
+
+    Map<PropertyHelper.MetricsVersion, AbstractPropertyProvider> providers =
+        new HashMap<PropertyHelper.MetricsVersion, AbstractPropertyProvider>();
+
+    for (PropertyHelper.MetricsVersion version : PropertyHelper.MetricsVersion.values()) {
+
+      providers.put(version, new GangliaReportPropertyProvider(PropertyHelper.getGangliaPropertyIds(type, version), streamProvider,
+          hostProvider, clusterNamePropertyId));
+    }
+
+    return new VersioningPropertyProvider(clusterVersionsMap, providers, clusterNamePropertyId);
+  }
+
+  /**
+   * Create the Ganglia host property provider for the given type.
+   */
+  private PropertyProvider createGangliaHostPropertyProvider( Resource.Type type, StreamProvider streamProvider,
+                                                              GangliaHostProvider hostProvider,
+                                                              String clusterNamePropertyId,
+                                                              String hostNamePropertyId) {
+    updateClusterVersion();
+
+    Map<PropertyHelper.MetricsVersion, AbstractPropertyProvider> providers =
+        new HashMap<PropertyHelper.MetricsVersion, AbstractPropertyProvider>();
+
+    for (PropertyHelper.MetricsVersion version : PropertyHelper.MetricsVersion.values()) {
+
+      providers.put(version, new GangliaHostPropertyProvider(PropertyHelper.getGangliaPropertyIds(type, version), streamProvider,
+          hostProvider, clusterNamePropertyId, hostNamePropertyId));
+    }
+
+    return new VersioningPropertyProvider(clusterVersionsMap, providers, clusterNamePropertyId);
+  }
+
+  /**
+   * Create the Ganglia component property provider for the given type.
+   */
+  private PropertyProvider createGangliaComponentPropertyProvider( Resource.Type type, StreamProvider streamProvider,
+                                                                   GangliaHostProvider hostProvider,
+                                                                   String clusterNamePropertyId,
+                                                                   String componentNamePropertyId) {
+    updateClusterVersion();
+
+    Map<PropertyHelper.MetricsVersion, AbstractPropertyProvider> providers =
+        new HashMap<PropertyHelper.MetricsVersion, AbstractPropertyProvider>();
+
+    for (PropertyHelper.MetricsVersion version : PropertyHelper.MetricsVersion.values()) {
+
+      providers.put(version, new GangliaComponentPropertyProvider(PropertyHelper.getGangliaPropertyIds(type, version), streamProvider,
+          hostProvider, clusterNamePropertyId, componentNamePropertyId));
+    }
+
+    return new VersioningPropertyProvider(clusterVersionsMap, providers, clusterNamePropertyId);
+  }
+
+  /**
+   * Create the Ganglia host component property provider for the given type.
+   */
+  private PropertyProvider createGangliaHostComponentPropertyProvider( Resource.Type type, StreamProvider streamProvider,
+                                                                       GangliaHostProvider hostProvider,
+                                                                       String clusterNamePropertyId,
+                                                                       String hostNamePropertyId,
+                                                                       String componentNamePropertyId) {
+    updateClusterVersion();
+
+    Map<PropertyHelper.MetricsVersion, AbstractPropertyProvider> providers =
+        new HashMap<PropertyHelper.MetricsVersion, AbstractPropertyProvider>();
+
+    for (PropertyHelper.MetricsVersion version : PropertyHelper.MetricsVersion.values()) {
+
+      providers.put(version, new GangliaHostComponentPropertyProvider(PropertyHelper.getGangliaPropertyIds(type, version), streamProvider,
+          hostProvider, clusterNamePropertyId, hostNamePropertyId, componentNamePropertyId));
+    }
+
+    return new VersioningPropertyProvider(clusterVersionsMap, providers, clusterNamePropertyId);
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterControllerImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterControllerImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterControllerImpl.java
index 869069d..5bad486 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterControllerImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterControllerImpl.java
@@ -301,28 +301,28 @@ public class ClusterControllerImpl implements ClusterController {
     Iterable<Resource> resources = getResources(type, readRequest, predicate);
 
     PredicateBuilder pb = new PredicateBuilder();
-    PredicateBuilder.PredicateBuilderPredicate pbPredicate = null;
+    PredicateBuilder.PredicateBuilderWithPredicate pbWithPredicate = null;
 
     for (Resource resource : resources) {
-      if (pbPredicate != null) {
-        pb = pbPredicate.or();
+      if (pbWithPredicate != null) {
+        pb = pbWithPredicate.or();
       }
 
-      pb          = pb.begin();
-      pbPredicate = null;
+      pb              = pb.begin();
+      pbWithPredicate = null;
 
       for (String keyPropertyId : keyPropertyIds) {
-        if (pbPredicate != null) {
-          pb = pbPredicate.and();
+        if (pbWithPredicate != null) {
+          pb = pbWithPredicate.and();
         }
-        pbPredicate =
+        pbWithPredicate =
             pb.property(keyPropertyId).equals((Comparable) resource.getPropertyValue(keyPropertyId));
       }
-      if (pbPredicate != null) {
-        pbPredicate = pbPredicate.end();
+      if (pbWithPredicate != null) {
+        pbWithPredicate = pbWithPredicate.end();
       }
     }
-    return pbPredicate == null ? null : pbPredicate.toPredicate();
+    return pbWithPredicate == null ? null : pbWithPredicate.toPredicate();
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/VersioningPropertyProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/VersioningPropertyProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/VersioningPropertyProvider.java
new file mode 100644
index 0000000..9c94ece
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/VersioningPropertyProvider.java
@@ -0,0 +1,107 @@
+/**
+ * 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.
+ */
+
+package org.apache.ambari.server.controller.internal;
+
+import org.apache.ambari.server.controller.spi.Predicate;
+import org.apache.ambari.server.controller.spi.PropertyProvider;
+import org.apache.ambari.server.controller.spi.Request;
+import org.apache.ambari.server.controller.spi.Resource;
+import org.apache.ambari.server.controller.spi.SystemException;
+import org.apache.ambari.server.controller.utilities.PropertyHelper;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * A property provider that delegates to other Property providers based on the
+ * metrics version of the cluster associated with the resources being populated.
+ */
+public class VersioningPropertyProvider extends BaseProvider implements PropertyProvider {
+
+  private final Map<String, PropertyHelper.MetricsVersion> clusterVersions;
+  private final Map<PropertyHelper.MetricsVersion, AbstractPropertyProvider> providers;
+  private final String clusterNamePropertyId;
+
+  /**
+   * Create a version aware property provider.
+   */
+  public VersioningPropertyProvider(Map<String, PropertyHelper.MetricsVersion> clusterVersions,
+                                    Map<PropertyHelper.MetricsVersion, AbstractPropertyProvider> providers,
+                                    String clusterNamePropertyId) {
+    super(getComponentMetrics(providers));
+
+    this.clusterVersions       = clusterVersions;
+    this.providers             = providers;
+    this.clusterNamePropertyId = clusterNamePropertyId;
+  }
+
+  @Override
+  public Set<Resource> populateResources(Set<Resource> resources, Request request, Predicate predicate)
+      throws SystemException {
+
+    Set<Resource> keepers = new HashSet<Resource>();
+
+    // divide up the given resources according to their associated clusters
+    Map<String, Set<Resource>> resourcesByCluster = new HashMap<String, Set<Resource>>();
+
+    for (Resource resource : resources) {
+      String clusterName = (String) resource.getPropertyValue(clusterNamePropertyId);
+
+      Set<Resource> resourceSet = resourcesByCluster.get(clusterName);
+
+      if (resourceSet == null) {
+        resourceSet = new HashSet<Resource>();
+        resourcesByCluster.put(clusterName, resourceSet);
+      }
+      resourceSet.add(resource);
+    }
+
+    // give each set of resources to the underlying provider that matches the
+    // metrics version of the associated cluster
+    for (Map.Entry<String, Set<Resource>> entry : resourcesByCluster.entrySet()) {
+      String clusterName = entry.getKey();
+      Set<Resource> resourceSet = entry.getValue();
+
+      PropertyHelper.MetricsVersion version = clusterVersions.get(clusterName);
+
+      if (version != null) {
+
+        AbstractPropertyProvider provider = providers.get(version);
+        if (provider != null) {
+          keepers.addAll(provider.populateResources(resourceSet, request, predicate));
+        }
+      }
+    }
+    return keepers;
+  }
+
+  // ----- helper methods ----------------------------------------------------
+
+  private static Set<String> getComponentMetrics(Map<PropertyHelper.MetricsVersion, AbstractPropertyProvider> providers) {
+
+    Set<String> propertyIds = new HashSet<String>();
+
+    for (AbstractPropertyProvider provider : providers.values()) {
+      propertyIds.addAll(provider.getPropertyIds());
+    }
+    return propertyIds;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/PredicateBuilder.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/PredicateBuilder.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/PredicateBuilder.java
index 32414a4..ccadc43 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/PredicateBuilder.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/PredicateBuilder.java
@@ -32,65 +32,6 @@ import java.util.List;
 
 /**
  * Builder for predicates.
- * <p/>
- * The builder enforces a domain specific language according to the following
- * grammar :
- * <p/>
- * <predicate> ::= <property_name> <relational_operator> <value>
- * <predicate> ::= NOT <predicate>
- * <predicate> ::= ( <predicate> )
- * <predicate> ::= <predicate> AND <predicate>
- * <predicate> ::= <predicate> OR <predicate>
- *
- * <relational_operator> ::= =|>|<|>=|<=
- * <p/>
- * The predicate builder uses the normal method chaining of the builder pattern
- * along with intermediate objects.  The use of intermediate objects allows
- * for compiler checked constraints.
- * <p/>
- * For example, the predicate builder can be used to build a predicate where
- * property1=="foo" && property2=="bar".
- *
- * <pre>
- * {@code
- * PredicateBuilder builder = new PredicateBuilder();
- *
- * Predicate predicate = builder.property(property1).equals("foo").
- *     and().property(property2).equals("bar").toPredicate();
- * }
- * </pre>
- *
- * In this example, we are starting with an instance of {@link PredicateBuilder}.
- * Calling the method {@link PredicateBuilder#property(String)} returns an
- * instance of {@link PredicateBuilderProperty} which exposes methods for attaching
- * a relational operator to the property to form a simple predicate.
- * <p/>
- * Notice that the method {@link PredicateBuilderProperty#equals(Comparable)}
- * returns an instance of {@link PredicateBuilderPredicate} which exposes methods
- * for using predicates with logical operators to create complex predicates.
- * <p/>
- * Calling the method {@link PredicateBuilderPredicate#and()} returns an instance
- * of {@link PredicateBuilder} which allows us to start over building the predicate
- * for property2.
- * <p/>
- * The reason for having these intermediate return objects is that they only
- * expose the methods that make sense for that point in the building process.
- * In other words, we can use the compiler to check the syntax of our DSL
- * grammar at compile time rather than having a single builder class with a
- * bunch of runtime checks.
- * <p/>
- * For example, if the user tries to make an inappropriate call to the and()
- * method ...
- *
- * <pre>
- * {@code
- *
- * Predicate predicate = builder.property(property1).and().
- *     property(property2).equals("bar").toPredicate();
- * }
- * </pre>
- *
- * ... the compiler will flag it as an error and the code will simply not compile.
  */
 public class PredicateBuilder {
 
@@ -101,122 +42,47 @@ public class PredicateBuilder {
   private boolean done = false;
   private boolean not = false;
 
-
-  // ----- Constructors ------------------------------------------------------
-
-  /**
-   * Construct a predicate builder.
-   */
   public PredicateBuilder() {
     this.outer = null;
   }
 
-  /**
-   * Construct a predicate builder within another predicate builder.
-   *
-   * @param outer  the outer predicate builder
-   */
   private PredicateBuilder(PredicateBuilder outer) {
     this.outer = outer;
   }
 
-
-  // ----- enums ------------------------------------------------------
-
-  /**
-   * Logical operators
-   */
   private enum Operator {
     And,
     Or
   }
 
-
-  // ----- PredicateBuilder --------------------------------------------------
-
-  /**
-   * Create a property from the given property id.  This supports method
-   * chaining by returning an instance of {@link PredicateBuilderProperty}
-   * which is an intermediate object that represents the property in the DSL.
-   *
-   * @param id  the property id
-   *
-   * @return a property that can be used in the building of the predicate.
-   *
-   * @throws IllegalStateException if an attempt is made to reuse a predicate builder
-   */
-  public PredicateBuilderProperty property(String id) {
+  public PredicateBuilderWithProperty property(String id) {
     checkDone();
     propertyId = id;
-    return new PredicateBuilderProperty();
+    return new PredicateBuilderWithProperty();
   }
 
-  /**
-   * Set the builder to negate the predicate being built.  This supports method
-   * chaining by returning an instance of {@link PredicateBuilder} which can be
-   * used to continue building the predicate.
-   *
-   * For example, the following shows a usage of the not() method to
-   * produce a predicate where property "p1" does not equal "foo".
-   *
-   * <pre>
-   * {@code
-   * Predicate predicate = builder.not().property("p1").equals("foo").toPredicate();
-   * }
-   * </pre>
-   *
-   * @return a builder to be used to continue building the predicate
-   */
   public PredicateBuilder not() {
     not = true;
     return this;
   }
 
-  /**
-   * Set the builder to begin a block around the predicate being built.  Calling this
-   * method is the equivalent of using a left parenthesis.  This supports method
-   * chaining by returning an instance of {@link PredicateBuilder} which can be
-   * used to continue building the predicate.
-   *
-   * For example, the following shows a usage of the begin() method to
-   * produce a predicate where p1==foo && (p2==bar || p3 == cat).
-   *
-   * <pre>
-   * {@code
-   * Predicate predicate = builder.property("p1").equals("foo").and().
-   *     begin().property("p2").equals("bar").or().property("p3").equals("cat").end().
-   *     toPredicate();
-   * }
-   * </pre>
-   *
-   * @return a builder to be used to continue building the predicate
-   *
-   * @throws IllegalStateException if an attempt is made to reuse a predicate builder
-   */
   public PredicateBuilder begin() {
     checkDone();
     return new PredicateBuilder(this);
   }
 
-  /**
-   * Produce a {@link Predicate} object from the builder.
-   *
-   * @return the predicate object
-   */
   public Predicate toPredicate() {
     return getPredicate();
   }
 
-  // ----- helper methods ----------------------------------------------------
-
   private void checkDone() {
     if (done) {
       throw new IllegalStateException("Can't reuse a predicate builder.");
     }
   }
 
-  private PredicateBuilderPredicate getPredicateBuilderWithPredicate() {
-    return new PredicateBuilderPredicate();
+  private PredicateBuilderWithPredicate getPredicateBuilderWithPredicate() {
+    return new PredicateBuilderWithPredicate();
   }
 
   private void addPredicate(Predicate predicate) {
@@ -261,212 +127,60 @@ public class PredicateBuilder {
     throw new IllegalStateException("Can't return a predicate.");
   }
 
-  // ----- inner classes -----------------------------------------------------
-
-  // ----- PredicateBuilderProperty ------------------------------------------
-
-  /**
-   * A builder object that represents the property portion of the predicate being built.
-   * The PredicateBuilderProperty is itself a builder object that may be returned for
-   * method chaining of the predicate builder methods.
-   */
-  public class PredicateBuilderProperty {
-
-    /**
-     * Create a {@link PredicateBuilderPredicate} representing an equals 
-     * predicate for the property represented by this builder for the given
-     * value.  This supports method chaining by returning an instance of 
-     * {@link PredicateBuilderPredicate} which can be used to continue building 
-     * the predicate.
-     *
-     * For example, the following shows a usage of the equals() method to
-     * produce a predicate where p1==foo.
-     *
-     * <pre>
-     * {@code
-     * Predicate predicate = builder.property("p1").equals("foo").
-     *     toPredicate();
-     * }
-     * </pre>
-     * 
-     * @param value  the right operand (value) of the = operator
-     * @param <T>    the type of the property
-     *           
-     * @return a new builder representing an equals predicate
-     *
-     * @throws IllegalStateException if no property name was specified on this builder
-     */
-    public <T>PredicateBuilderPredicate equals(Comparable<T> value) {
+  public class PredicateBuilderWithProperty {
+
+    // ----- Equals -----
+    public <T>PredicateBuilderWithPredicate equals(Comparable<T> value) {
       if (propertyId == null) {
         throw new IllegalStateException("No property.");
       }
       addPredicate(new EqualsPredicate<T>(propertyId, value));
 
-      return new PredicateBuilderPredicate();
+      return new PredicateBuilderWithPredicate();
     }
 
-    /**
-     * Create a {@link PredicateBuilderPredicate} representing an greater than 
-     * predicate for the property represented by this builder for the given
-     * value.  This supports method chaining by returning an instance of 
-     * {@link PredicateBuilderPredicate} which can be used to continue building 
-     * the predicate.
-     *
-     * For example, the following shows a usage of the greaterThan() method to
-     * produce a predicate where p1 > 5.
-     *
-     * <pre>
-     * {@code
-     * Predicate predicate = builder.property("p1").greaterThan(5).
-     *     toPredicate();
-     * }
-     * </pre>
-     *
-     * @param value  the right operand (value) of the > operator
-     * @param <T>    the type of the property
-     *
-     * @return a new builder representing a greater than predicate
-     *
-     * @throws IllegalStateException if no property name was specified on this builder
-     */
-    public <T>PredicateBuilderPredicate greaterThan(Comparable<T> value) {
+    // ----- Greater than -----
+    public <T>PredicateBuilderWithPredicate greaterThan(Comparable<T> value) {
       if (propertyId == null) {
         throw new IllegalStateException("No property.");
       }
       addPredicate(new GreaterPredicate<T>(propertyId, value));
 
-      return new PredicateBuilderPredicate();
+      return new PredicateBuilderWithPredicate();
     }
 
-    /**
-     * Create a {@link PredicateBuilderPredicate} representing a 
-     * greater than or equals predicate for the property represented by this 
-     * builder for the given value.  This supports method chaining by returning 
-     * an instance of {@link PredicateBuilderPredicate} which can be used to 
-     * continue building the predicate.
-     *
-     * For example, the following shows a usage of the greaterThanEqualTo()
-     * method to produce a predicate where p1 >= 5.
-     *
-     * <pre>
-     * {@code
-     * Predicate predicate = builder.property("p1").greaterThanEqualTo(5).
-     *     toPredicate();
-     * }
-     * </pre>
-     *
-     * @param value  the right operand (value) of the >= operator
-     * @param <T>    the type of the property
-     *
-     * @return a new builder representing a greater than or equals predicate
-     *
-     * @throws IllegalStateException if no property name was specified on this builder
-     */
-    public <T>PredicateBuilderPredicate greaterThanEqualTo(Comparable<T> value) {
+    // ----- Greater than equal to -----
+    public <T>PredicateBuilderWithPredicate greaterThanEqualTo(Comparable<T> value) {
       if (propertyId == null) {
         throw new IllegalStateException("No property.");
       }
       addPredicate(new GreaterEqualsPredicate<T>(propertyId, value));
 
-      return new PredicateBuilderPredicate();
+      return new PredicateBuilderWithPredicate();
     }
 
-    /**
-     * Create a {@link PredicateBuilderPredicate} representing a 
-     * less than predicate for the property represented by this builder 
-     * for the given value.  This supports method chaining by returning 
-     * an instance of {@link PredicateBuilderPredicate} which can be used to 
-     * continue building the predicate.
-     *
-     * For example, the following shows a usage of the lessThan()
-     * method to produce a predicate where p1 < 5.
-     *
-     * <pre>
-     * {@code
-     * Predicate predicate = builder.property("p1").lessThan(5).
-     *     toPredicate();
-     * }
-     * </pre>
-     *
-     * @param value  the right operand (value) of the < operator
-     * @param <T>    the type of the property
-     *
-     * @return a new builder representing a less than predicate
-     *
-     * @throws IllegalStateException if no property name was specified on this builder
-     */
-    public <T>PredicateBuilderPredicate lessThan(Comparable<T> value) {
+    // ----- Less than -----
+    public <T>PredicateBuilderWithPredicate lessThan(Comparable<T> value) {
       if (propertyId == null) {
         throw new IllegalStateException("No property.");
       }
       addPredicate(new LessPredicate<T>(propertyId, value));
 
-      return new PredicateBuilderPredicate();
+      return new PredicateBuilderWithPredicate();
     }
 
-    /**
-     * Create a {@link PredicateBuilderPredicate} representing a 
-     * less than or equals predicate for the property represented by this 
-     * builder for the given value.  This supports method chaining by returning 
-     * an instance of {@link PredicateBuilderPredicate} which can be used to 
-     * continue building the predicate.
-     *
-     * For example, the following shows a usage of the lessThanEqualTo()
-     * method to produce a predicate where p1 <= 5.
-     *
-     * <pre>
-     * {@code
-     * Predicate predicate = builder.property("p1").lessThanEqualTo(5).
-     *     toPredicate();
-     * }
-     * </pre>
-     *
-     * @param value  the right operand (value) of the <= operator
-     * @param <T>    the type of the property
-     *
-     * @return a new builder representing a less than or equals predicate
-     *
-     * @throws IllegalStateException if no property name was specified on this builder
-     */
-    public <T>PredicateBuilderPredicate lessThanEqualTo(Comparable<T> value) {
+    // ----- Less than equal to -----
+    public <T>PredicateBuilderWithPredicate lessThanEqualTo(Comparable<T> value) {
       if (propertyId == null) {
         throw new IllegalStateException("No property.");
       }
       addPredicate(new LessEqualsPredicate<T>(propertyId, value));
 
-      return new PredicateBuilderPredicate();
+      return new PredicateBuilderWithPredicate();
     }
   }
 
-  // ----- PredicateBuilderPredicate -----------------------------------------
-  
-  /**
-   * A builder object that represents an inner predicate portion of the predicate being built.
-   * Note that the predicate represented by an instance of PredicateBuilderPredicate may be
-   * part of a larger complex predicate being built by the predicate builder.  The
-   * PredicateBuilderPredicate is itself a builder object that may be returned for method
-   * chaining of the predicate builder methods.
-   */
-  public class PredicateBuilderPredicate {
-
-    /**
-     * Get a {@link PredicateBuilder} object that can be used to build a 
-     * predicate that will be ANDed with the predicate represented by this 
-     * PredicateBuilderPredicate.
-     *
-     * For example, the following shows a usage of the and() method to
-     * produce a predicate where p1==foo && p2==bar.
-     *
-     * <pre>
-     * {@code
-     * Predicate predicate = builder.property(p1).equals("foo").
-     *     and().property(p2).equals("bar").toPredicate();
-     * }
-     * </pre>
-     * 
-     * @return a new predicate builder that should be used to build the predicate
-     *         being ANDed with the predicate from this builder
-     */
+  public class PredicateBuilderWithPredicate {
     public PredicateBuilder and() {
 
       if (operator != Operator.And) {
@@ -476,24 +190,6 @@ public class PredicateBuilder {
       return PredicateBuilder.this;
     }
 
-    /**
-     * Get a {@link PredicateBuilder} object that can be used to build a 
-     * predicate that will be ORed with the predicate represented by this 
-     * PredicateBuilderPredicate.
-     *
-     * For example, the following shows a usage of the and() method to
-     * produce a predicate where p1==foo || p2==bar.
-     *
-     * <pre>
-     * {@code
-     * Predicate predicate = builder.property(p1).equals("foo").
-     *     or().property(p2).equals("bar").toPredicate();
-     * }
-     * </pre>
-     *
-     * @return a new predicate builder that should be used to build the predicate
-     *         being ORed with the predicate from this builder
-     */
     public PredicateBuilder or() {
 
       if (operator != Operator.Or) {
@@ -503,13 +199,6 @@ public class PredicateBuilder {
       return PredicateBuilder.this;
     }
 
-    /**
-     * Produce a {@link Predicate} object from the builder.
-     *
-     * @return the predicate object
-     *
-     * @throws IllegalStateException if the block is unbalanced (missing end call)
-     */
     public Predicate toPredicate() {
       if (outer != null) {
         throw new IllegalStateException("Unbalanced block - missing end.");
@@ -518,28 +207,7 @@ public class PredicateBuilder {
       return getPredicate();
     }
 
-    /**
-     * Set the builder to end a block around the predicate being built.  Calling this
-     * method is the equivalent of using a right parenthesis.  This supports method
-     * chaining by returning an instance of {@link PredicateBuilderPredicate} which can 
-     * be used to continue building the predicate.
-     *
-     * For example, the following shows a usage of the end() method to
-     * produce a predicate where p1==foo && (p2==bar || p3 == cat).
-     *
-     * <pre>
-     * {@code
-     * Predicate predicate = builder.property("p1").equals("foo").and().
-     *     begin().property("p2").equals("bar").or().property("p3").equals("cat").end().
-     *     toPredicate();
-     * }
-     * </pre>
-     *
-     * @return a builder to be used to continue building the predicate
-     *
-     * @throws IllegalStateException if the block is unbalanced (missing end call)
-     */
-    public PredicateBuilderPredicate end() {
+    public PredicateBuilderWithPredicate end() {
       if (outer == null) {
         throw new IllegalStateException("Unbalanced block - missing begin.");
       }

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/PropertyHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/PropertyHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/PropertyHelper.java
index 80b58bc..6bf738a 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/PropertyHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/PropertyHelper.java
@@ -40,15 +40,27 @@ public class PropertyHelper {
 
   private static final String PROPERTIES_FILE = "properties.json";
   private static final String GANGLIA_PROPERTIES_FILE = "ganglia_properties.json";
+  private static final String GANGLIA_PROPERTIES_FILE_2 = "ganglia_properties_2.json";
   private static final String JMX_PROPERTIES_FILE = "jmx_properties.json";
+  private static final String JMX_PROPERTIES_FILE_2 = "jmx_properties_2.json";
   private static final String KEY_PROPERTIES_FILE = "key_properties.json";
   private static final char EXTERNAL_PATH_SEP = '/';
 
   private static final Map<Resource.Type, Set<String>> PROPERTY_IDS = readPropertyIds(PROPERTIES_FILE);
   private static final Map<Resource.Type, Map<String, Map<String, PropertyInfo>>> JMX_PROPERTY_IDS = readPropertyProviderIds(JMX_PROPERTIES_FILE);
+  private static final Map<Resource.Type, Map<String, Map<String, PropertyInfo>>> JMX_PROPERTY_IDS_2 = readPropertyProviderIds(JMX_PROPERTIES_FILE_2);
   private static final Map<Resource.Type, Map<String, Map<String, PropertyInfo>>> GANGLIA_PROPERTY_IDS = readPropertyProviderIds(GANGLIA_PROPERTIES_FILE);
+  private static final Map<Resource.Type, Map<String, Map<String, PropertyInfo>>> GANGLIA_PROPERTY_IDS_2 = readPropertyProviderIds(GANGLIA_PROPERTIES_FILE_2);
   private static final Map<Resource.Type, Map<Resource.Type, String>> KEY_PROPERTY_IDS = readKeyPropertyIds(KEY_PROPERTIES_FILE);
 
+  /**
+   * Metrics versions.
+   */
+  public enum MetricsVersion {
+    HDP1, // HDP-1.x
+    HDP2  // HDP-2.x
+  }
+
   public static String getPropertyId(String category, String name) {
     String propertyId =  (category == null || category.isEmpty())? name :
            (name == null || name.isEmpty()) ? category : category + EXTERNAL_PATH_SEP + name;
@@ -81,12 +93,25 @@ public class PropertyHelper {
     return propertyIds;
   }
 
-  public static Map<String, Map<String, PropertyInfo>> getGangliaPropertyIds(Resource.Type resourceType) {
-    return GANGLIA_PROPERTY_IDS.get(resourceType);
+  public static Map<String, Map<String, PropertyInfo>> getGangliaPropertyIds(Resource.Type resourceType, MetricsVersion version) {
+    switch (version) {
+      case HDP1:
+        return GANGLIA_PROPERTY_IDS.get(resourceType);
+      case HDP2:
+      default:
+        return GANGLIA_PROPERTY_IDS_2.get(resourceType);
+    }
   }
 
-  public static Map<String, Map<String, PropertyInfo>> getJMXPropertyIds(Resource.Type resourceType) {
-    return JMX_PROPERTY_IDS.get(resourceType);
+  public static Map<String, Map<String, PropertyInfo>> getJMXPropertyIds(Resource.Type resourceType, MetricsVersion version) {
+
+    switch (version) {
+      case HDP1:
+        return JMX_PROPERTY_IDS.get(resourceType);
+      case HDP2:
+      default:
+        return JMX_PROPERTY_IDS_2.get(resourceType);
+    }
   }
 
   public static Map<Resource.Type, String> getKeyPropertyIds(Resource.Type resourceType) {

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/java/org/apache/ambari/server/metadata/ActionMetadata.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/metadata/ActionMetadata.java b/ambari-server/src/main/java/org/apache/ambari/server/metadata/ActionMetadata.java
index a8b4798..d47a100 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/metadata/ActionMetadata.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/metadata/ActionMetadata.java
@@ -57,6 +57,8 @@ public class ActionMetadata {
     serviceActions.put("hcfs"       , Arrays.asList(Role.HCFS_SERVICE_CHECK.toString()));
     serviceActions.put("hbase"      , Arrays.asList(Role.HBASE_SERVICE_CHECK.toString()));
     serviceActions.put("mapreduce"  , Arrays.asList(Role.MAPREDUCE_SERVICE_CHECK.toString()));
+    serviceActions.put("mapreduce2" , Arrays.asList(Role.MAPREDUCE2_SERVICE_CHECK.toString()));
+    serviceActions.put("yarn"       , Arrays.asList(Role.YARN_SERVICE_CHECK.toString()));
     serviceActions.put("zookeeper"  , Arrays.asList(Role.ZOOKEEPER_QUORUM_SERVICE_CHECK.toString()));
     serviceActions.put("hive"       , Arrays.asList(Role.HIVE_SERVICE_CHECK.toString()));
     serviceActions.put("hcat"       , Arrays.asList(Role.HCAT_SERVICE_CHECK.toString()));
@@ -72,6 +74,10 @@ public class ActionMetadata {
     serviceCheckActions.put("hbase", Role.HBASE_SERVICE_CHECK.toString());
     serviceCheckActions.put("mapreduce",
         Role.MAPREDUCE_SERVICE_CHECK.toString());
+    serviceCheckActions.put("mapreduce2",
+        Role.MAPREDUCE2_SERVICE_CHECK.toString());
+    serviceCheckActions.put("yarn",
+        Role.YARN_SERVICE_CHECK.toString());
     serviceCheckActions.put("zookeeper",
         Role.ZOOKEEPER_QUORUM_SERVICE_CHECK.toString());
     serviceCheckActions.put("hive", Role.HIVE_SERVICE_CHECK.toString());

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/java/org/apache/ambari/server/metadata/RoleCommandOrder.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/metadata/RoleCommandOrder.java b/ambari-server/src/main/java/org/apache/ambari/server/metadata/RoleCommandOrder.java
index 644c962..8af70e8 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/metadata/RoleCommandOrder.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/metadata/RoleCommandOrder.java
@@ -272,6 +272,8 @@ public class RoleCommandOrder {
         RoleCommand.START);
       addDependency(Role.NODEMANAGER, RoleCommand.START, Role.DATANODE,
         RoleCommand.START);
+      addDependency(Role.NODEMANAGER, RoleCommand.START, Role.RESOURCEMANAGER,
+        RoleCommand.START);
       addDependency(Role.HISTORYSERVER, RoleCommand.START, Role.NAMENODE,
         RoleCommand.START);
       addDependency(Role.HISTORYSERVER, RoleCommand.START, Role.DATANODE,
@@ -330,6 +332,16 @@ public class RoleCommandOrder {
         Role.JOBTRACKER, RoleCommand.START);
       addDependency(Role.MAPREDUCE_SERVICE_CHECK, RoleCommand.EXECUTE,
         Role.TASKTRACKER, RoleCommand.START);
+      addDependency(Role.MAPREDUCE2_SERVICE_CHECK, RoleCommand.EXECUTE,
+        Role.NODEMANAGER, RoleCommand.START);
+      addDependency(Role.MAPREDUCE2_SERVICE_CHECK, RoleCommand.EXECUTE,
+        Role.RESOURCEMANAGER, RoleCommand.START);
+      addDependency(Role.MAPREDUCE2_SERVICE_CHECK, RoleCommand.EXECUTE,
+        Role.HISTORYSERVER, RoleCommand.START);
+      addDependency(Role.YARN_SERVICE_CHECK, RoleCommand.EXECUTE,
+        Role.NODEMANAGER, RoleCommand.START);
+      addDependency(Role.YARN_SERVICE_CHECK, RoleCommand.EXECUTE,
+        Role.RESOURCEMANAGER, RoleCommand.START);
       addDependency(Role.RESOURCEMANAGER_SERVICE_CHECK, RoleCommand.EXECUTE,
         Role.RESOURCEMANAGER, RoleCommand.START);
       addDependency(Role.OOZIE_SERVICE_CHECK, RoleCommand.EXECUTE,

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
index c00dbc1..471e385 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
@@ -200,13 +200,28 @@ CREATE TABLE workflow (
   startTime BIGINT, lastUpdateTime BIGINT,
   numJobsTotal INTEGER, numJobsCompleted INTEGER,
   inputBytes BIGINT, outputBytes BIGINT,
-  duration BIGINT,
+  duration BIGINT, workflowTags TEXT,
   PRIMARY KEY (workflowId),
   FOREIGN KEY (parentWorkflowId) REFERENCES workflow(workflowId)
 );
 
 GRANT ALL PRIVILEGES ON TABLE workflow TO "mapred";
 
+CREATE TABLE application (
+  appId TEXT,
+  workflowId TEXT,
+  appName TEXT,
+  workflowEntityName TEXT,
+  userName TEXT, queue TEXT,
+  submitTime BIGINT, launchTime BIGINT, finishTime BIGINT,
+  appType TEXT,
+  status TEXT,
+  appInfo TEXT,
+  PRIMARY KEY(appId), FOREIGN KEY(workflowId) REFERENCES workflow(workflowId)
+);
+
+GRANT ALL PRIVILEGES ON TABLE application TO "mapred";
+
 CREATE TABLE job (
   jobId TEXT, workflowId TEXT, jobName TEXT, workflowEntityName TEXT,
   userName TEXT, queue TEXT, acls TEXT, confPath TEXT, 

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/ganglia_properties.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/ganglia_properties.json b/ambari-server/src/main/resources/ganglia_properties.json
index becb5ba..b9feeab 100644
--- a/ambari-server/src/main/resources/ganglia_properties.json
+++ b/ambari-server/src/main/resources/ganglia_properties.json
@@ -6285,109 +6285,109 @@
         "temporal":true
       },
 
-      "metrics/yarn/Queue/running_0":{
+      "ServiceComponentInfo/rm_metrics/yarn/Queue/running_0":{
         "metric":"yarn.Queue.running_0",
-        "pointInTime":false,
+        "pointInTime":true,
         "temporal":true
       },
-      "metrics/yarn/Queue/running_60":{
-        "metric":"yarn.Queue.running_60",
-        "pointInTime":false,
+      "ServiceComponentInfo/rm_metrics/yarn/Queue/running_60":{
+        "metric":"yarn.QueueMetrics.running_60",
+        "pointInTime":true,
         "temporal":true
       },
-      "metrics/yarn/Queue/running_300":{
-        "metric":"yarn.Queue.running_300",
-        "pointInTime":false,
+      "ServiceComponentInfo/rm_metrics/yarn/Queue/running_300":{
+        "metric":"yarn.QueueMetrics.running_300",
+        "pointInTime":true,
         "temporal":true
       },
-      "metrics/yarn/Queue/running_1440":{
-        "metric":"yarn.Queue.running_1440",
-        "pointInTime":false,
+      "ServiceComponentInfo/rm_metrics/yarn/Queue/running_1440":{
+        "metric":"yarn.QueueMetrics.running_1440",
+        "pointInTime":true,
         "temporal":true
       },
-      "metrics/yarn/Queue/AppsSubmitted":{
-        "metric":"yarn.Queue.AppsSubmitted",
-        "pointInTime":false,
+      "ServiceComponentInfo/rm_metrics/yarn/Queue/AppsSubmitted":{
+        "metric":"yarn.QueueMetrics.AppsSubmitted",
+        "pointInTime":true,
         "temporal":true
       },
-      "metrics/yarn/Queue/AppsRunning":{
-        "metric":"yarn.Queue.AppsRunning",
-        "pointInTime":false,
+      "ServiceComponentInfo/rm_metrics/yarn/Queue/AppsRunning":{
+        "metric":"yarn.QueueMetrics.AppsRunning",
+        "pointInTime":true,
         "temporal":true
       },
-      "metrics/yarn/Queue/AppsPending":{
-        "metric":"yarn.Queue.AppsPending",
-        "pointInTime":false,
+      "ServiceComponentInfo/rm_metrics/yarn/Queue/AppsPending":{
+        "metric":"yarn.QueueMetrics.AppsPending",
+        "pointInTime":true,
         "temporal":true
       },
-      "metrics/yarn/Queue/AppsCompleted":{
-        "metric":"yarn.Queue.AppsCompleted",
-        "pointInTime":false,
+      "ServiceComponentInfo/rm_metrics/yarn/Queue/AppsCompleted":{
+        "metric":"yarn.QueueMetrics.AppsCompleted",
+        "pointInTime":true,
         "temporal":true
       },
-      "metrics/yarn/Queue/AppsKilled":{
-        "metric":"yarn.Queue.AppsKilled",
-        "pointInTime":false,
+      "ServiceComponentInfo/rm_metrics/yarn/Queue/AppsKilled":{
+        "metric":"yarn.QueueMetrics.AppsKilled",
+        "pointInTime":true,
         "temporal":true
       },
-      "metrics/yarn/Queue/AppsFailed":{
-        "metric":"yarn.Queue.AppsFailed",
-        "pointInTime":false,
+      "ServiceComponentInfo/rm_metrics/yarn/Queue/AppsFailed":{
+        "metric":"yarn.QueueMetrics.AppsFailed",
+        "pointInTime":true,
         "temporal":true
       },
-      "metrics/yarn/Queue/AllocatedMB":{
-        "metric":"yarn.Queue.AllocatedMB",
-        "pointInTime":false,
+      "ServiceComponentInfo/rm_metrics/yarn/Queue/AllocatedMB":{
+        "metric":"yarn.QueueMetrics.AllocatedMB",
+        "pointInTime":true,
         "temporal":true
       },
-      "metrics/yarn/Queue/AllocatedContainers":{
-        "metric":"yarn.Queue.AllocatedContainers",
-        "pointInTime":false,
+      "ServiceComponentInfo/rm_metrics/yarn/Queue/AllocatedContainers":{
+        "metric":"yarn.QueueMetrics.AllocatedContainers",
+        "pointInTime":true,
         "temporal":true
       },
-      "metrics/yarn/Queue/AggregateContainersAllocated":{
-        "metric":"yarn.Queue.AggregateContainersAllocated",
-        "pointInTime":false,
+      "ServiceComponentInfo/rm_metrics/yarn/Queue/AggregateContainersAllocated":{
+        "metric":"yarn.QueueMetrics.AggregateContainersAllocated",
+        "pointInTime":true,
         "temporal":true
       },
-      "metrics/yarn/Queue/AggregateContainersReleased":{
-        "metric":"yarn.Queue.AggregateContainersReleased",
-        "pointInTime":false,
+      "ServiceComponentInfo/rm_metrics/yarn/Queue/AggregateContainersReleased":{
+        "metric":"yarn.QueueMetrics.AggregateContainersReleased",
+        "pointInTime":true,
         "temporal":true
       },
-      "metrics/yarn/Queue/AvailableMB":{
-        "metric":"yarn.Queue.AvailableMB",
-        "pointInTime":false,
+      "ServiceComponentInfo/rm_metrics/yarn/Queue/AvailableMB":{
+        "metric":"yarn.QueueMetrics.AvailableMB",
+        "pointInTime":true,
         "temporal":true
       },
-      "metrics/yarn/Queue/PendingMB":{
-        "metric":"yarn.Queue.PendingMB",
-        "pointInTime":false,
+      "ServiceComponentInfo/rm_metrics/yarn/Queue/PendingMB":{
+        "metric":"yarn.QueueMetrics.PendingMB",
+        "pointInTime":true,
         "temporal":true
       },
-      "metrics/yarn/Queue/PendingContainers":{
-        "metric":"yarn.Queue.PendingContainers",
-        "pointInTime":false,
+      "ServiceComponentInfo/rm_metrics/yarn/Queue/PendingContainers":{
+        "metric":"yarn.QueueMetrics.PendingContainers",
+        "pointInTime":true,
         "temporal":true
       },
-      "metrics/yarn/Queue/ReservedMB":{
-        "metric":"yarn.Queue.ReservedMB",
-        "pointInTime":false,
+      "ServiceComponentInfo/rm_metrics/yarn/Queue/ReservedMB":{
+        "metric":"yarn.QueueMetrics.ReservedMB",
+        "pointInTime":true,
         "temporal":true
       },
-      "metrics/yarn/Queue/ReservedContainers":{
-        "metric":"yarn.Queue.ReservedContainers",
-        "pointInTime":false,
+      "ServiceComponentInfo/rm_metrics/yarn/Queue/ReservedContainers":{
+        "metric":"yarn.QueueMetrics.ReservedContainers",
+        "pointInTime":true,
         "temporal":true
       },
-      "metrics/yarn/Queue/ActiveUsers":{
-        "metric":"yarn.Queue.ActiveUsers",
-        "pointInTime":false,
+      "ServiceComponentInfo/rm_metrics/yarn/Queue/ActiveUsers":{
+        "metric":"yarn.QueueMetrics.ActiveUsers",
+        "pointInTime":true,
         "temporal":true
       },
-      "metrics/yarn/Queue/ActiveApplications":{
-        "metric":"yarn.Queue.ActiveApplications",
-        "pointInTime":false,
+      "ServiceComponentInfo/rm_metrics/yarn/Queue/ActiveApplications":{
+        "metric":"yarn.QueueMetrics.ActiveApplications",
+        "pointInTime":true,
         "temporal":true
       },
 
@@ -21193,4 +21193,4 @@
       }
     }
   }
-}
\ No newline at end of file
+}


[02/14] AMBARI-2677. Merge from branch-1.4.0 (ncole)

Posted by nc...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/utils/ajax.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/ajax.js b/ambari-web/app/utils/ajax.js
index ef0f109..d84ff0e 100644
--- a/ambari-web/app/utils/ajax.js
+++ b/ambari-web/app/utils/ajax.js
@@ -406,6 +406,26 @@ var urls = {
       };
     }
   },
+  'service.metrics.yarn.gc': {
+    'real': '/clusters/{clusterName}/hosts/{resourceManager}/host_components/RESOURCEMANAGER?fields=metrics/jvm/gcTimeMillis[{fromSeconds},{toSeconds},{stepSeconds}]',
+    'mock': '/data/services/metrics/yarn/gc.json',
+    'testInProduction': true
+  },
+  'service.metrics.yarn.jobs_threads': {
+    'real': '/clusters/{clusterName}/hosts/{resourceManager}/host_components/RESOURCEMANAGER?fields=metrics/jvm/threadsRunnable[{fromSeconds},{toSeconds},{stepSeconds}],metrics/jvm/threadsBlocked[{fromSeconds},{toSeconds},{stepSeconds}],metrics/jvm/threadsWaiting[{fromSeconds},{toSeconds},{stepSeconds}],metrics/jvm/threadsTimedWaiting[{fromSeconds},{toSeconds},{stepSeconds}]',
+    'mock': '/data/services/metrics/yarn/jvm_threads.json',
+    'testInProduction': true
+  },
+  'service.metrics.yarn.rpc': {
+    'real': '/clusters/{clusterName}/hosts/{resourceManager}/host_components/RESOURCEMANAGER?fields=metrics/rpc/RpcQueueTime_avg_time[{fromSeconds},{toSeconds},{stepSeconds}]',
+    'mock': '/data/services/metrics/yarn/rpc.json',
+    'testInProduction': true
+  },
+  'service.metrics.yarn.jobs_heap': {
+    'real': '/clusters/{clusterName}/hosts/{resourceManager}/host_components/RESOURCEMANAGER?fields=metrics/jvm/memNonHeapUsedM[{fromSeconds},{toSeconds},{stepSeconds}],metrics/jvm/memNonHeapCommittedM[{fromSeconds},{toSeconds},{stepSeconds}],metrics/jvm/memHeapUsedM[{fromSeconds},{toSeconds},{stepSeconds}],metrics/jvm/memHeapCommittedM[{fromSeconds},{toSeconds},{stepSeconds}]',
+    'mock': '/data/services/metrics/yarn/jvm_heap.json',
+    'testInProduction': true
+  },
   'dashboard.cluster_metrics.cpu': {
     'real': '/clusters/{clusterName}/?fields=metrics/cpu[{fromSeconds},{toSeconds},{stepSeconds}]',
     'mock': '/data/cluster_metrics/cpu_1hr.json',

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/utils/app_graph.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/app_graph.js b/ambari-web/app/utils/app_graph.js
new file mode 100644
index 0000000..0cb6f53
--- /dev/null
+++ b/ambari-web/app/utils/app_graph.js
@@ -0,0 +1,441 @@
+/**
+ * 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.
+ */
+
+
+module.exports = {
+  create:function(domId, wfData, jobData, svgw, svgh, nodeHeight, labelFontSize, maxLabelWidth, axisPadding, stageFontSize) {
+    // initialize variables
+    var nodes = new Array();
+    var links = new Array();
+    var numNodes = 0;
+    var id = domId;
+    var formatDuration = this.formatDuration;
+
+    // create map from entity names to nodes
+    var existingNodes = new Array();
+    var jobData = (jobData) ? jobData : new Array();
+    var minStartTime = 0;
+    if (jobData.length > 0)
+      minStartTime = jobData[0].submitTime;
+    var maxFinishTime = 0;
+    // iterate through job data
+    for (var i = 0; i < jobData.length; i++) {
+      jobData[i].info = "jobId:"+jobData[i].name+"  \n"+
+        "nodeName:"+jobData[i].entityName+"  \n"+
+        "status:"+jobData[i].status+"  \n"+
+        "startTime:"+(new Date(jobData[i].submitTime).toUTCString())+"  \n"+
+        "duration:"+formatDuration(jobData[i].finishTime - jobData[i].submitTime);
+      jobData[i].state = jobData[i].status==="FINISHED";
+      minStartTime = Math.min(minStartTime, jobData[i].submitTime);
+      maxFinishTime = Math.max(maxFinishTime, jobData[i].finishTime);
+      // add a node to the nodes array and to a provided map of entity names to nodes
+      existingNodes[jobData[i].entityName] = jobData[i];
+      nodes.push(jobData[i]);
+      numNodes++;
+    }
+    var dag = eval('(' + wfData + ')').dag;
+    var sourceMarker = new Array();
+    var targetMarker = new Array();
+    var sourceMap = new Array();
+    // for each source node in the context, create links between it and its target nodes
+    for (var source in dag) {
+      var sourceNode = null;
+      if (source in existingNodes)
+        sourceNode = existingNodes[source];
+      for (var i = 0; i < dag[source].length; i++) {
+        var targetNode = null;
+        if (dag[source][i] in existingNodes)
+          targetNode = existingNodes[dag[source][i]];
+        // add a link between sourceNode and targetNode
+        // if source or target is null, add marker indicating unsubmitted job and return
+        if (sourceNode==null) {
+          if (targetNode==null)
+            continue;
+          sourceMarker.push(targetNode);
+          continue;
+        }
+        if (targetNode==null) {
+          targetMarker.push(sourceNode);
+          continue;
+        }
+        // add link between nodes
+        var state = false;
+        if (sourceNode.state && targetNode.state)
+          state = true;
+        links.push({"source":sourceNode, "target":targetNode, "state":state, "value":sourceNode.output});
+        // add source to map of targets to sources
+        if (!(targetNode.name in sourceMap))
+          sourceMap[targetNode.name] = new Array();
+        sourceMap[targetNode.name].push(sourceNode);
+      }
+    }
+  
+    // display the graph
+    // rules of thumb: nodeHeight = 20, labelFontSize = 14, maxLabelWidth = 180
+    //                 nodeHeight = 15, labelFontSize = 10, maxLabelWidth = 120
+    //                 nodeHeight = 40, labelFontSize = 20, maxLabelWidth = 260
+    //                 nodeHeight = 30, labelFontSize = 16
+    var nodeHeight = nodeHeight || 26;
+    var labelFontSize = labelFontSize || 12;
+    var maxLabelWidth = maxLabelWidth || 180;
+    var axisPadding = axisPadding || 30;
+    var stageFontSize = stageFontSize || 16;
+
+    // draw timeline graph
+    var margin = {"vertical":10, "horizontal":50};
+    var w = svgw - 2*margin.horizontal;
+
+    var startTime = minStartTime;
+    var elapsedTime = maxFinishTime - minStartTime;
+    var x = d3.time.scale.utc()
+      .domain([startTime, startTime+elapsedTime])
+      .range([0, w]);
+    var xrel = d3.time.scale()
+      .domain([0, elapsedTime])
+      .range([0, w]);
+
+    // process nodes and determine their x and y positions, width and height
+    var minNodeSpacing = nodeHeight/2;
+    var ends = new Array();
+    var maxIndex = 0;
+    nodes.sort(function(a,b){return a.name.localeCompare(b.name);});
+    for (var i = 0; i < numNodes; i++) {
+      var d = nodes[i];
+      d.x = x(d.submitTime);
+      d.w = x(d.finishTime) - x(d.submitTime);
+      if (d.w < d.stages.length*(nodeHeight-4)) {
+        d.w = d.stages.length*(nodeHeight-4);
+        if (d.x + d.w > w)
+          d.x = w - d.w;
+      }
+      var effectiveX = d.x
+      var effectiveWidth = d.w;
+      if (d.w < maxLabelWidth) {
+        effectiveWidth = maxLabelWidth;
+        if (d.x + effectiveWidth > w)
+          effectiveX = w - effectiveWidth;
+        else if (d.x > 0)
+          effectiveX = d.x+(d.w-maxLabelWidth)/2;
+      }
+      // select "lane" (slot for y-position) for this node
+      // starting at the slot above the node's closest source node (or 0, if none exists)
+      // and moving down until a slot is found that has no nodes within minNodeSpacing of this node
+      // excluding slots that contain more than one source of this node
+      var index = 0;
+      var rejectIndices = new Array();
+      if (d.name in sourceMap) {
+        var sources = sourceMap[d.name];
+        var closestSource = sources[0];
+        var indices = new Array();
+        for (var j = 0; j < sources.length; j++) {
+          if (sources[j].index in indices)
+            rejectIndices[sources[j].index] = true;
+          indices[sources[j].index] = true;
+          if (sources[j].submitTime + sources[j].elapsedTime > closestSource.submitTime + closestSource.elapsedTime)
+            closestSource = sources[j];
+        }
+        index = Math.max(0, closestSource.index-1);
+      }
+      while ((index in ends) && ((index in rejectIndices) || (ends[index]+minNodeSpacing >= effectiveX))) {
+        index++
+      }
+      ends[index] = Math.max(effectiveX + effectiveWidth);
+      maxIndex = Math.max(maxIndex, index);
+      d.y = index*2*nodeHeight + axisPadding;
+      d.h = nodeHeight;
+      d.index = index;
+    }
+
+    var h = 2*axisPadding + 2*nodeHeight*(maxIndex+1);
+    var realh = svgh - 2*margin.vertical;
+    var scale = 1;
+    if (h > realh)
+      scale = realh / h;
+    svgh = Math.min(svgh, h + 2*margin.vertical);
+    var svg = d3.select("div#" + id).append("svg:svg")
+      .attr("width", svgw+"px")
+      .attr("height", svgh+"px");
+    
+    var svgg = svg.append("g")
+      .attr("transform", "translate("+margin.horizontal+","+margin.vertical+") scale("+scale+")");
+
+    // add an untranslated white rectangle below everything
+    // so mouse doesn't have to be over nodes for panning/zooming
+    svgg.append("svg:rect")
+      .attr("x", 0)
+      .attr("y", 0)
+      .attr("width", svgw)
+      .attr("height", svgh/scale)
+      .attr("style", "fill:white;stroke:none");
+ 
+    // create axes
+    var topAxis = d3.svg.axis()
+      .scale(x)
+      .orient("bottom");
+    var bottomAxis = d3.svg.axis()
+      .scale(xrel)
+      .orient("top")
+      .tickFormat(function(x) { return formatDuration(x.getTime()); });
+    var topg = svgg.append("g")
+      .attr("class", "x axis top")
+      .call(topAxis);
+    topg.append("svg:text")
+      .attr("class", "axislabel")
+      .attr("x", -9)
+      .attr("y", 13)
+      .text("Time");
+    var botg = svgg.append("g")
+      .attr("class", "x axis bottom")
+      .call(bottomAxis)
+      .attr("transform", "translate(0,"+h+")")
+    botg.append("svg:text")
+      .attr("class", "axislabel")
+      .attr("x", -9)
+      .attr("y", -19)
+      .text("Elapsed");
+    botg.append("svg:text")
+      .attr("class", "axislabel")
+      .attr("x", -9)
+      .attr("y", -4)
+      .text("Time");
+
+  
+    // create a rectangle for each node
+    var boxes = svgg.append("svg:g").selectAll("rect")
+      .data(nodes)
+      .enter().append("svg:rect")
+      .attr("x", function(d) { return d.x; } )
+      .attr("y", function(d) { return d.y; } )
+      .attr("width", function(d) { return d.w; } )
+      .attr("height", function(d) { return d.h; } )
+      .attr("class", function (d) {
+        return "node " + (d.state ? " finished" : "");
+      })
+      .attr("id", function (d) {
+        return d.name;
+      })
+      .append("title")
+      .text(function(d) { return d.info; });
+  
+    // defs for arrowheads marked as to whether they link finished jobs or not
+    svgg.append("svg:defs").selectAll("arrowmarker")
+      .data(["finished", "unfinished", "stage"])
+      .enter().append("svg:marker")
+      .attr("id", String)
+      .attr("viewBox", "0 -5 10 10")
+      .attr("markerWidth", 6)
+      .attr("markerHeight", 6)
+      .attr("refX", function(d) { return (d==="stage") ? 5 : 3 })
+      .attr("orient", "auto")
+      .append("svg:path")
+      .attr("d", function(d) { return (d==="stage") ? "M0,-2L6,0L0,2" : "M0,-3L8,0L0,3" });
+    // defs for unsubmitted node marker
+    svgg.append("svg:defs").selectAll("circlemarker")
+      .data(["circle"])
+      .enter().append("svg:marker")
+      .attr("id", String)
+      .attr("viewBox", "-2 -2 18 18")
+      .attr("markerWidth", 10)
+      .attr("markerHeight", 10)
+      .attr("refX", 10)
+      .attr("refY", 5)
+      .attr("orient", "auto")
+      .append("svg:circle")
+      .attr("cx", 5)
+      .attr("cy", 5)
+      .attr("r", 5);
+
+    // create dangling links representing unsubmitted jobs
+    var markerWidth = nodeHeight/2;
+    var sourceMarker = svgg.append("svg:g").selectAll("line")
+      .data(sourceMarker)
+      .enter().append("svg:line")
+      .attr("x1", function(d) { return d.x - markerWidth; } )
+      .attr("x2", function(d) { return d.x; } )
+      .attr("y1", function(d) { return d.y; } )
+      .attr("y2", function(d) { return d.y + 3; } )
+      .attr("class", "source mark")
+      .attr("marker-start", "url(#circle)");
+    var targetMarker = svgg.append("svg:g").selectAll("line")
+      .data(targetMarker)
+      .enter().append("svg:line")
+      .attr("x1", function(d) { return d.x + d.w + markerWidth; } )
+      .attr("x2", function(d) { return d.x + d.w; } )
+      .attr("y1", function(d) { return d.y + d.h; } )
+      .attr("y2", function(d) { return d.y + d.h - 3; } )
+      .attr("class", "target mark")
+      .attr("marker-start", "url(#circle)");
+
+    // create links between the nodes
+    var lines = svgg.append("svg:g").selectAll("path")
+      .data(links)
+      .enter().append("svg:path")
+      .attr("d", function(d) {
+        var s = d.source;
+        var t = d.target;
+        var x1 = s.x + s.w;
+        var x2 = t.x;
+        var y1 = s.y;
+        var y2 = t.y;
+        if (y1==y2) {
+          y1 += s.h/2;
+          y2 += t.h/2;
+        } else if (y1 < y2) {
+          y1 += s.h;
+        } else {
+          y2 += t.h;
+        }
+        return "M "+x1+" "+y1+" L "+((x2+x1)/2)+" "+((y2+y1)/2)+" L "+x2+" "+y2;
+      } )
+      .attr("class", function (d) {
+        return "link" + (d.state ? " finished" : "");
+      })
+      .attr("marker-mid", function (d) {
+        return "url(#" + (d.state ? "finished" : "unfinished") + ")";
+      });
+  
+    // create text group for each node label
+    var text = svgg.append("svg:g").selectAll("g")
+      .data(nodes)
+      .enter().append("svg:g");
+  
+    // add a shadow copy of the node label (will have a lighter color and thicker
+    // stroke for legibility)
+    text.append("svg:text")
+      .attr("x", function(d) {
+        var goal = d.x + d.w/2;
+        var halfLabel = maxLabelWidth/2;
+        if (goal < halfLabel) return halfLabel;
+        else if (goal > w-halfLabel) return w-halfLabel;
+        return goal;
+      } )
+      .attr("y", function(d) { return d.y + d.h + labelFontSize; } )
+      .attr("class", "joblabel shadow")
+      .attr("style", "font: "+labelFontSize+"px sans-serif")
+      .text(function (d) {
+        return d.name;
+      });
+  
+    // add the main node label
+    text.append("svg:text")
+      .attr("x", function(d) {
+        var goal = d.x + d.w/2;
+        var halfLabel = maxLabelWidth/2;
+        if (goal < halfLabel) return halfLabel;
+        else if (goal > w-halfLabel) return w-halfLabel;
+        return goal;
+      } )
+      .attr("y", function(d) { return d.y + d.h + labelFontSize; } )
+      .attr("class", "joblabel")
+      .attr("style", "font: "+labelFontSize+"px sans-serif")
+      .text(function (d) {
+        return d.name;
+      });
+
+    // add node stage information
+    var topstageg = svgg.append("svg:g");
+    for (var i = 0; i < numNodes; i++) {
+      var parentg = topstageg.append("svg:g")
+        .attr("class", "parent");
+      var d = nodes[i];
+      var cr = d.h / 2 - 2;
+      var cy = d.y + cr + 2;
+      var cxSpacing = d.w / d.stages.length;
+      if (cxSpacing < 2*cr)
+        cxSpacing = 2*cr;
+      var cxBase = d.x + cxSpacing / 2;
+
+      for (var j = 0; j < d.stages.length; j++) {
+        var data = d.stages[j];
+        var stageg = parentg.append("svg:g")
+          .attr("id", "child"+j);
+        var cx = cxBase + j*cxSpacing;
+        var x1 = cx + cr;
+        var x2 = cx + cxSpacing - cr;
+        if (cxSpacing!=2*cr && j!=d.stages.length-1) {
+          var path = stageg.append("svg:path")
+            .attr("class", "link stage")
+            .attr("d", "M "+x1+" "+cy+" L "+((x1+x2)/2)+" "+cy+" L "+x2+" "+cy)
+            .attr("marker-end", "url(#stage)");
+        }
+        if (j==0) {
+          stageg.append("svg:rect")
+            .attr("class", "stage")
+            .attr("x", cx - cr)
+            .attr("y", cy - cr)
+            .attr("width", 2*cr)
+            .attr("height", 2*cr)
+            .append("title")
+            .text("Map stage with "+data+" task"+(data != 1 ? "s" : ""));
+        } else {
+          stageg.append("svg:circle")
+            .attr("class", "stage")
+            .attr("r", cr)
+            .attr("cx", cx)
+            .attr("cy", cy)
+            .append("title")
+            .text("Reduce stage with "+data+" task"+(data != 1 ? "s" : ""));
+        }
+        var fontSize = stageFontSize;
+        if (data > 9) fontSize = fontSize - 2;
+        if (data > 99) fontSize = fontSize - 4;
+        if (data > 999) fontSize = fontSize - 2;
+        if (data > 9999) fontSize = fontSize - 1;
+        stageg.append("svg:text")
+          .attr("class", "stagelabel")
+          .attr("x", cx)
+          .attr("y", cy)
+          .text(data)
+          .attr("style", "font: "+fontSize+"px sans-serif");
+      }
+    }
+
+    svg.call(d3.behavior.zoom().on("zoom", function() {
+      var left = Math.min(Math.max(d3.event.translate[0]+margin.horizontal, margin.horizontal-w*d3.event.scale*scale), margin.horizontal+w);
+      var top = Math.min(Math.max(d3.event.translate[1]+margin.vertical, margin.vertical-h*d3.event.scale*scale), margin.vertical+h);
+      svgg.attr("transform", "translate("+left+","+top+") scale("+(d3.event.scale*scale)+")");
+    }));
+  },
+  formatDuration:function(d) {
+    if (d==0) { return "0" }
+    var subseconds = parseInt(d) / 1000;
+    if (subseconds < 1)
+      return subseconds + "s";
+    var seconds = Math.floor(subseconds);
+    if ( seconds < 60 )
+      return seconds + "s";
+    var minutes = Math.floor(seconds / 60);
+    if ( minutes < 60 ) {
+      var x = seconds - 60*minutes;
+      return minutes + "m" + (x==0 ? "" : " " + x + "s");
+    }
+    var hours = Math.floor(minutes / 60);
+    if ( hours < 24 ) {
+      var x = minutes - 60*hours;
+      return hours + "h" + (x==0 ? "" : " " + x + "m");
+    }
+    var days = Math.floor(hours / 24);
+    if ( days < 7 ) {
+      var x = hours - 24*days;
+      return days + "d " + (x==0 ? "" : " " + x + "h");
+    }
+    var weeks = Math.floor(days / 7);
+    var x = days - 7*weeks;
+    return weeks + "w " + (x==0 ? "" : " " + x + "d");
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/utils/config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/config.js b/ambari-web/app/utils/config.js
index c7c1b5f..93cc25e 100644
--- a/ambari-web/app/utils/config.js
+++ b/ambari-web/app/utils/config.js
@@ -25,6 +25,10 @@ var globalPropertyToServicesMap = null;
 
 App.config = Em.Object.create({
 
+  isHDP2: function(){
+    return (stringUtils.compareVersions(App.get('currentStackVersionNumber'), "2.0") === 1 ||
+      stringUtils.compareVersions(App.get('currentStackVersionNumber'), "2.0") === 0)
+  }.property('App.currentStackVersionNumber'),
   preDefinedServiceConfigs: function(){
     var configs = this.get('preDefinedConfigProperties');
     var services = [];
@@ -42,23 +46,30 @@ App.config = Em.Object.create({
     return require('data/config_mapping');
   }.property('App.currentStackVersionNumber'),
   preDefinedConfigProperties: function() {
-    if (stringUtils.compareVersions(App.get('currentStackVersionNumber'), "2.0") === 1 ||
-      stringUtils.compareVersions(App.get('currentStackVersionNumber'), "2.0") === 0) {
+    if (this.get('isHDP2')) {
       return require('data/HDP2/config_properties').configProperties;
     }
     return require('data/config_properties').configProperties;
-  }.property('App.currentStackVersionNumber'),
-  preDefinedCustomConfigs: require('data/custom_configs'),
+  }.property('isHDP2'),
+  preDefinedCustomConfigs: function () {
+    if (this.get('isHDP2')) {
+      return require('data/HDP2/custom_configs');
+    }
+    return require('data/custom_configs');
+  }.property('isHDP2'),
   //categories which contain custom configs
   categoriesWithCustom: ['CapacityScheduler'],
   //configs with these filenames go to appropriate category not in Advanced
   customFileNames: function() {
     if (App.supports.capacitySchedulerUi) {
+      if(this.get('isHDP2')){
+        return ['capacity-scheduler.xml'];
+      }
       return ['capacity-scheduler.xml', 'mapred-queue-acls.xml'];
     } else {
       return [];
     }
-  }.property(''),
+  }.property('isHDP2'),
   /**
    * Cache of loaded configurations. This is useful in not loading
    * same configuration multiple times. It is populated in multiple
@@ -127,6 +138,20 @@ App.config = Em.Object.create({
       config.isRequired = true;
     }
   },
+  capacitySchedulerFilter: function () {
+    var yarnRegex = /^yarn\.scheduler\.capacity\.root\.(?!unfunded)([a-z]([\_\-a-z0-9]{0,50}))\.(acl_administer_jobs|acl_submit_jobs|state|user-limit-factor|maximum-capacity|capacity)$/i;
+    var self = this;
+    if(this.get('isHDP2')){
+      return function (_config) {
+        return (yarnRegex.test(_config.name));
+      }
+    } else {
+      return function (_config) {
+        return (_config.name.indexOf('mapred.capacity-scheduler.queue.') !== -1) ||
+          (/^mapred\.queue\.[a-z]([\_\-a-z0-9]{0,50})\.(acl-administer-jobs|acl-submit-job)$/i.test(_config.name));
+      }
+    }
+  }.property('isHDP2'),
   /**
    * return:
    *   configs,
@@ -311,64 +336,11 @@ App.config = Em.Object.create({
   addCustomConfigs: function (configs) {
     var preDefinedCustomConfigs = $.extend(true, [], this.get('preDefinedCustomConfigs'));
     var stored = configs.filter(function (_config) {
-      if (this.get('categoriesWithCustom').contains(_config.category)) return true;
+      return this.get('categoriesWithCustom').contains(_config.category);
     }, this);
-    var queueProperties = stored.filter(function (_config) {
-      if ((_config.name.indexOf('mapred.capacity-scheduler.queue.') !== -1) ||
-        (/mapred.queue.[a-z]([\_\-a-z0-9]{0,50}).acl-administer-jobs/i.test(_config.name)) ||
-        (/mapred.queue.[a-z]([\_\-a-z0-9]{0,50}).acl-submit-job/i.test(_config.name))) {
-        return true;
-      }
-    });
+    var queueProperties = stored.filter(this.get('capacitySchedulerFilter'));
     if (queueProperties.length) {
       queueProperties.setEach('isQueue', true);
-    } else {
-      queueProperties = preDefinedCustomConfigs.filterProperty('isQueue');
-      queueProperties.forEach(function (customConfig) {
-        this.setDefaultQueue(customConfig, 'default');
-        configs.push(customConfig);
-      }, this);
-    }
-  },
-  /**
-   * set values to properties of queue
-   * @param customConfig
-   * @param queueName
-   */
-  setDefaultQueue: function (customConfig, queueName) {
-    customConfig.name = customConfig.name.replace(/<queue-name>/, queueName);
-    //default values of queue
-    switch (customConfig.name) {
-      case 'mapred.capacity-scheduler.queue.' + queueName + '.capacity':
-        customConfig.value = '100';
-        break;
-      case 'mapred.capacity-scheduler.queue.' + queueName + '.maximum-capacity':
-        customConfig.value = '100';
-        break;
-      case 'mapred.capacity-scheduler.queue.' + queueName + '.minimum-user-limit-percent':
-        customConfig.value = '100';
-        break;
-      case 'mapred.capacity-scheduler.queue.' + queueName + '.user-limit-factor':
-        customConfig.value = '1';
-        break;
-      case 'mapred.capacity-scheduler.queue.' + queueName + '.maximum-initialized-active-tasks':
-        customConfig.value = '200000';
-        break;
-      case 'mapred.capacity-scheduler.queue.' + queueName + '.maximum-initialized-active-tasks-per-user':
-        customConfig.value = '100000';
-        break;
-      case 'mapred.capacity-scheduler.queue.' + queueName + '.init-accept-jobs-factor':
-        customConfig.value = '10';
-        break;
-      case 'mapred.capacity-scheduler.queue.' + queueName + '.supports-priority':
-        customConfig.value = 'false';
-        break;
-      case 'mapred.queue.' + queueName + '.acl-submit-job':
-        customConfig.value = '*';
-        break;
-      case 'mapred.queue.' + queueName + '.acl-administer-jobs':
-        customConfig.value = '*';
-        break;
     }
   },
 
@@ -799,4 +771,4 @@ App.config = Em.Object.create({
     }
   }
 
-});
\ No newline at end of file
+});

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/utils/date.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/date.js b/ambari-web/app/utils/date.js
index 8716aa2..a5f7c83 100644
--- a/ambari-web/app/utils/date.js
+++ b/ambari-web/app/utils/date.js
@@ -38,6 +38,24 @@ module.exports = {
     return days[date.getDay()] + ', ' + months[date.getMonth()] + ' ' + this.dateFormatZeroFirst(date.getDate()) + ', ' + date.getFullYear() + ' ' + this.dateFormatZeroFirst(date.getHours()) + ':' + this.dateFormatZeroFirst(date.getMinutes());
   },
   /**
+   * Convert date-string 'DAY_OF_THE_WEEK, MONTH DAY, YEAR HOURS:MINUTES' to timestamp
+   * @param date_string
+   * @return {String}
+   */
+  dateUnformat: function(date_string) {
+    var date = date_string.substring(4);
+    var month = date.substring(1, 4);
+    var day = date.substring(5, 7);
+    var year = date.substring(9, 13);
+    var hours = date.substring(14, 16);
+    var minutes = date.substring(17, 19);
+
+    var months = this.dateMonths;
+    month = months.indexOf(month) + 1;
+    if (month < 10) month = '0' + month;
+    return year + month + day + hours + minutes;
+  },
+  /**
    * Convert timestamp to date-string 'DAY_OF_THE_WEEK MONTH DAY YEAR'
    * @param timestamp
    * @return {*}
@@ -53,6 +71,60 @@ module.exports = {
     return date.toDateString();
   },
   /**
+   * Convert date-string 'DAY_OF_THE_WEEK MONTH DAY YEAR' to the timestamp
+   * @param date_string
+   * @return {Number}
+   */
+  dateUnformatShort: function(date_string) {
+    var date = new Date(date_string);
+    return date.getTime();
+  },
+  /**
+   * Convert time in mseconds to 'HOURS:MINUTES:SECONDS'
+   * @param ms_interval
+   * @return string formatted date
+   */
+  dateFormatInterval:function (ms_interval) {
+    if (!validator.isValidInt(ms_interval)) return ms_interval;
+    var hours = Math.floor(ms_interval / (60 * 60000));
+    var divisor_for_minutes = ms_interval % (60 * 60000);
+    var minutes = Math.floor(divisor_for_minutes / 60000);
+    var divisor_for_seconds = divisor_for_minutes % 60000;
+    var seconds = (divisor_for_seconds / 1000).toFixed(2);
+
+    return (hours < 10 ? '0' : '') + hours + ':' + (minutes < 10 ? '0' : '') + minutes + ':' + (seconds < 10 ? '0' : '') + seconds;
+  },
+  /**
+   * Convert 'HOURS:MINUTES:SECONDS' to time in mseconds
+   * @param formattedDate date string
+   * @return time in mseconds
+   */
+  dateUnformatInterval: function(formattedDate) {
+    var formattedDateArray = formattedDate.split(' ');
+
+    if (Object.prototype.toString.call( formattedDateArray ) === '[object Array]' && formattedDateArray.length == 2) {
+      var oneMinMs = 60000;
+      var oneHourMs = 3600000;
+      var oneDayMs = 86400000;
+
+      if (formattedDateArray['1'] == 'ms') {
+        return formattedDateArray['0'];
+      } else if (formattedDateArray['1'] == 'secs') {
+        return formattedDateArray['0'] * 1000;
+      } else if (formattedDateArray['1'] == 'mins') {
+        return formattedDateArray['0'] * oneMinMs;
+      } else if (formattedDateArray['1'] == 'hours') {
+        return formattedDateArray['0'] * oneHourMs;
+      } else if (formattedDateArray['1'] == 'days') {
+        return formattedDateArray['0'] * oneDayMs;
+      } else {
+        console.warn('function dateUnformatInterval: Undefined format');
+      }
+    } else {
+      console.warn('function dateUnformatInterval: formattedDateArray');
+    }
+  },
+  /**
    * Convert time in mseconds to
    * 30 ms = 30 ms
    * 300 ms = 300 ms
@@ -69,7 +141,6 @@ module.exports = {
    */
   timingFormat:function (time) {
     var intTime  = parseInt(time);
-    if (!intTime) return null;
     var timeStr = intTime.toString();
     var lengthOfNumber = timeStr.length;
     var oneMinMs = 60000;

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/utils/helper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/helper.js b/ambari-web/app/utils/helper.js
index cb45cad..59922c2 100644
--- a/ambari-web/app/utils/helper.js
+++ b/ambari-web/app/utils/helper.js
@@ -203,8 +203,6 @@ Number.prototype.long2ip = function () {
  * @param {String} testUrl  URL to be used if app is not in test mode (!App.testMode)
  * @return {String} Formatted URL
  */
-App = require('app');
-
 App.formatUrl = function (urlTemplate, substitutes, testUrl) {
   var formatted = urlTemplate;
   if (urlTemplate) {
@@ -326,6 +324,10 @@ App.format = {
         return 'Pig';
       case 'PIG_SERVICE_CHECK':
         return 'Pig Check';
+      case 'MAPREDUCE2_SERVICE_CHECK':
+        return 'MapReduce2 Check';
+      case 'YARN_SERVICE_CHECK':
+        return 'YARN Check';
       case 'SQOOP':
         return 'Sqoop';
       case 'SQOOP_SERVICE_CHECK':
@@ -370,3 +372,11 @@ App.format = {
     return _taskStatus.toLowerCase();
   }
 };
+
+Array.prototype.removeAll = function(array){
+  var temp = array;
+  for(var i = 0 ; i < array.length ; i++ ){
+    temp = temp.without(array[i]);
+  }
+  return temp;
+};

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/views.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views.js b/ambari-web/app/views.js
index 83c1dbd..45664c8 100644
--- a/ambari-web/app/views.js
+++ b/ambari-web/app/views.js
@@ -75,6 +75,7 @@ require('views/main/admin/security/add/step4');
 require('views/main/dashboard');
 require('views/main/dashboard/service');
 require('views/main/dashboard/service/hdfs');
+require('views/main/dashboard/service/yarn');
 require('views/main/dashboard/service/mapreduce');
 require('views/main/dashboard/service/mapreduce2');
 require('views/main/dashboard/service/hbase');
@@ -127,6 +128,14 @@ require('views/main/service/info/metrics/hdfs/file_operations');
 require('views/main/service/info/metrics/hdfs/gc');
 require('views/main/service/info/metrics/hdfs/space_utilization');
 require('views/main/service/info/metrics/hdfs/block_status');
+require('views/main/service/info/metrics/yarn/gc');
+require('views/main/service/info/metrics/yarn/jvm_threads');
+require('views/main/service/info/metrics/yarn/jvm_heap');
+require('views/main/service/info/metrics/yarn/rpc');
+require('views/main/service/info/metrics/yarn/tasks_running_waiting');
+require('views/main/service/info/metrics/yarn/jobs_status');
+require('views/main/service/info/metrics/yarn/map_slots');
+require('views/main/service/info/metrics/yarn/reduce_slots');
 require('views/main/service/info/metrics/mapreduce/gc');
 require('views/main/service/info/metrics/mapreduce/jvm_threads');
 require('views/main/service/info/metrics/mapreduce/jvm_heap');
@@ -161,6 +170,7 @@ require('views/main/apps_view');
 require('views/main/apps/item_view');
 require('views/main/apps/item/bar_view');
 require('views/main/apps/item/dag_view');
+require('views/main/apps/item/app_view');
 require('views/main/mirroring_view');
 require('views/main/mirroring/dropdown_view');
 require('views/main/mirroring/dataset_view');

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/views/common/chart/linear_time.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/chart/linear_time.js b/ambari-web/app/views/common/chart/linear_time.js
index 0806474..c7afa8e 100644
--- a/ambari-web/app/views/common/chart/linear_time.js
+++ b/ambari-web/app/views/common/chart/linear_time.js
@@ -159,6 +159,8 @@ App.ChartLinearTimeView = Ember.View.extend({
     var nameNodeName = HDFSService ? HDFSService.get('nameNode.hostName') : "";
     var MapReduceService = App.MapReduceService.find().objectAt(0);
     var jobTrackerNode = MapReduceService ? MapReduceService.get('jobTracker.hostName') : "";
+    var YARNService = App.YARNService.find().objectAt(0);
+    var resourceManager = YARNService ? YARNService.get('resourceManagerNode.hostName') : "";
     var timeUnit = this.get('timeUnitSeconds');
     return {
       toSeconds: toSeconds,
@@ -166,7 +168,8 @@ App.ChartLinearTimeView = Ember.View.extend({
       stepSeconds: 15,
       hostName: hostName,
       nameNodeName: nameNodeName,
-      jobTrackerNode: jobTrackerNode
+      jobTrackerNode: jobTrackerNode,
+      resourceManager: resourceManager
     };
   },
   loadDataErrorCallback: function(xhr, textStatus, errorThrown){

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/views/common/configs/services_config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/services_config.js b/ambari-web/app/views/common/configs/services_config.js
index 27b5fbe..97305fb 100644
--- a/ambari-web/app/views/common/configs/services_config.js
+++ b/ambari-web/app/views/common/configs/services_config.js
@@ -675,7 +675,9 @@ App.ServiceConfigCapacityScheduler = App.ServiceConfigsByCategoryView.extend({
   category: null,
   service: null,
   serviceConfigs: null,
-  customConfigs: require('data/custom_configs'),
+  customConfigs: function(){
+    return App.config.get('preDefinedCustomConfigs');
+  }.property('App.config.preDefinedCustomConfigs'),
   /**
    * configs filtered by capacity-scheduler category
    */
@@ -696,14 +698,20 @@ App.ServiceConfigCapacityScheduler = App.ServiceConfigsByCategoryView.extend({
     this.createEmptyQueue(this.get('customConfigs').filterProperty('isQueue'));
   },
   //list of fields which will be populated by default in a new queue
-  fieldsToPopulate: [
-    "mapred.capacity-scheduler.queue.<queue-name>.minimum-user-limit-percent",
-    "mapred.capacity-scheduler.queue.<queue-name>.user-limit-factor",
-    "mapred.capacity-scheduler.queue.<queue-name>.supports-priority",
-    "mapred.capacity-scheduler.queue.<queue-name>.maximum-initialized-active-tasks",
-    "mapred.capacity-scheduler.queue.<queue-name>.maximum-initialized-active-tasks-per-user",
-    "mapred.capacity-scheduler.queue.<queue-name>.init-accept-jobs-factor"
-  ],
+  fieldsToPopulate: function(){
+    if(App.config.get('isHDP2')){
+      return ["yarn.scheduler.capacity.root.<queue-name>.user-limit-factor",
+      "yarn.scheduler.capacity.root.<queue-name>.state"];
+    }
+    return [
+      "mapred.capacity-scheduler.queue.<queue-name>.minimum-user-limit-percent",
+      "mapred.capacity-scheduler.queue.<queue-name>.user-limit-factor",
+      "mapred.capacity-scheduler.queue.<queue-name>.supports-priority",
+      "mapred.capacity-scheduler.queue.<queue-name>.maximum-initialized-active-tasks",
+      "mapred.capacity-scheduler.queue.<queue-name>.maximum-initialized-active-tasks-per-user",
+      "mapred.capacity-scheduler.queue.<queue-name>.init-accept-jobs-factor"
+    ];
+  }.property('App.config.isHDP2'),
   /**
    * create empty queue
    * take some queue then copy it and set all config values to null
@@ -741,33 +749,36 @@ App.ServiceConfigCapacityScheduler = App.ServiceConfigsByCategoryView.extend({
       queues.push({
         name: queueName,
         color: this.generateColor(queueName),
-        configs: this.filterConfigsByQueue(queueName, configs)
+        configs: this.groupConfigsByQueue(queueName, configs)
       })
     }, this);
     return queues;
   }.property('queueObserver'),
   /**
-   * filter configs by queue
+   * group configs by queue
    * @param queueName
    * @param configs
    */
-  filterConfigsByQueue: function (queueName, configs) {
-    var customConfigs = this.get('customConfigs');
+  groupConfigsByQueue: function (queueName, configs) {
+    var customConfigs = [];
     var queue = [];
+    this.get('customConfigs').forEach(function(_config){
+      var copy = $.extend({}, _config);
+      copy.name = _config.name.replace('<queue-name>', queueName);
+      customConfigs.push(copy);
+    });
     configs.forEach(function (config) {
-      var customConfig = customConfigs.findProperty('name', config.name.replace('queue.' + queueName, 'queue.<queue-name>'));
-      if ((config.name.indexOf('mapred.capacity-scheduler.queue.' + queueName) !== -1) ||
-        (config.name.indexOf('mapred.queue.' + queueName) !== -1)) {
-        if (customConfig) {
-          config.set('description', customConfig.description);
-          config.set('displayName', customConfig.displayName);
-          config.set('isRequired', customConfig.isRequired);
-          config.set('unit', customConfig.unit);
-          config.set('displayType', customConfig.displayType);
-          config.set('valueRange', customConfig.valueRange);
-          config.set('isVisible', customConfig.isVisible);
-          config.set('index', customConfig.index);
-        }
+      var customConfig = customConfigs.findProperty('name', config.get('name'));
+      if (customConfig) {
+        config.set('description', customConfig.description);
+        config.set('displayName', customConfig.displayName);
+        config.set('isRequired', customConfig.isRequired);
+        config.set('unit', customConfig.unit);
+        config.set('displayType', customConfig.displayType);
+        config.set('valueRange', customConfig.valueRange);
+        config.set('isVisible', customConfig.isVisible);
+        config.set('inTable', customConfig.inTable);
+        config.set('index', customConfig.index);
         queue.push(config);
       }
     });
@@ -778,9 +789,9 @@ App.ServiceConfigCapacityScheduler = App.ServiceConfigsByCategoryView.extend({
     return queue;
   },
   /**
-   * add missing properties to queue
+   * add missing properties to queue when they don't come from server
    * @param queue
-   * @param queueName
+   * @param customConfigs
    */
   addMissingProperties: function (queue, queueName) {
     var customConfigs = this.get('customConfigs');
@@ -796,7 +807,7 @@ App.ServiceConfigCapacityScheduler = App.ServiceConfigsByCategoryView.extend({
     }, this);
   },
   /**
-   * format table content from queues
+   * convert queues to table content
    */
   tableContent: function () {
     var result = [];
@@ -809,18 +820,35 @@ App.ServiceConfigCapacityScheduler = App.ServiceConfigsByCategoryView.extend({
       var queueObject = {
         name: queue.name,
         color: 'background-color:' + queue.color + ';',
-        users: usersAndGroups[0],
-        groups: usersAndGroups[1],
-        capacity: queue.configs.findProperty('name', 'mapred.capacity-scheduler.queue.' + queue.name + '.capacity').get('value'),
-        maxCapacity: queue.configs.findProperty('name', 'mapred.capacity-scheduler.queue.' + queue.name + '.maximum-capacity').get('value'),
-        minUserLimit: queue.configs.findProperty('name', 'mapred.capacity-scheduler.queue.' + queue.name + '.minimum-user-limit-percent').get('value'),
-        userLimitFactor: queue.configs.findProperty('name', 'mapred.capacity-scheduler.queue.' + queue.name + '.user-limit-factor').get('value'),
-        supportsPriority: queue.configs.findProperty('name', 'mapred.capacity-scheduler.queue.' + queue.name + '.supports-priority').get('value')
+        configs: this.sortByIndex(queue.configs.filterProperty('inTable'))
       };
+      //push acl_submit_jobs users
+      queueObject.configs.unshift({
+        value: usersAndGroups[1],
+        inTable: true,
+        displayName: Em.I18n.t('common.users')
+      });
+      //push acl_submit_jobs groups
+      queueObject.configs.unshift({
+        value: usersAndGroups[0],
+        inTable: true,
+        displayName: Em.I18n.t('services.mapReduce.config.queue.groups')
+      });
       result.push(queueObject);
     }, this);
     return result;
   }.property('queues'),
+  /**
+   * create headers depending on existed properties in queue
+   */
+  tableHeaders: function(){
+    var headers = [
+      Em.I18n.t('services.mapReduce.config.queue.name')
+    ];
+    return (this.get('tableContent').length) ?
+      headers.concat(this.get('tableContent').objectAt(0).configs.filterProperty('inTable').mapProperty('displayName')):
+      headers;
+  }.property('tableContent'),
   queueObserver: null,
   /**
    * uses as template for adding new queue
@@ -873,7 +901,7 @@ App.ServiceConfigCapacityScheduler = App.ServiceConfigsByCategoryView.extend({
       if (config.isQueue) {
         serviceConfigs.push(config);
       }
-    });
+    }, this);
     adminConfig.set('value', admin.join(' '));
     submitConfig.set('value', submit.join(' '));
     this.set('queueObserver', new Date().getTime());
@@ -919,10 +947,9 @@ App.ServiceConfigCapacityScheduler = App.ServiceConfigsByCategoryView.extend({
         } else {
           _config.set('value', queue.configs.findProperty('name', _config.get('name')).get('value').toString());
         }
-        //comparison executes including 'queue.<queue-name>' to avoid false matches
-        _config.set('name', configName.replace('queue.' + queue.name, 'queue.' + queue.configs.findProperty('name', 'queueName').get('value')));
+        _config.set('name', configName.replace(queueNamePrefix + queue.name, queueNamePrefix + queue.configs.findProperty('name', 'queueName').get('value')));
       }
-    });
+    }, this);
     this.set('queueObserver', new Date().getTime());
   },
   pieChart: App.ChartPieView.extend({
@@ -943,7 +970,7 @@ App.ServiceConfigCapacityScheduler = App.ServiceConfigsByCategoryView.extend({
       queues.forEach(function (queue) {
         data.push({
           label: queue.name,
-          value: parseInt(queue.configs.findProperty('name', 'mapred.capacity-scheduler.queue.' + queue.name + '.capacity').get('value')),
+          value: value,
           color: queue.color
         })
       });
@@ -1060,10 +1087,10 @@ App.ServiceConfigCapacityScheduler = App.ServiceConfigsByCategoryView.extend({
       content: function () {
         var content = (queueName) ? self.get('queues').findProperty('name', queueName) : self.get('emptyQueue');
         var configs = [];
-        var tableContent = self.get('tableContent');
         // copy of queue configs
         content.configs.forEach(function (config, index) {
-          if (config.name == 'mapred.capacity-scheduler.queue.' + content.name + '.capacity') {
+          if(config.get('name').substr(-9, 9) === '.capacity') {
+            //added validation function for capacity property
             config.reopen({
               validate: function () {
                 var value = this.get('value');
@@ -1112,6 +1139,19 @@ App.ServiceConfigCapacityScheduler = App.ServiceConfigsByCategoryView.extend({
               config.set('value', false);
             }
           }
+          if(config.name === 'yarn.scheduler.capacity.root.' + content.name + '.state'){
+            config.reopen({
+              validate: function(){
+                var value = this.get('value');
+                this._super();
+                if(!this.get('errorMessage')){
+                  if(!(value === 'STOPPED' || value === 'RUNNING')){
+                    this.set('errorMessage', 'State value should be RUNNING or STOPPED');
+                  }
+                }
+              }.observes('value')
+            })
+          }
           configs[index] = App.ServiceConfigProperty.create(config);
         });
         content = {
@@ -1167,8 +1207,8 @@ App.ServiceConfigCapacityScheduler = App.ServiceConfigsByCategoryView.extend({
        */
       insertExtraConfigs: function (content) {
         var that = this;
-        var admin = content.configs.findProperty('name', 'mapred.queue.' + content.name + '.acl-administer-jobs').get('value');
-        var submit = content.configs.findProperty('name', 'mapred.queue.' + content.name + '.acl-submit-job').get('value');
+        var admin = content.configs.findProperty('name', self.getUserAndGroupNames(content.name)[1]).get('value');
+        var submit = content.configs.findProperty('name', self.getUserAndGroupNames(content.name)[0]).get('value');
         admin = (admin) ? admin.split(' ') : [''];
         submit = (submit) ? submit.split(' ') : [''];
         if (admin.length < 2) {
@@ -1177,7 +1217,7 @@ App.ServiceConfigCapacityScheduler = App.ServiceConfigsByCategoryView.extend({
         if (submit.length < 2) {
           submit.push('');
         }
-        var newField = App.ServiceConfigProperty.create({
+        var nameField = App.ServiceConfigProperty.create({
           name: 'queueName',
           displayName: Em.I18n.t('services.mapReduce.extraConfig.queue.name'),
           description: Em.I18n.t('services.mapReduce.description.queue.name'),
@@ -1216,11 +1256,11 @@ App.ServiceConfigCapacityScheduler = App.ServiceConfigsByCategoryView.extend({
           isEditable: self.get('canEdit'),
           index: 0
         });
-        newField.validate();
-        content.configs.unshift(newField);
+        nameField.validate();
+        content.configs.unshift(nameField);
 
         var submitUser = App.ServiceConfigProperty.create({
-          name: 'mapred.queue.' + content.name + '.acl-submit-job',
+          name: self.getUserAndGroupNames(content.name)[0],
           displayName: Em.I18n.t('common.users'),
           value: submit[0],
           description: Em.I18n.t('services.mapReduce.description.queue.submit.user'),
@@ -1233,7 +1273,7 @@ App.ServiceConfigCapacityScheduler = App.ServiceConfigsByCategoryView.extend({
         });
 
         var submitGroup = App.ServiceConfigProperty.create({
-          name: 'mapred.queue.' + content.name + '.acl-submit-job',
+          name: self.getUserAndGroupNames(content.name)[0],
           displayName: Em.I18n.t('services.mapReduce.config.queue.groups'),
           description: Em.I18n.t('services.mapReduce.description.queue.submit.group'),
           value: submit[1],
@@ -1246,7 +1286,7 @@ App.ServiceConfigCapacityScheduler = App.ServiceConfigsByCategoryView.extend({
         });
 
         var adminUser = App.ServiceConfigProperty.create({
-          name: 'mapred.queue.' + content.name + '.acl-administer-jobs',
+          name: self.getUserAndGroupNames(content.name)[1],
           displayName: Em.I18n.t('services.mapReduce.config.queue.adminUsers'),
           description: Em.I18n.t('services.mapReduce.description.queue.admin.user'),
           value: admin[0],
@@ -1259,7 +1299,7 @@ App.ServiceConfigCapacityScheduler = App.ServiceConfigsByCategoryView.extend({
         });
 
         var adminGroup = App.ServiceConfigProperty.create({
-          name: 'mapred.queue.' + content.name + '.acl-administer-jobs',
+          name: self.getUserAndGroupNames(content.name)[1],
           displayName: Em.I18n.t('services.mapReduce.config.queue.adminGroups'),
           value: admin[1],
           description: Em.I18n.t('services.mapReduce.description.queue.admin.group'),
@@ -1303,8 +1343,8 @@ App.ServiceConfigCapacityScheduler = App.ServiceConfigsByCategoryView.extend({
       },
       /**
        * Validate by follow rules:
-       * Users can be blank. If this is blank, Groups must not be blank.
-       * Groups can be blank. If this is blank, Users must not be blank.
+       * Users can be blank. If it is blank, Groups must not be blank.
+       * Groups can be blank. If it is blank, Users must not be blank.
        * @param context
        * @param boundConfig
        */

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/views/common/quick_view_link_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/quick_view_link_view.js b/ambari-web/app/views/common/quick_view_link_view.js
index 7c14cdf..624d40a 100644
--- a/ambari-web/app/views/common/quick_view_link_view.js
+++ b/ambari-web/app/views/common/quick_view_link_view.js
@@ -54,7 +54,14 @@ App.QuickViewLinks = Em.View.extend({
           }
         }
         break;
+      case "YARN":
+        host = App.singleNodeInstall ? App.singleNodeAlias : components.findProperty('componentName', 'RESOURCEMANAGER').get('host.publicHostName');
+        break;
+      case "MAPREDUCE2":
+        host = App.singleNodeInstall ? App.singleNodeAlias : components.findProperty('componentName', 'HISTORYSERVER').get('host.publicHostName');
+        break;
     }
+
     if (!host) {
       return [
         {
@@ -74,6 +81,8 @@ App.QuickViewLinks = Em.View.extend({
   linkTarget: function () {
     switch (this.get('content.serviceName').toLowerCase()) {
       case "hdfs":
+      case "yarn":
+      case "mapreduce2":
       case "mapreduce":
       case "hbase":
       case "oozie":

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/views/common/table_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/table_view.js b/ambari-web/app/views/common/table_view.js
index d092980..df574ce 100644
--- a/ambari-web/app/views/common/table_view.js
+++ b/ambari-web/app/views/common/table_view.js
@@ -191,8 +191,8 @@ App.TableView = Em.View.extend({
       this.get('filterConditions').push(filterCondition);
     }
     this.saveFilterConditions();
+
     this.filtersUsedCalc();
-    this.filter();
   },
 
   saveFilterConditions: function() {

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/views/main/apps/item/app_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/apps/item/app_view.js b/ambari-web/app/views/main/apps/item/app_view.js
new file mode 100644
index 0000000..b279d28
--- /dev/null
+++ b/ambari-web/app/views/main/apps/item/app_view.js
@@ -0,0 +1,136 @@
+/**
+ * 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');
+var sort = require('views/common/sort_view');
+var appGraph = require('utils/app_graph');
+
+App.MainAppsItemAppView = Em.View.extend({
+  templateName: require('templates/main/apps/item/app'),
+  elementId : 'jobs',
+  content:function(){
+    return this.get('controller.content.jobs');
+  }.property('controller.content.jobs'),
+
+  classNames:['table','dataTable'],
+  /**
+   * convert content to special jobs object
+   */
+  jobs: function(){
+    var c = this.get('content');
+    var result = [];
+    c.forEach(function(item, index){
+      result[index] = new Object({
+        'name' : item.get('id'),
+        'type' : item.get('app_type'),
+        'entityName' : item.get('workflow_entity_name'),
+        'status' : item.get('status'),
+        'submitTime' : item.get('submit_time'),
+        'finishTime' : item.get('finish_time'),
+        'elapsedTime' : appGraph.formatDuration(item.get('elapsed_time')),
+        'numStages' : item.get('num_stages'),
+        'stages' : item.get('stages')
+      })
+    });
+    return result;
+  }.property('content'),
+
+  loaded : false,
+
+  hasManyJobs: function(){
+    return (this.get('content') && this.get('content').length > 1);
+  }.property('content'),
+
+  onLoad:function (){
+    if(!this.get('controller.content.loadAllJobs') || this.get('loaded')){
+      return;
+    }
+
+    this.set('loaded', true);
+
+    var self = this;
+
+    Ember.run.next(function(){
+      self.draw();
+    });
+
+  }.observes('controller.content.loadAllJobs'),
+
+  resizeModal: function () {
+    var modal = $('.modal');
+    var body = $('body');
+    modal.find('.modal-body').first().css('max-height', 'none');
+    var modalHeight = modal.height() + 300;
+    var bodyHeight = body.height();
+    if (modalHeight > bodyHeight) {
+      modal.css('top', '20px');
+      $('.modal-body').height(bodyHeight - 180);
+    } else {
+      modal.css('top', (bodyHeight - modalHeight) / 2 + 'px');
+    }
+
+    var modalWidth = modal.width();
+    var bodyWidth = body.width();
+    if (modalWidth > bodyWidth) {
+      modal.css('left', '10px');
+      modal.width(bodyWidth - 20);
+    } else {
+      modal.css('left', (bodyWidth - modalWidth) / 2 + 'px');
+    }
+  },
+
+  didInsertElement: function(){
+    this.onLoad();
+  },
+
+  draw: function(){
+    var dagSchema = this.get('controller.content.workflowContext');
+    var jobs = this.get('jobs');
+    this.resizeModal();
+    appGraph.create('app_graph', dagSchema, jobs, this.$().width(), 300);
+  },
+  sortView: sort.wrapperView,
+  nameSort: sort.fieldView.extend({
+    name:'workflow_entity_name',
+    displayName: Em.I18n.t('apps.item.dag.job')
+  }),
+  idSort: sort.fieldView.extend({
+    name:'id',
+    displayName: Em.I18n.t('apps.item.dag.jobId')
+  }),
+  typeSort: sort.fieldView.extend({
+    name:'app_type',
+    displayName: Em.I18n.t('apps.item.dag.type')
+  }),
+  statusSort: sort.fieldView.extend({
+    name:'status',
+    displayName: Em.I18n.t('apps.item.dag.status')
+  }),
+  numStagesSort: sort.fieldView.extend({
+    name:'num_stages',
+    displayName: Em.I18n.t('apps.item.dag.num_stages')
+  }),
+  stagesSort: sort.fieldView.extend({
+    name:'stages',
+    displayName: Em.I18n.t('apps.item.dag.stages')
+  }),
+  durationSort: sort.fieldView.extend({
+    name:'elapsed_time',
+    displayName: Em.I18n.t('apps.item.dag.duration')
+  })
+});

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/views/main/apps/item_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/apps/item_view.js b/ambari-web/app/views/main/apps/item_view.js
index 29300d1..b9acd61 100644
--- a/ambari-web/app/views/main/apps/item_view.js
+++ b/ambari-web/app/views/main/apps/item_view.js
@@ -17,23 +17,13 @@
  */
 
 var App = require('app');
+var stringUtils = require('utils/string_utils');
 
 App.MainAppsItemView = Em.View.extend({
   tagName: 'tr',
   classNames : ['containerRow'],
   templateName:require('templates/main/apps/item'),
-  menuTabs:[
-    Em.Object.create({
-      label:Em.I18n.t('apps.dagCharts.popup.dag'),
-      active:'active',
-      content:'App.MainAppsItemDagView'
-    }),
-    Em.Object.create({
-      label:Em.I18n.t('apps.dagCharts.popup.tasks'),
-      active:'',
-      content:'App.MainAppsItemBarView'
-    })
-  ],
+  menuTabs:[],
   activeTab:null,
   switchTab:function(event){
     var tabs = this.get('menuTabs');
@@ -48,10 +38,30 @@ App.MainAppsItemView = Em.View.extend({
     this.set('activeTab', event.context);
   },
   didInsertElement: function(){
-    var tabs = this.get('menuTabs');
-    tabs[0].set('active', 'active');
-    tabs[1].set('active', '');
-    this.set('activeTab', tabs[0]);
+    if (!App.testMode && stringUtils.compareVersions(App.get('currentStackVersionNumber'), "2.0") === -1) {
+      var tabs = [
+        Em.Object.create({
+          label:Em.I18n.t('apps.dagCharts.popup.dag'),
+          active:'active',
+          content:'App.MainAppsItemDagView'
+        }),
+        Em.Object.create({
+          label:Em.I18n.t('apps.dagCharts.popup.tasks'),
+          active:'',
+          content:'App.MainAppsItemBarView'
+        })];
+      this.set('menuTabs', tabs);
+      this.set('activeTab', tabs[0]);
+    } else {
+      var tabs = [
+        Em.Object.create({
+          label:Em.I18n.t('apps.dagCharts.popup.dag'),
+          active:'active',
+          content:'App.MainAppsItemAppView'
+        })];
+      this.set('menuTabs', tabs);
+      this.set('activeTab', tabs[0]);
+    }
   },
   containerView: Em.ContainerView.extend({
     onchange:function(){

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/views/main/apps_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/apps_view.js b/ambari-web/app/views/main/apps_view.js
index a644667..9d8f110 100644
--- a/ambari-web/app/views/main/apps_view.js
+++ b/ambari-web/app/views/main/apps_view.js
@@ -102,7 +102,7 @@ App.MainAppsView = Em.View.extend({
     class: "sorting",
     widthClass: "",
     content: null,
-    defaultColumn: 8,
+    defaultColumn: 9,
 
     didInsertElement: function () {
       this.set("widthClass", "col" + this.get('content.index'));
@@ -160,13 +160,21 @@ App.MainAppsView = Em.View.extend({
     fieldType: 'input-small'
   }),
   /**
+   * Filter-field for tags.
+   * Based on <code>filters</code> library
+   */
+  tagFilterView: filters.createTextView({
+    valueBinding: "controller.filterObject.tagSearch",
+    fieldType: 'input-super-mini'
+  }),
+  /**
    * Filter-field for type.
    * Based on <code>filters</code> library
    */
   typeFilterView: filters.createSelectView({
     fieldType: 'input-small',
     valueBinding: "controller.filterObject.runType",
-    content: ['Any', 'Pig', 'Hive', 'MapReduce']
+    content: ['Any', 'Pig', 'Hive', 'MapReduce', 'Yarn']
   }),
 
   /**
@@ -216,22 +224,6 @@ App.MainAppsView = Em.View.extend({
     valueBinding: "controller.filterObject.jobs"
   }),
   /**
-   * Filter-field for Input.
-   * Based on <code>filters</code> library
-   */
-  inputFilterView: filters.createTextView({
-    fieldType: 'input-super-mini',
-    valueBinding: "controller.filterObject.input"
-  }),
-  /**
-   * Filter-field for Output.
-   * Based on <code>filters</code> library
-   */
-  outputFilterView: filters.createTextView({
-    fieldType: 'input-super-mini',
-    valueBinding: "controller.filterObject.output"
-  }),
-  /**
    * Filter-field for Duration.
    * Based on <code>filters</code> library
    */
@@ -354,4 +346,4 @@ App.MainAppsView = Em.View.extend({
 
   })
 
-});
\ No newline at end of file
+});

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/views/main/dashboard.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/dashboard.js b/ambari-web/app/views/main/dashboard.js
index 36d4f83..d0e5c58 100644
--- a/ambari-web/app/views/main/dashboard.js
+++ b/ambari-web/app/views/main/dashboard.js
@@ -395,6 +395,10 @@ App.MainDashboardView = Em.View.extend({
           vName = App.MainDashboardServiceHdfsView;
           item2 = App.HDFSService.find(item.get('id'));
           break;
+        case "YARN":
+          vName = App.MainDashboardServiceYARNView;
+          item2 = App.YARNService.find(item.get('id'));
+          break;
         case "MAPREDUCE":
           vName = App.MainDashboardServiceMapreduceView;
           item2 = App.MapReduceService.find(item.get('id'));

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/views/main/dashboard/service/mapreduce.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/dashboard/service/mapreduce.js b/ambari-web/app/views/main/dashboard/service/mapreduce.js
index fadb29c..11b9044 100644
--- a/ambari-web/app/views/main/dashboard/service/mapreduce.js
+++ b/ambari-web/app/views/main/dashboard/service/mapreduce.js
@@ -123,4 +123,4 @@ App.MainDashboardServiceMapreduceView = App.MainDashboardServiceView.extend({
   taskTrackerComponent: function () {
     return App.HostComponent.find().findProperty('componentName', 'TASKTRACKER');
   }.property()
-});
\ No newline at end of file
+});

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/views/main/dashboard/service/yarn.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/dashboard/service/yarn.js b/ambari-web/app/views/main/dashboard/service/yarn.js
new file mode 100644
index 0000000..a0bf78b
--- /dev/null
+++ b/ambari-web/app/views/main/dashboard/service/yarn.js
@@ -0,0 +1,106 @@
+/**
+ * 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');
+var date = require('utils/date');
+
+App.MainDashboardServiceYARNView = App.MainDashboardServiceView.extend({
+  templateName: require('templates/main/dashboard/service/yarn'),
+  serviceName: 'YARN',
+
+  nodeWebUrl: function () {
+    var hostName = this.get('service.resourceManagerNode').get('publicHostName');
+    return "http://" + (App.singleNodeInstall ? App.singleNodeAlias : hostName)  + ":8088";
+  }.property('service.resourceManagerNode'),
+
+  nodeHeap: function () {
+    var memUsed = this.get('service').get('jvmMemoryHeapUsed') * 1000000;
+    var memCommitted = this.get('service').get('jvmMemoryHeapCommitted') * 1000000;
+    var percent = memCommitted > 0 ? ((100 * memUsed) / memCommitted) : 0;
+    return this.t('dashboard.services.hdfs.nodes.heapUsed').format(memUsed.bytesToSize(1, 'parseFloat'), memCommitted.bytesToSize(1, 'parseFloat'), percent.toFixed(1));
+
+  }.property('service.jvmMemoryHeapUsed', 'service.jvmMemoryHeapCommitted'),
+
+  summaryHeader: function () {
+    var text = this.t("dashboard.services.yarn.summary");
+    var svc = this.get('service');
+    var totalCount = svc.get('nodeManagerNodes').get('length');
+    return text.format(totalCount, totalCount);
+  }.property('service.nodeManagerNodes'),
+  
+  nodeManagerComponent: function () {
+    return App.HostComponent.find().findProperty('componentName', 'NODEMANAGER');
+  }.property(),
+  
+  yarnClientComponent: function () {
+    return App.HostComponent.find().findProperty('componentName', 'YARN_CLIENT');
+  }.property(),
+  
+  nodeUptime: function () {
+    var uptime = this.get('service').get('resourceManagerStartTime');
+    if (uptime && uptime > 0){
+      var diff = (new Date()).getTime() - uptime;
+      if (diff < 0) {
+        diff = 0;
+      }
+      var formatted = date.timingFormat(diff);
+      return this.t('dashboard.services.uptime').format(formatted);
+    }
+    return this.t('services.service.summary.notRunning');
+  }.property("service.resourceManagerStartTime"),
+
+  nodeHeap: function () {
+    var memUsed = this.get('service').get('jvmMemoryHeapUsed') * 1000000;
+    var memCommitted = this.get('service').get('jvmMemoryHeapCommitted') * 1000000;
+    var percent = memCommitted > 0 ? ((100 * memUsed) / memCommitted) : 0;
+    return this.t('dashboard.services.hdfs.nodes.heapUsed').format(memUsed.bytesToSize(1, 'parseFloat'), memCommitted.bytesToSize(1, 'parseFloat'), percent.toFixed(1));
+  }.property('service.jvmMemoryHeapUsed', 'service.jvmMemoryHeapCommitted'),
+
+  nodeManagersLive: function () {
+    var nodeManagers = this.get('service.nodeManagerNodes.length');
+    var nodeManagersLive = this.get('service.nodeManagerLiveNodes.length');
+    return this.t('dashboard.services.yarn.nodeManagers.live.msg').format(nodeManagersLive, nodeManagers);
+  }.property('service.nodeManagerNodes', 'service.nodeManagerLiveNodes'),
+
+  nodeManagersStatus: function () {
+    var nmActive = this.get('service.nodeManagersCountActive');
+    var nmLost = this.get('service.nodeManagersCountLost');
+    var nmUnhealthy = this.get('service.nodeManagersCountUnhealthy');
+    var nmRebooted = this.get('service.nodeManagersCountRebooted');
+    var nmDecom = this.get('service.nodeManagersCountDecommissioned');
+    return this.t('dashboard.services.yarn.nodeManagers.status.msg').format(nmActive, nmLost, nmUnhealthy, nmRebooted, nmDecom);
+  }.property('service.nodeManagersCountActive', 'service.nodeManagersCountLost', 
+      'service.nodeManagersCountUnhealthy', 'service.nodeManagersCountRebooted', 'service.nodeManagersCountDecommissioned'),
+
+  containers: function () {
+    var allocated = this.get('service.containersAllocated');
+    var pending = this.get('service.containersPending');
+    var reserved = this.get('service.containersReserved');
+    return this.t('dashboard.services.yarn.containers.msg').format(allocated, pending, reserved);
+  }.property('service.containersAllocated', 'service.containersPending', 'service.containersReserved'),
+
+  apps: function () {
+    var appsSubmitted = this.get('service.appsSubmitted');
+    var appsRunning = this.get('service.appsRunning');
+    var appsPending = this.get('service.appsPending');
+    var appsCompleted = this.get('service.appsCompleted');
+    var appsKilled = this.get('service.appsKilled');
+    var appsFailed = this.get('service.appsFailed');
+    return this.t('dashboard.services.yarn.apps.msg').format(appsSubmitted, appsRunning, appsPending, appsCompleted, appsKilled, appsFailed);
+  }.property('service.appsSubmitted', 'service.appsRunning', 'service.appsPending', 'service.appsCompleted', 'service.appsKilled', 'service.appsFailed'),
+
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/views/main/menu.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/menu.js b/ambari-web/app/views/main/menu.js
index 6f61429..0ca08d6 100644
--- a/ambari-web/app/views/main/menu.js
+++ b/ambari-web/app/views/main/menu.js
@@ -31,17 +31,14 @@ App.MainMenuView = Em.CollectionView.extend({
       { label:Em.I18n.t('menu.item.dashboard'), routing:'dashboard', active:'active'},
       { label:Em.I18n.t('menu.item.heatmaps'), routing:'charts'},
       { label:Em.I18n.t('menu.item.services'), routing:'services'},
-      { label:Em.I18n.t('menu.item.hosts'), routing:'hosts'}
+      { label:Em.I18n.t('menu.item.hosts'), routing:'hosts'},
+      { label:Em.I18n.t('menu.item.jobs'), routing:'apps'}
     ];
 
     if (App.supports.mirroring) {
       result.push({ label:Em.I18n.t('menu.item.mirroring'), routing:'mirroring'});
     }
 
-    if (stringUtils.compareVersions(App.get('currentStackVersionNumber'), "2.0") === -1) {
-      result.push({ label:Em.I18n.t('menu.item.jobs'), routing:'apps'});
-    }
-
     if (App.get('isAdmin')) {
       result.push({ label:Em.I18n.t('menu.item.admin'), routing:'admin'});
     }
@@ -84,4 +81,4 @@ App.MainMenuView = Em.CollectionView.extend({
 
     templateName: require('templates/main/menu_item')
   })
-});
\ No newline at end of file
+});

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/views/main/service/info/metrics/yarn/gc.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/metrics/yarn/gc.js b/ambari-web/app/views/main/service/info/metrics/yarn/gc.js
new file mode 100644
index 0000000..265a56d
--- /dev/null
+++ b/ambari-web/app/views/main/service/info/metrics/yarn/gc.js
@@ -0,0 +1,56 @@
+/**
+ * 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');
+
+/**
+ * @class
+ * 
+ * This is a view for showing cluster CPU metrics
+ * 
+ * @extends App.ChartLinearTimeView
+ * @extends Ember.Object
+ * @extends Ember.View
+ */
+App.ChartServiceMetricsYARN_GC = App.ChartLinearTimeView.extend({
+  id: "service-metrics-yarn-gc",
+  title: Em.I18n.t('services.service.info.metrics.yarn.gc'),
+  yAxisFormatter: App.ChartLinearTimeView.TimeElapsedFormatter,
+
+  ajaxIndex: 'service.metrics.yarn.gc',
+
+  transformToSeries: function (jsonData) {
+    var seriesArray = [];
+    if (jsonData && jsonData.metrics && jsonData.metrics.jvm) {
+      for ( var name in jsonData.metrics.jvm) {
+        var displayName;
+        var seriesData = jsonData.metrics.jvm[name];
+        switch (name) {
+          case "gcTimeMillis":
+            displayName = Em.I18n.t('services.service.info.metrics.yarn.gc.displayNames.gcTimeMillis');
+            break;
+          default:
+            break;
+        }
+        if (seriesData) {
+          seriesArray.push(this.transformData(seriesData, displayName));
+        }
+      }
+    }
+    return seriesArray;
+  }
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/views/main/service/info/metrics/yarn/jobs_status.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/metrics/yarn/jobs_status.js b/ambari-web/app/views/main/service/info/metrics/yarn/jobs_status.js
new file mode 100644
index 0000000..87d2a72
--- /dev/null
+++ b/ambari-web/app/views/main/service/info/metrics/yarn/jobs_status.js
@@ -0,0 +1,68 @@
+/**
+ * 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');
+
+/**
+ * @class
+ * 
+ * This is a view for showing cluster CPU metrics
+ * 
+ * @extends App.ChartLinearTimeView
+ * @extends Ember.Object
+ * @extends Ember.View
+ */
+App.ChartServiceMetricsYARN_JobsStatus = App.ChartLinearTimeView.extend({
+  id: "service-metrics-yarn-jobs-status",
+  title: Em.I18n.t('services.service.info.metrics.mapreduce.jobsStatus'),
+  renderer: 'line',
+
+  ajaxIndex: 'service.metrics.mapreduce.jobs_status',
+
+  transformToSeries: function (jsonData) {
+    var seriesArray = [];
+    if (jsonData && jsonData.metrics && jsonData.metrics.mapred && jsonData.metrics.mapred.jobtracker) {
+      for ( var name in jsonData.metrics.mapred.jobtracker) {
+        var displayName;
+        var seriesData = jsonData.metrics.mapred.jobtracker[name];
+        switch (name) {
+          case "jobs_running":
+            displayName = Em.I18n.t('services.service.info.metrics.mapreduce.jobsStatus.displayNames.jobsRunning');
+            break;
+          case "jobs_failed":
+            displayName = Em.I18n.t('services.service.info.metrics.mapreduce.jobsStatus.displayNames.jobsFailed');
+            break;
+          case "jobs_completed":
+            displayName = Em.I18n.t('services.service.info.metrics.mapreduce.jobsStatus.displayNames.jobsCompleted');
+            break;
+          case "jobs_preparing":
+            displayName = Em.I18n.t('services.service.info.metrics.mapreduce.jobsStatus.displayNames.jobsPreparing');
+            break;
+          case "jobs_submitted":
+            displayName = Em.I18n.t('services.service.info.metrics.mapreduce.jobsStatus.displayNames.jobsSubmitted');
+            break;
+          default:
+            break;
+        }
+        if (seriesData) {
+          seriesArray.push(this.transformData(seriesData, displayName));
+        }
+      }
+    }
+    return seriesArray;
+  }
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/views/main/service/info/metrics/yarn/jvm_heap.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/metrics/yarn/jvm_heap.js b/ambari-web/app/views/main/service/info/metrics/yarn/jvm_heap.js
new file mode 100644
index 0000000..9ce2d1d
--- /dev/null
+++ b/ambari-web/app/views/main/service/info/metrics/yarn/jvm_heap.js
@@ -0,0 +1,71 @@
+/**
+ * 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');
+
+/**
+ * @class
+ * 
+ * This is a view for showing cluster CPU metrics
+ * 
+ * @extends App.ChartLinearTimeView
+ * @extends Ember.Object
+ * @extends Ember.View
+ */
+App.ChartServiceMetricsYARN_JVMHeap = App.ChartLinearTimeView.extend({
+  id: "service-metrics-yarn-jvm-heap",
+  title: Em.I18n.t('services.service.info.metrics.mapreduce.jvmHeap'),
+  yAxisFormatter: App.ChartLinearTimeView.BytesFormatter,
+  renderer: 'line',
+
+  ajaxIndex: 'service.metrics.yarn.jobs_heap',
+
+  transformToSeries: function (jsonData) {
+    var seriesArray = [];
+    var MB = Math.pow(2, 20);
+    if (jsonData && jsonData.metrics && jsonData.metrics.jvm) {
+      for ( var name in jsonData.metrics.jvm) {
+        var displayName;
+        var seriesData = jsonData.metrics.jvm[name];
+        switch (name) {
+          case "memHeapCommittedM":
+            displayName = Em.I18n.t('services.service.info.metrics.mapreduce.jvmHeap.displayNames.memHeapCommittedM');
+            break;
+          case "memNonHeapUsedM":
+            displayName = Em.I18n.t('services.service.info.metrics.mapreduce.jvmHeap.displayNames.memNonHeapUsedM');
+            break;
+          case "memHeapUsedM":
+            displayName = Em.I18n.t('services.service.info.metrics.mapreduce.jvmHeap.displayNames.memHeapUsedM');
+            break;
+          case "memNonHeapCommittedM":
+            displayName = Em.I18n.t('services.service.info.metrics.mapreduce.jvmHeap.displayNames.memNonHeapCommittedM');
+            break;
+          default:
+            break;
+        }
+        if (seriesData) {
+          var s = this.transformData(seriesData, displayName);
+          for (var i = 0; i < s.data.length; i++) {
+            s.data[i].y *= MB;
+          }
+          seriesArray.push(s);
+        }
+      }
+    }
+    return seriesArray;
+  }
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/views/main/service/info/metrics/yarn/jvm_threads.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/metrics/yarn/jvm_threads.js b/ambari-web/app/views/main/service/info/metrics/yarn/jvm_threads.js
new file mode 100644
index 0000000..445ecc7
--- /dev/null
+++ b/ambari-web/app/views/main/service/info/metrics/yarn/jvm_threads.js
@@ -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.
+ */
+
+var App = require('app');
+
+/**
+ * @class
+ * 
+ * This is a view for showing cluster CPU metrics
+ * 
+ * @extends App.ChartLinearTimeView
+ * @extends Ember.Object
+ * @extends Ember.View
+ */
+App.ChartServiceMetricsYARN_JVMThreads = App.ChartLinearTimeView.extend({
+  id: "service-metrics-yarn-jvm-threads",
+  title: Em.I18n.t('services.service.info.metrics.mapreduce.jvmThreads'),
+  renderer: 'line',
+
+  ajaxIndex: 'service.metrics.yarn.jobs_threads',
+
+  transformToSeries: function (jsonData) {
+    var seriesArray = [];
+    if (jsonData && jsonData.metrics && jsonData.metrics.jvm) {
+      for ( var name in jsonData.metrics.jvm) {
+        var displayName;
+        var seriesData = jsonData.metrics.jvm[name];
+        switch (name) {
+          case "threadsBlocked":
+            displayName = Em.I18n.t('services.service.info.metrics.mapreduce.jvmThreads.displayNames.threadsBlocked');
+            break;
+          case "threadsWaiting":
+            displayName = Em.I18n.t('services.service.info.metrics.mapreduce.jvmThreads.displayNames.threadsWaiting');
+            break;
+          case "threadsTimedWaiting":
+            displayName = Em.I18n.t('services.service.info.metrics.mapreduce.jvmThreads.displayNames.threadsTimedWaiting');
+            break;
+          case "threadsRunnable":
+            displayName = Em.I18n.t('services.service.info.metrics.mapreduce.jvmThreads.displayNames.threadsRunnable');
+            break;
+          default:
+            break;
+        }
+
+        if (seriesData) {
+          seriesArray.push(this.transformData(seriesData, displayName));
+        }
+      }
+    }
+    return seriesArray;
+  }
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/views/main/service/info/metrics/yarn/map_slots.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/metrics/yarn/map_slots.js b/ambari-web/app/views/main/service/info/metrics/yarn/map_slots.js
new file mode 100644
index 0000000..291a0ce
--- /dev/null
+++ b/ambari-web/app/views/main/service/info/metrics/yarn/map_slots.js
@@ -0,0 +1,59 @@
+/**
+ * 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');
+
+/**
+ * @class
+ * 
+ * This is a view for showing cluster CPU metrics
+ * 
+ * @extends App.ChartLinearTimeView
+ * @extends Ember.Object
+ * @extends Ember.View
+ */
+App.ChartServiceMetricsYARN_MapSlots = App.ChartLinearTimeView.extend({
+  id: "service-metrics-yarn-map-slots",
+  title: Em.I18n.t('services.service.info.metrics.mapreduce.mapSlots'),
+  renderer: 'line',
+
+  ajaxIndex: 'service.metrics.mapreduce.map_slots',
+
+  transformToSeries: function (jsonData) {
+    var seriesArray = [];
+    if (jsonData && jsonData.metrics && jsonData.metrics.mapred && jsonData.metrics.mapred.jobtracker) {
+      for ( var name in jsonData.metrics.mapred.jobtracker) {
+        var displayName;
+        var seriesData = jsonData.metrics.mapred.jobtracker[name];
+        switch (name) {
+          case "reserved_map_slots":
+            displayName = Em.I18n.t('services.service.info.metrics.mapreduce.mapSlots.displayNames.reservedMapSlots');
+            break;
+          case "occupied_map_slots":
+            displayName = Em.I18n.t('services.service.info.metrics.mapreduce.mapSlots.displayNames.occupiedMapSlots');
+            break;
+          default:
+            break;
+        }
+        if (seriesData) {
+          seriesArray.push(this.transformData(seriesData, displayName));
+        }
+      }
+    }
+    return seriesArray;
+  }
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/views/main/service/info/metrics/yarn/reduce_slots.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/metrics/yarn/reduce_slots.js b/ambari-web/app/views/main/service/info/metrics/yarn/reduce_slots.js
new file mode 100644
index 0000000..f6a9b02
--- /dev/null
+++ b/ambari-web/app/views/main/service/info/metrics/yarn/reduce_slots.js
@@ -0,0 +1,59 @@
+/**
+ * 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');
+
+/**
+ * @class
+ * 
+ * This is a view for showing cluster CPU metrics
+ * 
+ * @extends App.ChartLinearTimeView
+ * @extends Ember.Object
+ * @extends Ember.View
+ */
+App.ChartServiceMetricsYARN_ReduceSlots = App.ChartLinearTimeView.extend({
+  id: "service-metrics-yarn-reduce-slots",
+  title: Em.I18n.t('services.service.info.metrics.mapreduce.reduceSlots'),
+  renderer: 'line',
+
+  ajaxIndex: 'service.metrics.mapreduce.reduce_slots',
+
+  transformToSeries: function (jsonData) {
+    var seriesArray = [];
+    if (jsonData && jsonData.metrics && jsonData.metrics.mapred && jsonData.metrics.mapred.jobtracker) {
+      for ( var name in jsonData.metrics.mapred.jobtracker) {
+        var displayName;
+        var seriesData = jsonData.metrics.mapred.jobtracker[name];
+        switch (name) {
+          case "reserved_reduce_slots":
+            displayName = Em.I18n.t('services.service.info.metrics.mapreduce.reduceSlots.displayNames.reservedReduceSlots');
+            break;
+          case "occupied_reduce_slots":
+            displayName = Em.I18n.t('services.service.info.metrics.mapreduce.reduceSlots.displayNames.occupiedReduceSlots');
+            break;
+          default:
+            break;
+        }
+        if (seriesData) {
+          seriesArray.push(this.transformData(seriesData, displayName));
+        }
+      }
+    }
+    return seriesArray;
+  }
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/views/main/service/info/metrics/yarn/rpc.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/metrics/yarn/rpc.js b/ambari-web/app/views/main/service/info/metrics/yarn/rpc.js
new file mode 100644
index 0000000..cdbb8ec
--- /dev/null
+++ b/ambari-web/app/views/main/service/info/metrics/yarn/rpc.js
@@ -0,0 +1,56 @@
+/**
+ * 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');
+
+/**
+ * @class
+ * 
+ * This is a view for showing cluster CPU metrics
+ * 
+ * @extends App.ChartLinearTimeView
+ * @extends Ember.Object
+ * @extends Ember.View
+ */
+App.ChartServiceMetricsYARN_RPC = App.ChartLinearTimeView.extend({
+  id: "service-metrics-yarn-rpc",
+  title: Em.I18n.t('services.service.info.metrics.mapreduce.rpc'),
+  yAxisFormatter: App.ChartLinearTimeView.TimeElapsedFormatter,
+
+  ajaxIndex: 'service.metrics.yarn.rpc',
+
+  transformToSeries: function (jsonData) {
+    var seriesArray = [];
+    if (jsonData && jsonData.metrics && jsonData.metrics.rpc) {
+      for ( var name in jsonData.metrics.rpc) {
+        var displayName;
+        var seriesData = jsonData.metrics.rpc[name];
+        switch (name) {
+          case "RpcQueueTime_avg_time":
+            displayName = Em.I18n.t('services.service.info.metrics.mapreduce.rpc.displayNames.RpcQueueTimeAvgTime');
+            break;
+          default:
+            break;
+        }
+        if (seriesData) {
+          seriesArray.push(this.transformData(seriesData, displayName));
+        }
+      }
+    }
+    return seriesArray;
+  }
+});
\ No newline at end of file


[09/14] AMBARI-2677. Merge from branch-1.4.0 (ncole)

Posted by nc...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/mapred-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/mapred-site.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/mapred-site.xml
deleted file mode 100644
index daef588..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/configuration/mapred-site.xml
+++ /dev/null
@@ -1,549 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-
-<!--
-   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.
--->
-
-<!-- Put site-specific property overrides in this file. -->
-
-<configuration xmlns:xi="http://www.w3.org/2001/XInclude">
-
-<!-- i/o properties -->
-
-  <property>
-    <name>io.sort.mb</name>
-    <value></value>
-    <description>No description</description>
-  </property>
-
-  <property>
-    <name>io.sort.record.percent</name>
-    <value>.2</value>
-    <description>No description</description>
-  </property>
-
-  <property>
-    <name>io.sort.spill.percent</name>
-    <value></value>
-    <description>No description</description>
-  </property>
-
-  <property>
-    <name>io.sort.factor</name>
-    <value>100</value>
-    <description>No description</description>
-  </property>
-
-<!-- map/reduce properties -->
-
-<property>
-  <name>mapred.tasktracker.tasks.sleeptime-before-sigkill</name>
-  <value>250</value>
-  <description>Normally, this is the amount of time before killing
-  processes, and the recommended-default is 5.000 seconds - a value of
-  5000 here.  In this case, we are using it solely to blast tasks before
-  killing them, and killing them very quickly (1/4 second) to guarantee
-  that we do not leave VMs around for later jobs.
-  </description>
-</property>
-
-  <property>
-    <name>mapred.job.tracker.handler.count</name>
-    <value>50</value>
-    <description>
-    The number of server threads for the JobTracker. This should be roughly
-    4% of the number of tasktracker nodes.
-    </description>
-  </property>
-
-  <property>
-    <name>mapred.system.dir</name>
-    <value>/mapred/system</value>
-    <description>No description</description>
-    <final>true</final>
-  </property>
-
-  <property>
-    <name>mapred.job.tracker</name>
-    <!-- cluster variant -->
-    <value></value>
-    <description>No description</description>
-    <final>true</final>
-  </property>
-
-  <property>
-    <name>mapred.job.tracker.http.address</name>
-    <!-- cluster variant -->
-    <value></value>
-    <description>No description</description>
-    <final>true</final>
-  </property>
-
-  <property>
-    <!-- cluster specific -->
-    <name>mapred.local.dir</name>
-    <value></value>
-    <description>No description</description>
-    <final>true</final>
-  </property>
-
-  <property>
-  <name>mapreduce.cluster.administrators</name>
-  <value> hadoop</value>
-  </property>
-
-  <property>
-    <name>mapred.reduce.parallel.copies</name>
-    <value>30</value>
-    <description>No description</description>
-  </property>
-
-  <property>
-    <name>mapred.tasktracker.map.tasks.maximum</name>
-    <value></value>
-    <description>No description</description>
-  </property>
-
-  <property>
-    <name>mapred.tasktracker.reduce.tasks.maximum</name>
-    <value></value>
-    <description>No description</description>
-  </property>
-
-  <property>
-    <name>tasktracker.http.threads</name>
-    <value>50</value>
-  </property>
-
-  <property>
-    <name>mapred.map.tasks.speculative.execution</name>
-    <value>false</value>
-    <description>If true, then multiple instances of some map tasks
-               may be executed in parallel.</description>
-  </property>
-
-  <property>
-    <name>mapred.reduce.tasks.speculative.execution</name>
-    <value>false</value>
-    <description>If true, then multiple instances of some reduce tasks
-               may be executed in parallel.</description>
-  </property>
-
-  <property>
-    <name>mapred.reduce.slowstart.completed.maps</name>
-    <value>0.05</value>
-  </property>
-
-  <property>
-    <name>mapred.inmem.merge.threshold</name>
-    <value>1000</value>
-    <description>The threshold, in terms of the number of files
-  for the in-memory merge process. When we accumulate threshold number of files
-  we initiate the in-memory merge and spill to disk. A value of 0 or less than
-  0 indicates we want to DON'T have any threshold and instead depend only on
-  the ramfs's memory consumption to trigger the merge.
-  </description>
-  </property>
-
-  <property>
-    <name>mapred.job.shuffle.merge.percent</name>
-    <value>0.66</value>
-    <description>The usage threshold at which an in-memory merge will be
-  initiated, expressed as a percentage of the total memory allocated to
-  storing in-memory map outputs, as defined by
-  mapred.job.shuffle.input.buffer.percent.
-  </description>
-  </property>
-
-  <property>
-    <name>mapred.job.shuffle.input.buffer.percent</name>
-    <value>0.7</value>
-    <description>The percentage of memory to be allocated from the maximum heap
-  size to storing map outputs during the shuffle.
-  </description>
-  </property>
-
-  <property>
-    <name>mapred.map.output.compression.codec</name>
-    <value></value>
-    <description>If the map outputs are compressed, how should they be
-      compressed
-    </description>
-  </property>
-
-<property>
-  <name>mapred.output.compression.type</name>
-  <value>BLOCK</value>
-  <description>If the job outputs are to compressed as SequenceFiles, how should
-               they be compressed? Should be one of NONE, RECORD or BLOCK.
-  </description>
-</property>
-
-
-  <property>
-    <name>mapred.jobtracker.completeuserjobs.maximum</name>
-    <value>5</value>
-  </property>
-
-  <property>
-    <name>mapred.jobtracker.taskScheduler</name>
-    <value></value>
-  </property>
-
-  <property>
-    <name>mapred.jobtracker.restart.recover</name>
-    <value>false</value>
-    <description>"true" to enable (job) recovery upon restart,
-               "false" to start afresh
-    </description>
-  </property>
-
-  <property>
-    <name>mapred.job.reduce.input.buffer.percent</name>
-    <value>0.0</value>
-    <description>The percentage of memory- relative to the maximum heap size- to
-  retain map outputs during the reduce. When the shuffle is concluded, any
-  remaining map outputs in memory must consume less than this threshold before
-  the reduce can begin.
-  </description>
-  </property>
-
- <property>
-  <name>mapreduce.reduce.input.limit</name>
-  <value>10737418240</value>
-  <description>The limit on the input size of the reduce. (This value
-  is 10 Gb.)  If the estimated input size of the reduce is greater than
-  this value, job is failed. A value of -1 means that there is no limit
-  set. </description>
-</property>
-
-
-  <!-- copied from kryptonite configuration -->
-  <property>
-    <name>mapred.compress.map.output</name>
-    <value></value>
-  </property>
-
-
-  <property>
-    <name>mapred.task.timeout</name>
-    <value>600000</value>
-    <description>The number of milliseconds before a task will be
-  terminated if it neither reads an input, writes an output, nor
-  updates its status string.
-  </description>
-  </property>
-
-  <property>
-    <name>jetty.connector</name>
-    <value>org.mortbay.jetty.nio.SelectChannelConnector</value>
-    <description>No description</description>
-  </property>
-
-  <property>
-    <name>mapred.task.tracker.task-controller</name>
-    <value></value>
-   <description>
-     TaskController which is used to launch and manage task execution.
-  </description>
-  </property>
-
-  <property>
-    <name>mapred.child.root.logger</name>
-    <value>INFO,TLA</value>
-  </property>
-
-  <property>
-    <name>mapred.child.java.opts</name>
-    <value></value>
-
-    <description>No description</description>
-  </property>
-
-  <property>
-    <name>mapred.cluster.map.memory.mb</name>
-    <value>1536</value>
-  </property>
-
-  <property>
-    <name>mapred.cluster.reduce.memory.mb</name>
-    <value>2048</value>
-  </property>
-
-  <property>
-    <name>mapred.job.map.memory.mb</name>
-    <value>1536</value>
-  </property>
-
-  <property>
-    <name>mapred.job.reduce.memory.mb</name>
-    <value>2048</value>
-  </property>
-
-  <property>
-    <name>mapred.cluster.max.map.memory.mb</name>
-    <value>6144</value>
-  </property>
-
-  <property>
-    <name>mapred.cluster.max.reduce.memory.mb</name>
-    <value>4096</value>
-  </property>
-
-<property>
-  <name>mapred.hosts</name>
-  <value></value>
-</property>
-
-<property>
-  <name>mapred.hosts.exclude</name>
-  <value></value>
-</property>
-
-<property>
-  <name>mapred.max.tracker.blacklists</name>
-  <value>16</value>
-  <description>
-    if node is reported blacklisted by 16 successful jobs within timeout-window, it will be graylisted
-  </description>
-</property>
-
-<property>
-  <name>mapred.healthChecker.script.path</name>
-  <value></value>
-</property>
-
-<property>
-  <name>mapred.healthChecker.interval</name>
-  <value>135000</value>
-</property>
-
-<property>
-  <name>mapred.healthChecker.script.timeout</name>
-  <value>60000</value>
-</property>
-
-<property>
-  <name>mapred.job.tracker.persist.jobstatus.active</name>
-  <value>false</value>
-  <description>Indicates if persistency of job status information is
-  active or not.
-  </description>
-</property>
-
-<property>
-  <name>mapred.job.tracker.persist.jobstatus.hours</name>
-  <value>1</value>
-  <description>The number of hours job status information is persisted in DFS.
-    The job status information will be available after it drops of the memory
-    queue and between jobtracker restarts. With a zero value the job status
-    information is not persisted at all in DFS.
-  </description>
-</property>
-
-<property>
-  <name>mapred.job.tracker.persist.jobstatus.dir</name>
-  <value></value>
-  <description>The directory where the job status information is persisted
-   in a file system to be available after it drops of the memory queue and
-   between jobtracker restarts.
-  </description>
-</property>
-
-<property>
-  <name>mapred.jobtracker.retirejob.check</name>
-  <value>10000</value>
-</property>
-
-<property>
-  <name>mapred.jobtracker.retirejob.interval</name>
-  <value>21600000</value>
-</property>
-
-<property>
-  <name>mapred.job.tracker.history.completed.location</name>
-  <value>/mapred/history/done</value>
-  <description>No description</description>
-</property>
-
-<property>
-  <name>mapred.task.maxvmem</name>
-  <value></value>
-  <final>true</final>
-   <description>No description</description>
-</property>
-
-<property>
-  <name>mapred.jobtracker.maxtasks.per.job</name>
-  <value></value>
-  <final>true</final>
-  <description>The maximum number of tasks for a single job.
-  A value of -1 indicates that there is no maximum.  </description>
-</property>
-
-<property>
-  <name>mapreduce.fileoutputcommitter.marksuccessfuljobs</name>
-  <value>false</value>
-</property>
-
-<property>
-  <name>mapred.userlog.retain.hours</name>
-  <value></value>
-</property>
-
-<property>
-  <name>mapred.job.reuse.jvm.num.tasks</name>
-  <value>1</value>
-  <description>
-    How many tasks to run per jvm. If set to -1, there is no limit
-  </description>
-  <final>true</final>
-</property>
-
-<property>
-  <name>mapreduce.jobtracker.kerberos.principal</name>
-  <value></value>
-  <description>
-      JT user name key.
- </description>
-</property>
-
-<property>
-  <name>mapreduce.tasktracker.kerberos.principal</name>
-   <value></value>
-  <description>
-       tt user name key. "_HOST" is replaced by the host name of the task tracker.
-   </description>
-</property>
-
-
-  <property>
-    <name>hadoop.job.history.user.location</name>
-    <value>none</value>
-    <final>true</final>
-  </property>
-
-
- <property>
-   <name>mapreduce.jobtracker.keytab.file</name>
-   <value></value>
-   <description>
-       The keytab for the jobtracker principal.
-   </description>
-
-</property>
-
- <property>
-   <name>mapreduce.tasktracker.keytab.file</name>
-   <value></value>
-    <description>The filename of the keytab for the task tracker</description>
- </property>
-
- <property>
-   <name>mapreduce.jobtracker.staging.root.dir</name>
-   <value>/user</value>
- <description>The Path prefix for where the staging directories should be placed. The next level is always the user's
-   name. It is a path in the default file system.</description>
- </property>
-
- <property>
-      <name>mapreduce.tasktracker.group</name>
-      <value>hadoop</value>
-      <description>The group that the task controller uses for accessing the task controller. The mapred user must be a member and users should *not* be members.</description>
-
- </property>
-
-  <property>
-    <name>mapreduce.jobtracker.split.metainfo.maxsize</name>
-    <value>50000000</value>
-    <final>true</final>
-     <description>If the size of the split metainfo file is larger than this, the JobTracker will fail the job during
-    initialize.
-   </description>
-  </property>
-  <property>
-    <name>mapreduce.history.server.embedded</name>
-    <value>false</value>
-    <description>Should job history server be embedded within Job tracker
-process</description>
-    <final>true</final>
-  </property>
-
-  <property>
-    <name>mapreduce.history.server.http.address</name>
-    <!-- cluster variant -->
-    <value></value>
-    <description>Http address of the history server</description>
-    <final>true</final>
-  </property>
-
-  <property>
-    <name>mapreduce.jobhistory.kerberos.principal</name>
-    <!-- cluster variant -->
-  <value></value>
-    <description>Job history user name key. (must map to same user as JT
-user)</description>
-  </property>
-
- <property>
-   <name>mapreduce.jobhistory.keytab.file</name>
-    <!-- cluster variant -->
-   <value></value>
-   <description>The keytab for the job history server principal.</description>
- </property>
-
-<property>
-  <name>mapred.jobtracker.blacklist.fault-timeout-window</name>
-  <value>180</value>
-  <description>
-    3-hour sliding window (value is in minutes)
-  </description>
-</property>
-
-<property>
-  <name>mapred.jobtracker.blacklist.fault-bucket-width</name>
-  <value>15</value>
-  <description>
-    15-minute bucket size (value is in minutes)
-  </description>
-</property>
-
-<property>
-  <name>mapred.queue.names</name>
-  <value>default</value>
-  <description> Comma separated list of queues configured for this jobtracker.</description>
-</property>
-
-<property>
-  <name>mapreduce.shuffle.port</name>
-  <value>8081</value>
-  <description>Default port that the ShuffleHandler will run on. ShuffleHandler is a service run at the NodeManager to facilitate transfers of intermediate Map outputs to requesting Reducers.</description>
-</property>
-
-<property>
-  <name>mapreduce.jobhistory.intermediate-done-dir</name>
-  <value>/mr-history/tmp</value>
-  <description>Directory where history files are written by MapReduce jobs.</description>
-</property>
-
-<property>
-  <name>mapreduce.jobhistory.done-dir</name>
-  <value>/mr-history/done</value>
-  <description>Directory where history files are managed by the MR JobHistory Server.</description>
-</property>
-
-</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/metainfo.xml
deleted file mode 100644
index 7c4d1f4..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/MAPREDUCE2/metainfo.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-<!--
-   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.
--->
-<metainfo>
-    <user>mapred</user>
-    <comment>Apache Hadoop NextGen MapReduce (client libraries)</comment>
-    <version>2.0.3.22-1</version>
-    <components>
-        <component>
-            <name>HISTORYSERVER</name>
-            <category>MASTER</category>
-        </component>
-        <component>
-            <name>MAPREDUCE2_CLIENT</name>
-            <category>CLIENT</category>
-        </component>
-    </components>
-</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/NAGIOS/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/NAGIOS/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/NAGIOS/metainfo.xml
deleted file mode 100644
index bd7de07..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/NAGIOS/metainfo.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!--
-   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.
--->
-<metainfo>
-    <user>root</user>
-    <comment>Nagios Monitoring and Alerting system</comment>
-    <version>3.2.3</version>
-
-    <components>
-        <component>
-            <name>NAGIOS_SERVER</name>
-            <category>MASTER</category>
-        </component>
-    </components>
-
-</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/OOZIE/configuration/oozie-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/OOZIE/configuration/oozie-site.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/OOZIE/configuration/oozie-site.xml
deleted file mode 100644
index 1665ba8..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/OOZIE/configuration/oozie-site.xml
+++ /dev/null
@@ -1,245 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  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.
--->     
-
-<configuration>
-
-<!--
-    Refer to the oozie-default.xml file for the complete list of
-    Oozie configuration properties and their default values.
--->
-  <property>
-    <name>oozie.base.url</name>
-    <value>http://localhost:11000/oozie</value>
-    <description>Base Oozie URL.</description>
-   </property>
-
-  <property>
-    <name>oozie.system.id</name>
-    <value>oozie-${user.name}</value>
-    <description>
-    The Oozie system ID.
-    </description>
-   </property>
-
-   <property>
-     <name>oozie.systemmode</name>
-     <value>NORMAL</value>
-     <description>
-     System mode for  Oozie at startup.
-     </description>
-   </property>
-
-   <property>
-     <name>oozie.service.AuthorizationService.security.enabled</name>
-     <value>true</value>
-     <description>
-     Specifies whether security (user name/admin role) is enabled or not.
-     If disabled any user can manage Oozie system and manage any job.
-     </description>
-   </property>
-
-   <property>
-     <name>oozie.service.PurgeService.older.than</name>
-     <value>30</value>
-     <description>
-     Jobs older than this value, in days, will be purged by the PurgeService.
-     </description>
-   </property>
-
-   <property>
-     <name>oozie.service.PurgeService.purge.interval</name>
-     <value>3600</value>
-     <description>
-     Interval at which the purge service will run, in seconds.
-     </description>
-   </property>
-
-   <property>
-     <name>oozie.service.CallableQueueService.queue.size</name>
-     <value>1000</value>
-     <description>Max callable queue size</description>
-   </property>
-
-   <property>
-     <name>oozie.service.CallableQueueService.threads</name>
-     <value>10</value>
-     <description>Number of threads used for executing callables</description>
-   </property>
-
-   <property>
-     <name>oozie.service.CallableQueueService.callable.concurrency</name>
-     <value>3</value>
-     <description>
-     Maximum concurrency for a given callable type.
-     Each command is a callable type (submit, start, run, signal, job, jobs, suspend,resume, etc).
-     Each action type is a callable type (Map-Reduce, Pig, SSH, FS, sub-workflow, etc).
-     All commands that use action executors (action-start, action-end, action-kill and action-check) use
-     the action type as the callable type.
-     </description>
-   </property>
-
-   <property>
-     <name>oozie.service.coord.normal.default.timeout</name>
-     <value>120</value>
-     <description>Default timeout for a coordinator action input check (in minutes) for normal job.
-      -1 means infinite timeout</description>
-   </property>
-
-   <property>
-     <name>oozie.db.schema.name</name>
-     <value>oozie</value>
-     <description>
-      Oozie DataBase Name
-     </description>
-   </property>
-
-    <property>
-      <name>oozie.service.HadoopAccessorService.jobTracker.whitelist</name>
-      <value> </value>
-      <description>
-      Whitelisted job tracker for Oozie service.
-      </description>
-    </property>
-   
-    <property>
-      <name>oozie.authentication.type</name>
-      <value>simple</value>
-      <description>
-      </description>
-    </property>
-   
-    <property>
-      <name>oozie.service.HadoopAccessorService.nameNode.whitelist</name>
-      <value> </value>
-      <description>
-      </description>
-    </property>
-
-    <property>
-      <name>oozie.service.WorkflowAppService.system.libpath</name>
-      <value>/user/${user.name}/share/lib</value>
-      <description>
-      System library path to use for workflow applications.
-      This path is added to workflow application if their job properties sets
-      the property 'oozie.use.system.libpath' to true.
-      </description>
-    </property>
-
-    <property>
-      <name>use.system.libpath.for.mapreduce.and.pig.jobs</name>
-      <value>false</value>
-      <description>
-      If set to true, submissions of MapReduce and Pig jobs will include
-      automatically the system library path, thus not requiring users to
-      specify where the Pig JAR files are. Instead, the ones from the system
-      library path are used.
-      </description>
-    </property>
-    <property>
-      <name>oozie.authentication.kerberos.name.rules</name>
-      <value>
-        RULE:[2:$1@$0]([jt]t@.*TODO-KERBEROS-DOMAIN)s/.*/TODO-MAPREDUSER/
-        RULE:[2:$1@$0]([nd]n@.*TODO-KERBEROS-DOMAIN)s/.*/TODO-HDFSUSER/
-        RULE:[2:$1@$0](hm@.*TODO-KERBEROS-DOMAIN)s/.*/TODO-HBASE-USER/
-        RULE:[2:$1@$0](rs@.*TODO-KERBEROS-DOMAIN)s/.*/TODO-HBASE-USER/
-        DEFAULT
-        </value>
-      <description>The mapping from kerberos principal names to local OS user names.</description>
-    </property>
-    <property>
-      <name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
-      <value>*=/etc/hadoop/conf</value>
-      <description>
-          Comma separated AUTHORITY=HADOOP_CONF_DIR, where AUTHORITY is the HOST:PORT of
-          the Hadoop service (JobTracker, HDFS). The wildcard '*' configuration is
-          used when there is no exact match for an authority. The HADOOP_CONF_DIR contains
-          the relevant Hadoop *-site.xml files. If the path is relative is looked within
-          the Oozie configuration directory; though the path can be absolute (i.e. to point
-          to Hadoop client conf/ directories in the local filesystem.
-      </description>
-    </property>
-    <property>
-        <name>oozie.service.ActionService.executor.ext.classes</name>
-        <value>
-            org.apache.oozie.action.email.EmailActionExecutor,
-            org.apache.oozie.action.hadoop.HiveActionExecutor,
-            org.apache.oozie.action.hadoop.ShellActionExecutor,
-            org.apache.oozie.action.hadoop.SqoopActionExecutor,
-            org.apache.oozie.action.hadoop.DistcpActionExecutor
-        </value>
-    </property>
-
-    <property>
-        <name>oozie.service.SchemaService.wf.ext.schemas</name>
-        <value>shell-action-0.1.xsd,email-action-0.1.xsd,hive-action-0.2.xsd,sqoop-action-0.2.xsd,ssh-action-0.1.xsd,distcp-action-0.1.xsd</value>
-    </property>
-    <property>
-        <name>oozie.service.JPAService.create.db.schema</name>
-        <value>false</value>
-        <description>
-            Creates Oozie DB.
-
-            If set to true, it creates the DB schema if it does not exist. If the DB schema exists is a NOP.
-            If set to false, it does not create the DB schema. If the DB schema does not exist it fails start up.
-        </description>
-    </property>
-
-    <property>
-        <name>oozie.service.JPAService.jdbc.driver</name>
-        <value>org.apache.derby.jdbc.EmbeddedDriver</value>
-        <description>
-            JDBC driver class.
-        </description>
-    </property>
-
-    <property>
-        <name>oozie.service.JPAService.jdbc.url</name>
-        <value>jdbc:derby:${oozie.data.dir}/${oozie.db.schema.name}-db;create=true</value>
-        <description>
-            JDBC URL.
-        </description>
-    </property>
-
-    <property>
-        <name>oozie.service.JPAService.jdbc.username</name>
-        <value>sa</value>
-        <description>
-            DB user name.
-        </description>
-    </property>
-
-    <property>
-        <name>oozie.service.JPAService.jdbc.password</name>
-        <value> </value>
-        <description>
-            DB user password.
-
-            IMPORTANT: if password is emtpy leave a 1 space string, the service trims the value,
-                       if empty Configuration assumes it is NULL.
-        </description>
-    </property>
-
-    <property>
-        <name>oozie.service.JPAService.pool.max.active.conn</name>
-        <value>10</value>
-        <description>
-             Max number of connections.
-        </description>
-    </property>
-</configuration>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/OOZIE/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/OOZIE/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/OOZIE/metainfo.xml
deleted file mode 100644
index a65b547..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/OOZIE/metainfo.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-   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.
--->
-<metainfo>
-    <user>root</user>
-    <comment>System for workflow coordination and execution of Apache Hadoop jobs</comment>
-    <version>3.3.1</version>
-
-    <components>
-        <component>
-            <name>OOZIE_SERVER</name>
-            <category>MASTER</category>
-        </component>
-
-        <component>
-            <name>OOZIE_CLIENT</name>
-            <category>CLIENT</category>
-        </component>
-    </components>
-
-</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/PIG/configuration/pig.properties
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/PIG/configuration/pig.properties b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/PIG/configuration/pig.properties
deleted file mode 100644
index 01000b5..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/PIG/configuration/pig.properties
+++ /dev/null
@@ -1,52 +0,0 @@
-# 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.
-
-# Pig default configuration file. All values can be overwritten by pig.properties and command line arguments.
-# see bin/pig -help
-
-# brief logging (no timestamps)
-brief=false
-
-#debug level, INFO is default
-debug=INFO
-
-#verbose print all log messages to screen (default to print only INFO and above to screen)
-verbose=false
-
-#exectype local|mapreduce, mapreduce is default
-exectype=mapreduce
-
-#Enable insertion of information about script into hadoop job conf 
-pig.script.info.enabled=true
-
-#Do not spill temp files smaller than this size (bytes)
-pig.spill.size.threshold=5000000
-#EXPERIMENT: Activate garbage collection when spilling a file bigger than this size (bytes)
-#This should help reduce the number of files being spilled.
-pig.spill.gc.activation.size=40000000
-
-#the following two parameters are to help estimate the reducer number
-pig.exec.reducers.bytes.per.reducer=1000000000
-pig.exec.reducers.max=999
-
-#Temporary location to store the intermediate data.
-pig.temp.dir=/tmp/
-
-#Threshold for merging FRJoin fragment files
-pig.files.concatenation.threshold=100
-pig.optimistic.files.concatenation=false;
-
-pig.disable.counter=false

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/PIG/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/PIG/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/PIG/metainfo.xml
deleted file mode 100644
index 731d7b0..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/PIG/metainfo.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!--
-   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.
--->
-<metainfo>
-    <user>root</user>
-    <comment>Scripting platform for analyzing large datasets</comment>
-    <version>0.10.1.22-1</version>
-
-    <components>
-        <component>
-            <name>PIG</name>
-            <category>CLIENT</category>
-        </component>
-    </components>
-
-</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/TEZ/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/TEZ/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/TEZ/metainfo.xml
deleted file mode 100644
index 30aa43e..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/TEZ/metainfo.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!--
-   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.
--->
-<metainfo>
-    <user>root</user>
-    <comment>Tez is the next generation Hadoop Query Processing framework written on top of YARN</comment>
-    <version>0.1.0.22-1</version>
-
-    <components>
-        <component>
-            <name>TEZ_CLIENT</name>
-            <category>CLIENT</category>
-        </component>
-    </components>
-
-</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/WEBHCAT/configuration/webhcat-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/WEBHCAT/configuration/webhcat-site.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/WEBHCAT/configuration/webhcat-site.xml
deleted file mode 100644
index 31d0113..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/WEBHCAT/configuration/webhcat-site.xml
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-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.
--->
-
-<!-- The default settings for Templeton. -->
-<!-- Edit templeton-site.xml to change settings for your local -->
-<!-- install. -->
-
-<configuration>
-
-  <property>
-    <name>templeton.port</name>
-      <value>50111</value>
-    <description>The HTTP port for the main server.</description>
-  </property>
-
-  <property>
-    <name>templeton.hadoop.conf.dir</name>
-    <value>/etc/hadoop/conf</value>
-    <description>The path to the Hadoop configuration.</description>
-  </property>
-
-  <property>
-    <name>templeton.jar</name>
-    <value>/usr/lib/hcatalog/share/webhcat/svr/webhcat.jar</value>
-    <description>The path to the Templeton jar file.</description>
-  </property>
-
-  <property>
-    <name>templeton.libjars</name>
-    <value>/usr/lib/zookeeper/zookeeper.jar</value>
-    <description>Jars to add the the classpath.</description>
-  </property>
-
-
-  <property>
-    <name>templeton.hadoop</name>
-    <value>/usr/bin/hadoop</value>
-    <description>The path to the Hadoop executable.</description>
-  </property>
-
-  <property>
-    <name>templeton.pig.archive</name>
-    <value>hdfs:///apps/webhcat/pig.tar.gz</value>
-    <description>The path to the Pig archive.</description>
-  </property>
-
-  <property>
-    <name>templeton.pig.path</name>
-    <value>pig.tar.gz/pig/bin/pig</value>
-    <description>The path to the Pig executable.</description>
-  </property>
-
-  <property>
-    <name>templeton.hcat</name>
-    <value>/usr/bin/hcat</value>
-    <description>The path to the hcatalog executable.</description>
-  </property>
-
-  <property>
-    <name>templeton.hive.archive</name>
-    <value>hdfs:///apps/webhcat/hive.tar.gz</value>
-    <description>The path to the Hive archive.</description>
-  </property>
-
-  <property>
-    <name>templeton.hive.path</name>
-    <value>hive.tar.gz/hive/bin/hive</value>
-    <description>The path to the Hive executable.</description>
-  </property>
-
-  <property>
-    <name>templeton.hive.properties</name>
-    <value></value>
-    <description>Properties to set when running hive.</description>
-  </property>
-
-
-  <property>
-    <name>templeton.zookeeper.hosts</name>
-    <value></value>
-    <description>ZooKeeper servers, as comma separated host:port pairs</description>
-  </property>
-
-  <property>
-    <name>templeton.storage.class</name>
-    <value>org.apache.hcatalog.templeton.tool.ZooKeeperStorage</value>
-    <description>The class to use as storage</description>
-  </property>
-
-  <property>
-   <name>templeton.override.enabled</name>
-   <value>false</value>
-   <description>
-     Enable the override path in templeton.override.jars
-   </description>
- </property>
-
- <property>
-    <name>templeton.streaming.jar</name>
-    <value>hdfs:///apps/webhcat/hadoop-streaming.jar</value>
-    <description>The hdfs path to the Hadoop streaming jar file.</description>
-  </property> 
-
-  <property>
-    <name>templeton.exec.timeout</name>
-    <value>60000</value>
-    <description>Time out for templeton api</description>
-  </property>
-
-</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/WEBHCAT/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/WEBHCAT/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/WEBHCAT/metainfo.xml
deleted file mode 100644
index e65992f..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/WEBHCAT/metainfo.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-   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.
--->
-<metainfo>
-    <user>root</user>
-    <comment>This is comment for WEBHCAT service</comment>
-    <version>0.5.0</version>
-
-    <components>
-        <component>
-            <name>WEBHCAT_SERVER</name>
-            <category>MASTER</category>
-        </component>
-    </components>
-
-
-</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/YARN/configuration/capacity-scheduler.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/YARN/configuration/capacity-scheduler.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/YARN/configuration/capacity-scheduler.xml
deleted file mode 100644
index 3f78292..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/YARN/configuration/capacity-scheduler.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-<!--
-   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.
--->
-
-<configuration>
-
-  <property>
-    <name>yarn.scheduler.capacity.maximum-applications</name>
-    <value>10000</value>
-    <description>
-      Maximum number of applications that can be pending and running.
-    </description>
-  </property>
-
-  <property>
-    <name>yarn.scheduler.capacity.maximum-am-resource-percent</name>
-    <value>0.1</value>
-    <description>
-      Maximum percent of resources in the cluster which can be used to run 
-      application masters i.e. controls number of concurrent running
-      applications.
-    </description>
-  </property>
-
-  <property>
-    <name>yarn.scheduler.capacity.root.queues</name>
-    <value>default</value>
-    <description>
-      The queues at the this level (root is the root queue).
-    </description>
-  </property>
-
-  <property>
-    <name>yarn.scheduler.capacity.root.capacity</name>
-    <value>100</value>
-    <description>
-      The total capacity as a percentage out of 100 for this queue.
-      If it has child queues then this includes their capacity as well.
-      The child queues capacity should add up to their parent queue's capacity
-      or less.
-    </description>
-  </property>
-
-  <property>
-    <name>yarn.scheduler.capacity.root.default.capacity</name>
-    <value>100</value>
-    <description>Default queue target capacity.</description>
-  </property>
-
-  <property>
-    <name>yarn.scheduler.capacity.root.default.user-limit-factor</name>
-    <value>1</value>
-    <description>
-      Default queue user limit a percentage from 0.0 to 1.0.
-    </description>
-  </property>
-
-  <property>
-    <name>yarn.scheduler.capacity.root.default.maximum-capacity</name>
-    <value>100</value>
-    <description>
-      The maximum capacity of the default queue. 
-    </description>
-  </property>
-
-  <property>
-    <name>yarn.scheduler.capacity.root.default.state</name>
-    <value>RUNNING</value>
-    <description>
-      The state of the default queue. State can be one of RUNNING or STOPPED.
-    </description>
-  </property>
-
-  <property>
-    <name>yarn.scheduler.capacity.root.default.acl_submit_jobs</name>
-    <value>*</value>
-    <description>
-      The ACL of who can submit jobs to the default queue.
-    </description>
-  </property>
-
-  <property>
-    <name>yarn.scheduler.capacity.root.default.acl_administer_jobs</name>
-    <value>*</value>
-    <description>
-      The ACL of who can administer jobs on the default queue.
-    </description>
-  </property>
-
-  <property>
-    <name>yarn.scheduler.capacity.root.acl_administer_queues</name>
-    <value>*</value>
-    <description>
-      The ACL for who can administer this queue i.e. change sub-queue 
-      allocations.
-    </description>
-  </property>
-  
-  <property>
-    <name>yarn.scheduler.capacity.root.unfunded.capacity</name>
-    <value>50</value>
-    <description>
-      No description
-    </description>
-  </property>
-
-</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/YARN/configuration/container-executor.cfg
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/YARN/configuration/container-executor.cfg b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/YARN/configuration/container-executor.cfg
deleted file mode 100644
index 502ddaa..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/YARN/configuration/container-executor.cfg
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-# 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.
-#
-yarn.nodemanager.local-dirs=TODO-YARN-LOCAL-DIR
-yarn.nodemanager.linux-container-executor.group=hadoop
-yarn.nodemanager.log-dirs=TODO-YARN-LOG-DIR
-banned.users=hfds,bin,0

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/YARN/configuration/core-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/YARN/configuration/core-site.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/YARN/configuration/core-site.xml
deleted file mode 100644
index 3a2af49..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/YARN/configuration/core-site.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-<!--
-   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.
--->
-<configuration>
-</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/YARN/configuration/yarn-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/YARN/configuration/yarn-site.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/YARN/configuration/yarn-site.xml
deleted file mode 100644
index e6c02bd..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/YARN/configuration/yarn-site.xml
+++ /dev/null
@@ -1,172 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-<!--
-   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.
--->
-
-<!-- Put site-specific property overrides in this file. -->
-
-<configuration xmlns:xi="http://www.w3.org/2001/XInclude">
-
-<!-- ResourceManager -->
-
-  <property>
-    <name>yarn.resourcemanager.resource-tracker.address</name>
-    <value>TODO-RMNODE-HOSTNAME:8025</value>
-  </property>
-
-  <property>
-    <name>yarn.resourcemanager.scheduler.address</name>
-    <value>TODO-RMNODE-HOSTNAME:8030</value>
-  </property>
-  
-  <property>
-    <name>yarn.resourcemanager.address</name>
-    <value>TODO-RMNODE-HOSTNAME:8050</value>
-  </property>
-
-	<property>
-    <name>yarn.resourcemanager.admin.address</name>
-    <value>TODO-RMNODE-HOSTNAME:8141</value>
-	</property>
-
-  <property>
-   <name>yarn.resourcemanager.scheduler.class</name>
-   <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
-  </property>
-
-  <property>
-    <name>yarn.scheduler.minimum-allocation-mb</name>
-    <value>1024</value>
-  </property>
-
-  <property>
-    <name>yarn.scheduler.maximum-allocation-mb</name>
-    <value>8192</value>
-  </property>
-
-<!-- NodeManager -->
-
-  <property>
-    <name>yarn.nodemanager.address</name>
-    <value>0.0.0.0:45454</value>
-  </property>
-
-  <property>
-    <name>yarn.nodemanager.local-dirs</name>
-    <value>TODO-YARN-LOCAL-DIR</value>
-  </property>
-
-  <property>
-    <name>yarn.nodemanager.resource.memory-mb</name>
-    <value>8192</value>
-    <description>Amount of physical memory, in MB, that can be allocated
-      for containers.</description>
-  </property>
-
-  <property>
-    <name>yarn.application.classpath</name>
-    <value>/etc/hadoop/conf,/usr/lib/hadoop/*,/usr/lib/hadoop/lib/*,/usr/lib/hadoop-hdfs/*,/usr/lib/hadoop-hdfs/lib/*,/usr/lib/hadoop-yarn/*,/usr/lib/hadoop-yarn/lib/*,/usr/lib/hadoop-mapreduce/*,/usr/lib/hadoop-mapreduce/lib/*</value>
-  <description>Classpath for typical applications.</description>
-  </property>
-
-  <property>
-    <name>yarn.nodemanager.vmem-pmem-ratio</name>
-    <value>2.1</value>
-    <description>Ratio between virtual memory to physical memory when
-    setting memory limits for containers. Container allocations are
-    expressed in terms of physical memory, and virtual memory usage
-    is allowed to exceed this allocation by this ratio.
-    </description>
-  </property>
-  
-  <property>
-    <name>yarn.nodemanager.container-executor.class</name>
-    <value>org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor</value>
-    <description>ContainerExecutor for launching containers</description>
-  </property>
- 
-  <property>
-    <name>yarn.nodemanager.aux-services</name>
-    <value>mapreduce.shuffle</value>
-    <description>Auxilliary services of NodeManager</description>
-  </property>
-
-  <property>
-    <name>yarn.nodemanager.aux-services.class</name>
-    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
-  </property>
-
-  <property>
-    <name>yarn.nodemanager.log-dirs</name>
-    <value>TODO-YARN-LOG-DIR</value>
-  </property>
-
-  <property>
-    <name>yarn.nodemanager.container-monitor.interval-ms</name>
-    <value>3000</value>
-    <description>The interval, in milliseconds, for which the node manager
-    waits  between two cycles of monitoring its containers' memory usage. 
-    </description>
-  </property>
-
-  <property>
-    <name>yarn.nodemanager.health-checker.script.path</name>
-    <value>/etc/hadoop/conf/health_check</value>
-  </property>
-
-  <property>
-    <name>yarn.nodemanager.health-checker.interval-ms</name>
-    <value>135000</value>
-  </property>
-
-  <property>
-    <name>yarn.nodemanager.health-checker.script.timeout-ms</name>
-    <value>60000</value>
-  </property>
-
-  <property>
-    <name>yarn.nodemanager.log.retain-second</name>
-    <value>604800</value>
-  </property>
-
-  <property>
-    <name>yarn.log-aggregation-enable</name>
-    <value>true</value>
-  </property>
-
-  <property>
-    <name>yarn.nodemanager.remote-app-log-dir</name>
-    <value>/app-logs</value>
-  </property>
-
-  <property>
-    <name>yarn.nodemanager.remote-app-log-dir-suffix</name>
-    <value>logs</value>
-  </property>
-
-  <property>
-    <name>yarn.nodemanager.log-aggregation.compression-type</name>
-    <value>gz</value> 
-  </property>
-
-  <property>
-    <name>yarn.nodemanager.delete.debug-delay-sec</name>
-    <value>36000</value>
-  </property>
-
-
-</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/YARN/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/YARN/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/YARN/metainfo.xml
deleted file mode 100644
index 743c40d..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/YARN/metainfo.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0"?>
-<!--
-   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.
--->
-<metainfo>
-    <user>mapred</user>
-    <comment>Apache Hadoop NextGen MapReduce (YARN)</comment>
-    <version>2.0.3.22-1</version>
-    <components>
-        <component>
-            <name>RESOURCEMANAGER</name>
-            <category>MASTER</category>
-        </component>
-        <component>
-            <name>NODEMANAGER</name>
-            <category>SLAVE</category>
-        </component>
-       <component>
-            <name>YARN_CLIENT</name>
-            <category>CLIENT</category>
-        </component>
-    </components>
-</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/ZOOKEEPER/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/ZOOKEEPER/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/ZOOKEEPER/metainfo.xml
deleted file mode 100644
index e72fd2a..0000000
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.1/services/ZOOKEEPER/metainfo.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-   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.
--->
-<metainfo>
-    <user>root</user>
-    <comment>Centralized service which provides highly reliable distributed coordination</comment>
-    <version>3.4.5.22-1</version>
-
-    <components>
-        <component>
-            <name>ZOOKEEPER_SERVER</name>
-            <category>MASTER</category>
-        </component>
-
-        <component>
-            <name>ZOOKEEPER_CLIENT</name>
-            <category>CLIENT</category>
-        </component>
-    </components>
-
-</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/metainfo.xml
new file mode 100644
index 0000000..ca45822
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/metainfo.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <versions>
+	  <active>true</active>
+    </versions>
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/repos/repoinfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/repos/repoinfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/repos/repoinfo.xml
new file mode 100644
index 0000000..d7c315a
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/repos/repoinfo.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<reposinfo>
+  <os type="centos6">
+    <repo>
+      <baseurl>http://dev.hortonworks.com.s3.amazonaws.com/HDP-2.0.3.0/repos/centos6</baseurl>
+      <repoid>HDP-2.0.3</repoid>
+      <reponame>HDP</reponame>
+    </repo>
+    <repo>
+      <baseurl></baseurl>
+      <repoid>HDP-epel</repoid>
+      <reponame>HDP-epel</reponame>
+      <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6&arch=$basearch]]></mirrorslist>
+    </repo>
+  </os>
+  <os type="centos5">
+    <repo>
+      <baseurl>http://dev.hortonworks.com.s3.amazonaws.com/HDP-2.0.3.0/repos/centos5</baseurl>
+      <repoid>HDP-2.0.3</repoid>
+      <reponame>HDP</reponame>
+    </repo>
+    <repo>
+      <baseurl></baseurl>
+      <repoid>HDP-epel</repoid>
+      <reponame>HDP-epel</reponame>
+      <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch]]></mirrorslist>
+    </repo>
+  </os>
+  <os type="redhat6">
+    <repo>
+      <baseurl>http://dev.hortonworks.com.s3.amazonaws.com/HDP-2.0.3.0/repos/centos6</baseurl>
+      <repoid>HDP-2.0.3</repoid>
+      <reponame>HDP</reponame>
+    </repo>
+    <repo>
+      <baseurl></baseurl>
+      <repoid>HDP-epel</repoid>
+      <reponame>HDP-epel</reponame>
+      <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6&arch=$basearch]]></mirrorslist>
+    </repo>
+  </os>
+  <os type="redhat5">
+    <repo>
+      <baseurl>http://dev.hortonworks.com.s3.amazonaws.com/HDP-2.0.3.0/repos/centos5</baseurl>
+      <repoid>HDP-2.0.3</repoid>
+      <reponame>HDP</reponame>
+    </repo>
+    <repo>
+      <baseurl></baseurl>
+      <repoid>HDP-epel</repoid>
+      <reponame>HDP-epel</reponame>
+      <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch]]></mirrorslist>
+    </repo>
+  </os>
+<!--
+  <os type="suse11">
+    <repo>
+      <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.1/repos/suse11</baseurl>
+      <repoid>HDP-2.0.1</repoid>
+      <reponame>HDP</reponame>
+    </repo>
+    <repo>
+      <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/suse11</baseurl>
+      <repoid>HDP-UTILS-1.1.0.15</repoid>
+      <reponame>HDP-UTILS</reponame>
+      <mirrorslist></mirrorslist>
+    </repo>
+  </os>
+    <os type="sles11">
+    <repo>
+      <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.1/repos/suse11</baseurl>
+      <repoid>HDP-2.0.1</repoid>
+      <reponame>HDP</reponame>
+    </repo>
+    <repo>
+      <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/suse11</baseurl>
+      <repoid>HDP-UTILS-1.1.0.15</repoid>
+      <reponame>HDP-UTILS</reponame>
+      <mirrorslist></mirrorslist>
+    </repo>
+  </os>
+-->
+</reposinfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/GANGLIA/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/GANGLIA/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/GANGLIA/metainfo.xml
new file mode 100644
index 0000000..395bb4f
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/GANGLIA/metainfo.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <user>root</user>
+    <comment>Ganglia Metrics Collection system</comment>
+    <version>3.2.0</version>
+
+    <components>
+        <component>
+            <name>GANGLIA_SERVER</name>
+            <category>MASTER</category>
+        </component>
+
+        <component>
+            <name>GANGLIA_MONITOR</name>
+            <category>SLAVE</category>
+        </component>
+
+    </components>
+
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HCATALOG/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HCATALOG/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HCATALOG/metainfo.xml
new file mode 100644
index 0000000..0094a1c
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HCATALOG/metainfo.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <user>root</user>
+    <comment>This is comment for HCATALOG service</comment>
+    <version>0.11.0.2.0.3.0</version>
+
+    <components>
+        <component>
+            <name>HCAT</name>
+            <category>CLIENT</category>
+        </component>
+    </components>
+
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HDFS/configuration/core-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HDFS/configuration/core-site.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HDFS/configuration/core-site.xml
new file mode 100644
index 0000000..e646d5b
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HDFS/configuration/core-site.xml
@@ -0,0 +1,257 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+
+ <!--
+    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.
+ -->
+ 
+<!-- Put site-specific property overrides in this file. -->
+
+<configuration xmlns:xi="http://www.w3.org/2001/XInclude">
+
+<!-- i/o properties -->
+
+  <property>
+    <name>io.file.buffer.size</name>
+    <value>131072</value>
+    <description>The size of buffer for use in sequence files.
+  The size of this buffer should probably be a multiple of hardware
+  page size (4096 on Intel x86), and it determines how much data is
+  buffered during read and write operations.</description>
+  </property>
+
+  <property>
+    <name>io.serializations</name>
+    <value>org.apache.hadoop.io.serializer.WritableSerialization</value>
+  </property>
+
+  <property>
+    <name>io.compression.codecs</name>
+    <value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec</value>
+    <description>A list of the compression codec classes that can be used
+                 for compression/decompression.</description>
+  </property>
+
+  <property>
+    <name>io.compression.codec.lzo.class</name>
+    <value>com.hadoop.compression.lzo.LzoCodec</value>
+    <description>The implementation for lzo codec.</description>
+  </property>
+
+<!-- file system properties -->
+
+  <property>
+    <name>fs.default.name</name>
+    <!-- cluster variant -->
+    <value></value>
+    <description>The name of the default file system.  Either the
+  literal string "local" or a host:port for NDFS.</description>
+    <final>true</final>
+  </property>
+
+  <property>
+    <name>fs.trash.interval</name>
+    <value>360</value>
+    <description>Number of minutes between trash checkpoints.
+  If zero, the trash feature is disabled.
+  </description>
+  </property>
+
+  <property>
+    <name>fs.checkpoint.dir</name>
+    <value></value>
+    <description>Determines where on the local filesystem the DFS secondary
+        name node should store the temporary images to merge.
+        If this is a comma-delimited list of directories then the image is
+        replicated in all of the directories for redundancy.
+    </description>
+  </property>
+
+  <property>
+    <name>fs.checkpoint.edits.dir</name>
+    <value>${fs.checkpoint.dir}</value>
+    <description>Determines where on the local filesystem the DFS secondary
+        name node should store the temporary edits to merge.
+        If this is a comma-delimited list of directoires then teh edits is
+        replicated in all of the directoires for redundancy.
+        Default value is same as fs.checkpoint.dir
+    </description>
+  </property>
+
+  <property>
+    <name>fs.checkpoint.period</name>
+    <value>21600</value>
+    <description>The number of seconds between two periodic checkpoints.
+  </description>
+  </property>
+
+  <property>
+    <name>fs.checkpoint.size</name>
+    <value>536870912</value>
+    <description>The size of the current edit log (in bytes) that triggers
+       a periodic checkpoint even if the fs.checkpoint.period hasn't expired.
+  </description>
+  </property>
+
+  <!-- ipc properties: copied from kryptonite configuration -->
+  <property>
+    <name>ipc.client.idlethreshold</name>
+    <value>8000</value>
+    <description>Defines the threshold number of connections after which
+               connections will be inspected for idleness.
+  </description>
+  </property>
+
+  <property>
+    <name>ipc.client.connection.maxidletime</name>
+    <value>30000</value>
+    <description>The maximum time after which a client will bring down the
+               connection to the server.
+  </description>
+  </property>
+
+  <property>
+    <name>ipc.client.connect.max.retries</name>
+    <value>50</value>
+    <description>Defines the maximum number of retries for IPC connections.</description>
+  </property>
+
+  <!-- Web Interface Configuration -->
+  <property>
+    <name>webinterface.private.actions</name>
+    <value>false</value>
+    <description> If set to true, the web interfaces of JT and NN may contain
+                actions, such as kill job, delete file, etc., that should
+                not be exposed to public. Enable this option if the interfaces
+                are only reachable by those who have the right authorization.
+  </description>
+  </property>
+
+ <property>
+   <name>hadoop.security.authentication</name>
+   <value>simple</value>
+   <description>
+   Set the authentication for the cluster. Valid values are: simple or
+   kerberos.
+   </description>
+ </property>
+<property>
+  <name>hadoop.security.authorization</name>
+  <value>false</value>
+  <description>
+     Enable authorization for different protocols.
+  </description>
+</property>
+
+  <property>
+    <name>hadoop.security.auth_to_local</name>
+    <value>
+        RULE:[2:$1@$0]([rn]m@.*)s/.*/yarn/
+        RULE:[2:$1@$0]([nd]n@.*)s/.*/hdfs/
+        RULE:[2:$1@$0](hm@.*)s/.*/hbase/
+        RULE:[2:$1@$0](rs@.*)s/.*/hbase/
+        DEFAULT
+    </value>
+<description>The mapping from kerberos principal names to local OS user names.
+  So the default rule is just "DEFAULT" which takes all principals in your default domain to their first component.
+  "omalley@APACHE.ORG" and "omalley/admin@APACHE.ORG" to "omalley", if your default domain is APACHE.ORG.
+The translations rules have 3 sections:
+      base     filter    substitution
+The base consists of a number that represents the number of components in the principal name excluding the realm and the pattern for building the name from the sections of the principal name. The base uses $0 to mean the realm, $1 to mean the first component and $2 to mean the second component.
+
+[1:$1@$0] translates "omalley@APACHE.ORG" to "omalley@APACHE.ORG"
+[2:$1] translates "omalley/admin@APACHE.ORG" to "omalley"
+[2:$1%$2] translates "omalley/admin@APACHE.ORG" to "omalley%admin"
+
+The filter is a regex in parens that must the generated string for the rule to apply.
+
+"(.*%admin)" will take any string that ends in "%admin"
+"(.*@ACME.COM)" will take any string that ends in "@ACME.COM"
+
+Finally, the substitution is a sed rule to translate a regex into a fixed string.
+
+"s/@ACME\.COM//" removes the first instance of "@ACME.COM".
+"s/@[A-Z]*\.COM//" removes the first instance of "@" followed by a name followed by ".COM".
+"s/X/Y/g" replaces all of the "X" in the name with "Y"
+
+So, if your default realm was APACHE.ORG, but you also wanted to take all principals from ACME.COM that had a single component "joe@ACME.COM", you'd do:
+
+RULE:[1:$1@$0](.@ACME.ORG)s/@.//
+DEFAULT
+
+To also translate the names with a second component, you'd make the rules:
+
+RULE:[1:$1@$0](.@ACME.ORG)s/@.//
+RULE:[2:$1@$0](.@ACME.ORG)s/@.//
+DEFAULT
+
+If you want to treat all principals from APACHE.ORG with /admin as "admin", your rules would look like:
+
+RULE[2:$1%$2@$0](.%admin@APACHE.ORG)s/./admin/
+DEFAULT
+    </description>
+  </property>
+
+<!--
+<property>
+  <name>hadoop.proxyuser.scope.function_hdp_user("hcat_user").groups</name>
+  <value></value>
+  <description>
+     Proxy group for Hadoop.
+  </description>
+</property>
+
+<property>
+  <name>hadoop.proxyuser.scope.function_hdp_user("hcat_user").hosts</name>
+  <value></value>
+  <description>
+     Proxy host for Hadoop.
+  </description>
+</property>
+
+<property>
+  <name>hadoop.proxyuser.scope.function_hdp_user("oozie_user").groups</name>
+  <value></value>
+  <description>
+     Proxy group for Hadoop.
+  </description>
+</property>
+
+<property>
+  <name>hadoop.proxyuser.scope.function_hdp_user("oozie_user").hosts</name>
+  <value></value>
+  <description>
+     Proxy host for Hadoop.
+  </description>
+</property>
+
+<property>
+  <name>hadoop.proxyuser.scope.function_hdp_user("templeton_user").groups</name>
+  <value></value>
+  <description>
+    Proxy group for templeton.
+  </description>
+</property>
+
+<property>
+  <name>hadoop.proxyuser.scope.function_hdp_user("templeton_user").hosts</name>
+  <value></value>
+  <description>
+    Proxy host for templeton.
+  </description>
+</property>
+-->
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HDFS/configuration/global.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HDFS/configuration/global.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HDFS/configuration/global.xml
new file mode 100644
index 0000000..dbbe81b
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HDFS/configuration/global.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+/**
+ * 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.
+ */
+-->
+
+<configuration>
+  <property>
+    <name>namenode_host</name>
+    <value></value>
+    <description>NameNode Host.</description>
+  </property>
+  <property>
+    <name>dfs_name_dir</name>
+    <value>/hadoop/hdfs/namenode</value>
+    <description>NameNode Directories.</description>
+  </property>
+  <property>
+    <name>snamenode_host</name>
+    <value></value>
+    <description>Secondary NameNode.</description>
+  </property>
+  <property>
+    <name>fs_checkpoint_dir</name>
+    <value>/hadoop/hdfs/namesecondary</value>
+    <description>Secondary NameNode checkpoint dir.</description>
+  </property>
+  <property>
+    <name>datanode_hosts</name>
+    <value></value>
+    <description>List of Datanode Hosts.</description>
+  </property>
+  <property>
+    <name>dfs_data_dir</name>
+    <value>/hadoop/hdfs/data</value>
+    <description>Data directories for Data Nodes.</description>
+  </property>
+  <property>
+    <name>hdfs_log_dir_prefix</name>
+    <value>/var/log/hadoop</value>
+    <description>Hadoop Log Dir Prefix</description>
+  </property>
+  <property>
+    <name>hadoop_pid_dir_prefix</name>
+    <value>/var/run/hadoop</value>
+    <description>Hadoop PID Dir Prefix</description>
+  </property>
+  <property>
+    <name>dfs_webhdfs_enabled</name>
+    <value>true</value>
+    <description>WebHDFS enabled</description>
+  </property>
+  <property>
+    <name>hadoop_heapsize</name>
+    <value>1024</value>
+    <description>Hadoop maximum Java heap size</description>
+  </property>
+  <property>
+    <name>namenode_heapsize</name>
+    <value>1024</value>
+    <description>NameNode Java heap size</description>
+  </property>
+  <property>
+    <name>namenode_opt_newsize</name>
+    <value>200</value>
+    <description>NameNode new generation size</description>
+  </property>
+  <property>
+    <name>namenode_opt_maxnewsize</name>
+    <value>640</value>
+    <description>NameNode maximum new generation size</description>
+  </property>
+  <property>
+    <name>datanode_du_reserved</name>
+    <value>1</value>
+    <description>Reserved space for HDFS</description>
+  </property>
+  <property>
+    <name>dtnode_heapsize</name>
+    <value>1024</value>
+    <description>DataNode maximum Java heap size</description>
+  </property>
+  <property>
+    <name>dfs_datanode_failed_volume_tolerated</name>
+    <value>0</value>
+    <description>DataNode volumes failure toleration</description>
+  </property>
+  <property>
+    <name>fs_checkpoint_period</name>
+    <value>21600</value>
+    <description>HDFS Maximum Checkpoint Delay</description>
+  </property>
+  <property>
+    <name>fs_checkpoint_size</name>
+    <value>0.5</value>
+    <description>FS Checkpoint Size.</description>
+  </property>
+  <property>
+    <name>proxyuser_group</name>
+    <value>users</value>
+    <description>Proxy user group.</description>
+  </property>
+  <property>
+    <name>dfs_exclude</name>
+    <value></value>
+    <description>HDFS Exclude hosts.</description>
+  </property>
+  <property>
+    <name>dfs_include</name>
+    <value></value>
+    <description>HDFS Include hosts.</description>
+  </property>
+  <property>
+    <name>dfs_replication</name>
+    <value>3</value>
+    <description>Default Block Replication.</description>
+  </property>
+  <property>
+    <name>dfs_block_local_path_access_user</name>
+    <value>hbase</value>
+    <description>Default Block Replication.</description>
+  </property>
+  <property>
+    <name>dfs_datanode_address</name>
+    <value>50010</value>
+    <description>Port for datanode address.</description>
+  </property>
+  <property>
+    <name>dfs_datanode_http_address</name>
+    <value>50075</value>
+    <description>Port for datanode address.</description>
+  </property>
+  <property>
+    <name>dfs_datanode_data_dir_perm</name>
+    <value>750</value>
+    <description>Datanode dir perms.</description>
+  </property>
+
+  <property>
+    <name>security_enabled</name>
+    <value>false</value>
+    <description>Hadoop Security</description>
+  </property>
+  <property>
+    <name>kerberos_domain</name>
+    <value>EXAMPLE.COM</value>
+    <description>Kerberos realm.</description>
+  </property>
+  <property>
+    <name>kadmin_pw</name>
+    <value></value>
+    <description>Kerberos realm admin password</description>
+  </property>
+  <property>
+    <name>keytab_path</name>
+    <value>/etc/security/keytabs</value>
+    <description>Kerberos keytab path.</description>
+  </property>
+  
+  <property>
+    <name>keytab_path</name>
+    <value>/etc/security/keytabs</value>
+    <description>KeyTab Directory.</description>
+  </property>
+    <property>
+    <name>namenode_formatted_mark_dir</name>
+    <value>/var/run/hadoop/hdfs/namenode/formatted/</value>
+    <description>Formatteed Mark Directory.</description>
+  </property>
+    <property>
+    <name>hdfs_user</name>
+    <value>hdfs</value>
+    <description>User and Groups.</description>
+  </property>
+  
+</configuration>


[11/14] AMBARI-2677. Merge from branch-1.4.0 (ncole)

Posted by nc...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/jmx_properties_2.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/jmx_properties_2.json b/ambari-server/src/main/resources/jmx_properties_2.json
new file mode 100644
index 0000000..2db641e
--- /dev/null
+++ b/ambari-server/src/main/resources/jmx_properties_2.json
@@ -0,0 +1,8039 @@
+{
+
+  "Component":{
+
+    "NAMENODE":{
+
+      "ServiceComponentInfo/BlocksTotal":{
+        "metric" : "Hadoop:service=NameNode,name=FSNamesystemState.BlocksTotal",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/CapacityRemaining":{
+        "metric" : "Hadoop:service=NameNode,name=FSNamesystemState.CapacityRemaining",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/CapacityTotal":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.Total",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/CapacityUsed":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.Used",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/CorruptBlocks":{
+        "metric" : "Hadoop:service=NameNode,name=FSNamesystem.CorruptBlocks",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/DeadNodes":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.DeadNodes",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/DecomNodes":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.DecomNodes",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/HeapMemoryMax":{
+        "metric" : "java.lang:type=Memory.HeapMemoryUsage[max]",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/HeapMemoryUsed":{
+        "metric" : "java.lang:type=Memory.HeapMemoryUsage[used]",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/NonHeapMemoryMax":{
+        "metric" : "java.lang:type=Memory.NonHeapMemoryUsage[max]",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/NonHeapMemoryUsed":{
+        "metric" : "java.lang:type=Memory.NonHeapMemoryUsage[used]",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/LiveNodes":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.LiveNodes",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/MissingBlocks":{
+        "metric" : "Hadoop:service=NameNode,name=FSNamesystem.MissingBlocks",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/NonDfsUsedSpace":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.NonDfsUsedSpace",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/PercentUsed":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.PercentUsed",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/PercentRemaining":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.PercentRemaining",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/Safemode":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.Safemode",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/StartTime":{
+        "metric" : "java.lang:type=Runtime.StartTime",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/TotalFiles":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.TotalFiles",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/UnderReplicatedBlocks":{
+        "metric" : "Hadoop:service=NameNode,name=FSNamesystem.UnderReplicatedBlocks",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/UpgradeFinalized":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.UpgradeFinalized",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/Version":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.Version",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/FSNamesystem/BlockCapacity":{
+        "metric" : "Hadoop:service=NameNode,name=FSNamesystem.BlockCapacity",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/FSNamesystem/BlocksTotal":{
+        "metric" : "Hadoop:service=NameNode,name=FSNamesystem.BlocksTotal",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/FSNamesystem/CapacityTotal":{
+        "metric" : "Hadoop:service=NameNode,name=FSNamesystem.CapacityTotal",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/FSNamesystem/CapacityUsed":{
+        "metric" : "Hadoop:service=NameNode,name=FSNamesystem.CapacityUsed",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/FSNamesystem/CapacityRemaining":{
+        "metric" : "Hadoop:service=NameNode,name=FSNamesystem.CapacityRemaining",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/FSNamesystem/CapacityNonDFSUsed":{
+        "metric" : "Hadoop:service=NameNode,name=FSNamesystem.CapacityNonDFSUsed",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/FSNamesystem/CapacityRemainingGB":{
+        "metric" : "Hadoop:service=NameNode,name=FSNamesystem.CapacityRemainingGB",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/FSNamesystem/CapacityTotalGB":{
+        "metric" : "Hadoop:service=NameNode,name=FSNamesystem.CapacityTotalGB",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/FSNamesystem/CapacityUsedGB":{
+        "metric" : "Hadoop:service=NameNode,name=FSNamesystem.CapacityUsedGB",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/FSNamesystem/CorruptBlocks":{
+        "metric" : "Hadoop:service=NameNode,name=FSNamesystem.CorruptBlocks",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/FSNamesystem/ExcessBlocks":{
+        "metric" : "Hadoop:service=NameNode,name=FSNamesystem.ExcessBlocks",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/FSNamesystem/FilesTotal":{
+        "metric" : "Hadoop:service=NameNode,name=FSNamesystem.FilesTotal",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/FSNamesystem/MissingBlocks":{
+        "metric" : "Hadoop:service=NameNode,name=FSNamesystem.MissingBlocks",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/FSNamesystem/PendingDeletionBlocks":{
+        "metric" : "Hadoop:service=NameNode,name=FSNamesystem.PendingDeletionBlocks",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/FSNamesystem/PendingReplicationBlocks":{
+        "metric" : "Hadoop:service=NameNode,name=FSNamesystem.PendingReplicationBlocks",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/FSNamesystem/ScheduledReplicationBlocks":{
+        "metric" : "Hadoop:service=NameNode,name=FSNamesystem.ScheduledReplicationBlocks",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/FSNamesystem/TotalLoad":{
+        "metric" : "Hadoop:service=NameNode,name=FSNamesystem.TotalLoad",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/FSNamesystem/UnderReplicatedBlocks":{
+        "metric" : "Hadoop:service=NameNode,name=FSNamesystem.UnderReplicatedBlocks",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/AddBlockOps":{
+        "metric" : "Hadoop:service=NameNode,name=NameNode.AddBlockOps",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/CreateFileOps":{
+        "metric" : "Hadoop:service=NameNode,name=NameNode.CreateFileOps",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/FileInfoOps":{
+        "metric" : "Hadoop:service=NameNode,name=NameNode.FileInfoOps",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/FilesCreated":{
+        "metric" : "Hadoop:service=NameNode,name=NameNode.FilesCreated",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/FilesInGetListingOps":{
+        "metric" : "Hadoop:service=NameNode,name=NameNode.FilesInGetListingOps",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/GetBlockLocations":{
+        "metric" : "Hadoop:service=NameNode,name=NameNode.GetBlockLocations",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/GetListingOps":{
+        "metric" : "Hadoop:service=NameNode,name=NameNode.GetListingOps",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/Syncs_avg_time":{
+        "metric" : "Hadoop:service=NameNode,name=NameNode.Syncs_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/Syncs_num_ops":{
+        "metric" : "Hadoop:service=NameNode,name=NameNode.Syncs_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/Transactions_avg_time":{
+        "metric" : "Hadoop:service=NameNode,name=NameNode.Transactions_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/Transactions_num_ops":{
+        "metric" : "Hadoop:service=NameNode,name=NameNode.Transactions_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/blockReport_avg_time":{
+        "metric" : "Hadoop:service=NameNode,name=NameNode.blockReport_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/blockReport_num_ops":{
+        "metric" : "Hadoop:service=NameNode,name=NameNode.blockReport_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/Threads":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.Threads",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/HostName":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.HostName",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/Total":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.Total",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/Version":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.Version",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/UpgradeFinalized":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.UpgradeFinalized",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/Used":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.Used",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/Free":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.Free",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/Safemode":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.Safemode",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/NonDfsUsedSpace":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.NonDfsUsedSpace",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/PercentUsed":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.PercentUsed",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/PercentRemaining":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.PercentRemaining",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/TotalBlocks":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.TotalBlocks",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/TotalFiles":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.TotalFiles",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/LiveNodes":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.LiveNodes",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/DeadNodes":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.DeadNodes",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/DecomNodes":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.DecomNodes",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/dfs/namenode/NameDirStatuses":{
+        "metric" : "Hadoop:service=NameNode,name=NameNodeInfo.NameDirStatuses",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/gcCount":{
+        "metric" : "Hadoop:service=NameNode,name=JvmMetrics.GcCount",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/gcTimeMillis":{
+        "metric" : "Hadoop:service=NameNode,name=JvmMetrics.GcTimeMillis",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/logError":{
+        "metric" : "Hadoop:service=NameNode,name=JvmMetrics.LogError",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/logFatal":{
+        "metric" : "Hadoop:service=NameNode,name=JvmMetrics.LogFatal",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/logInfo":{
+        "metric" : "Hadoop:service=NameNode,name=JvmMetrics.LogInfo",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/logWarn":{
+        "metric" : "Hadoop:service=NameNode,name=JvmMetrics.LogWarn",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/memHeapCommittedM":{
+        "metric" : "Hadoop:service=NameNode,name=JvmMetrics.MemHeapCommittedM",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/memHeapUsedM":{
+        "metric" : "Hadoop:service=NameNode,name=JvmMetrics.MemHeapUsedM",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/memNonHeapCommittedM":{
+        "metric" : "Hadoop:service=NameNode,name=JvmMetrics.MemNonHeapCommittedM",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/memNonHeapUsedM":{
+        "metric" : "Hadoop:service=NameNode,name=JvmMetrics.MemNonHeapUsedM",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/threadsBlocked":{
+        "metric" : "Hadoop:service=NameNode,name=JvmMetrics.ThreadsBlocked",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/threadsNew":{
+        "metric" : "Hadoop:service=NameNode,name=JvmMetrics.ThreadsNew",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/threadsRunnable":{
+        "metric" : "Hadoop:service=NameNode,name=JvmMetrics.ThreadsRunnable",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/threadsTerminated":{
+        "metric" : "Hadoop:service=NameNode,name=JvmMetrics.ThreadsTerminated",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/threadsTimedWaiting":{
+        "metric" : "Hadoop:service=NameNode,name=JvmMetrics.ThreadsTimedWaiting",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/threadsWaiting":{
+        "metric" : "Hadoop:service=NameNode,name=JvmMetrics.ThreadsWaiting",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpc/NumOpenConnections":{
+        "metric" : "Hadoop:service=NameNode,name=RpcActivity.NumOpenConnections",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpc/ReceivedBytes":{
+        "metric" : "Hadoop:service=NameNode,name=RpcActivity.ReceivedBytes",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpc/RpcProcessingTime_avg_time":{
+        "metric" : "Hadoop:service=NameNode,name=RpcActivity.RpcProcessingTime_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpc/RpcProcessingTime_num_ops":{
+        "metric" : "Hadoop:service=NameNode,name=RpcActivity.RpcProcessingTime_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpc/RpcQueueTime_avg_time":{
+        "metric" : "Hadoop:service=NameNode,name=RpcActivity.RpcQueueTime_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpc/RpcQueueTime_num_ops":{
+        "metric" : "Hadoop:service=NameNode,name=RpcActivity.RpcQueueTime_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpc/SentBytes":{
+        "metric" : "Hadoop:service=NameNode,name=RpcActivity.SentBytes",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpc/callQueueLen":{
+        "metric" : "Hadoop:service=NameNode,name=RpcActivity.callQueueLen",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpc/rpcAuthenticationFailures":{
+        "metric" : "Hadoop:service=NameNode,name=RpcActivity.rpcAuthenticationFailures",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpc/rpcAuthenticationSuccesses":{
+        "metric" : "Hadoop:service=NameNode,name=RpcActivity.rpcAuthenticationSuccesses",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpc/rpcAuthorizationFailures":{
+        "metric" : "Hadoop:service=NameNode,name=RpcActivity.rpcAuthorizationFailures",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpc/rpcAuthorizationSuccesses":{
+        "metric" : "Hadoop:service=NameNode,name=RpcActivity.rpcAuthorizationSuccesses",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/addBlock_avg_time":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.addBlock_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/addBlock_num_ops":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.addBlock_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/blockReceived_avg_time":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.blockReceived_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/blockReceived_num_ops":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.blockReceived_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/blockReport_avg_time":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.blockReport_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/blockReport_num_ops":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.blockReport_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/complete_avg_time":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.complete_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/complete_num_ops":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.complete_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/create_avg_time":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.create_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/create_num_ops":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.create_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/fsync_avg_time":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.fsync_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/fsync_num_ops":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.fsync_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/getBlockLocations_avg_time":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.getBlockLocations_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/getBlockLocations_num_ops":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.getBlockLocations_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/getEditLogSize_avg_time":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.getEditLogSize_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/getEditLogSize_num_ops":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.getEditLogSize_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/getFileInfo_avg_time":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.getFileInfo_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/getFileInfo_num_ops":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.getFileInfo_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/getListing_avg_time":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.getListing_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/getListing_num_ops":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.getListing_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/getProtocolVersion_avg_time":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.getProtocolVersion_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/getProtocolVersion_num_ops":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.getProtocolVersion_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/renewLease_avg_time":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.renewLease_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/renewLease_num_ops":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.renewLease_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/rollEditLog_avg_time":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.rollEditLog_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/rollEditLog_num_ops":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.rollEditLog_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/rollFsImage_avg_time":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.rollFsImage_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/rollFsImage_num_ops":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.rollFsImage_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/sendHeartbeat_avg_time":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.sendHeartbeat_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/sendHeartbeat_num_ops":{
+        "metric" : "Hadoop:service=NameNode,name=RpcDetailedActivity.sendHeartbeat_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/ugi/loginFailure_avg_time":{
+        "metric":"Hadoop:service=NameNode,name=ugi.loginFailure_avg_time",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/ugi/loginFailure_num_ops":{
+        "metric":"Hadoop:service=NameNode,name=ugi.loginFailure_num_ops",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/ugi/loginSuccess_avg_time":{
+        "metric":"Hadoop:service=NameNode,name=ugi.loginSuccess_avg_time",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/ugi/loginSuccess_num_ops":{
+        "metric":"Hadoop:service=NameNode,name=ugi.loginSuccess_num_ops",
+        "pointInTime":true,
+        "temporal":false
+      }
+    },
+    "JOBTRACKER":{
+      "ServiceComponentInfo/AliveNodes":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerInfo.AliveNodesInfoJson",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/BlackListedNodes":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerInfo.BlacklistedNodesInfoJson",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/GrayListedNodes":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerInfo.GraylistedNodesInfoJson",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/HeapMemoryMax":{
+        "metric" : "java.lang:type=Memory.HeapMemoryUsage[max]",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/HeapMemoryUsed":{
+        "metric" : "java.lang:type=Memory.HeapMemoryUsage[used]",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/NonHeapMemoryMax":{
+        "metric" : "java.lang:type=Memory.NonHeapMemoryUsage[max]",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/NonHeapMemoryUsed":{
+        "metric" : "java.lang:type=Memory.NonHeapMemoryUsage[used]",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/Queue/jobs_completed":{
+        "metric" : "Hadoop:service=JobTracker,name=QueueMetrics,q=default.jobs_completed",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/Queue/jobs_submitted":{
+        "metric" : "Hadoop:service=JobTracker,name=QueueMetrics,q=default.jobs_submitted",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/Queue/reserved_map_slots":{
+        "metric" : "Hadoop:service=JobTracker,name=QueueMetrics,q=default.reserved_map_slots",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/Queue/reserved_reduce_slots":{
+        "metric" : "Hadoop:service=JobTracker,name=QueueMetrics,q=default.reserved_reduce_slots",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/Queue/running_0":{
+        "metric" : "Hadoop:service=JobTracker,name=QueueMetrics,q=default.running_0",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/Queue/running_1440":{
+        "metric" : "Hadoop:service=JobTracker,name=QueueMetrics,q=default.running_1440",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/Queue/running_300":{
+        "metric" : "Hadoop:service=JobTracker,name=QueueMetrics,q=default.running_300",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/Queue/running_60":{
+        "metric" : "Hadoop:service=JobTracker,name=QueueMetrics,q=default.running_60",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/Queue/waiting_maps":{
+        "metric" : "Hadoop:service=JobTracker,name=QueueMetrics,q=default.waiting_maps",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/Queue/waiting_reduces":{
+        "metric" : "Hadoop:service=JobTracker,name=QueueMetrics,q=default.waiting_reduces",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/StartTime":{
+        "metric" : "java.lang:type=Runtime.StartTime",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/Version":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerInfo.Version",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/jobs_running":{
+        "metric" : "Hadoop:service=JobTracker,name=QueueMetrics,q=default.jobs_running",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/jobtracker/jobs_completed":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.jobs_completed",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/jobtracker/jobs_running":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.jobs_running",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/jobtracker/jobs_submitted":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.jobs_submitted",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/jobtracker/occupied_map_slots":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.occupied_map_slots",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/jobtracker/occupied_reduce_slots":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.occupied_reduce_slots",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/jobtracker/reserved_map_slots":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.reserved_map_slots",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/jobtracker/reserved_reduce_slots":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.reserved_reduce_slots",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/jobtracker/running_maps":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.running_maps",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/jobtracker/running_reduces":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.running_reduces",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/jobtracker/waiting_maps":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.waiting_maps",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/jobtracker/waiting_reduces":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.waiting_reduces",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/gcCount":{
+        "metric" : "Hadoop:service=JobTracker,name=JvmMetrics.GcCount",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/gcTimeMillis":{
+        "metric" : "Hadoop:service=JobTracker,name=JvmMetrics.GcTimeMillis",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/logError":{
+        "metric" : "Hadoop:service=JobTracker,name=JvmMetrics.LogError",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/logFatal":{
+        "metric" : "Hadoop:service=JobTracker,name=JvmMetrics.LogFatal",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/logInfo":{
+        "metric" : "Hadoop:service=JobTracker,name=JvmMetrics.LogInfo",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/logWarn":{
+        "metric" : "Hadoop:service=JobTracker,name=JvmMetrics.LogWarn",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/memHeapCommittedM":{
+        "metric" : "Hadoop:service=JobTracker,name=JvmMetrics.MemHeapCommittedM",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/memHeapUsedM":{
+        "metric" : "Hadoop:service=JobTracker,name=JvmMetrics.MemHeapUsedM",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/memNonHeapCommittedM":{
+        "metric" : "Hadoop:service=JobTracker,name=JvmMetrics.MemNonHeapCommittedM",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/memNonHeapUsedM":{
+        "metric" : "Hadoop:service=JobTracker,name=JvmMetrics.MemNonHeapUsedM",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/threadsBlocked":{
+        "metric" : "Hadoop:service=JobTracker,name=JvmMetrics.ThreadsBlocked",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/threadsNew":{
+        "metric" : "Hadoop:service=JobTracker,name=JvmMetrics.ThreadsNew",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/threadsRunnable":{
+        "metric" : "Hadoop:service=JobTracker,name=JvmMetrics.ThreadsRunnable",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/threadsTerminated":{
+        "metric" : "Hadoop:service=JobTracker,name=JvmMetrics.ThreadsTerminated",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/threadsTimedWaiting":{
+        "metric" : "Hadoop:service=JobTracker,name=JvmMetrics.ThreadsTimedWaiting",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/jvm/threadsWaiting":{
+        "metric" : "Hadoop:service=JobTracker,name=JvmMetrics.ThreadsWaiting",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/Queue/jobs_completed":{
+        "metric" : "Hadoop:service=JobTracker,name=QueueMetrics,q=default.jobs_completed",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/Queue/jobs_submitted":{
+        "metric" : "Hadoop:service=JobTracker,name=QueueMetrics,q=default.jobs_submitted",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/Queue/reserved_map_slots":{
+        "metric" : "Hadoop:service=JobTracker,name=QueueMetrics,q=default.reserved_map_slots",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/Queue/reserved_reduce_slots":{
+        "metric" : "Hadoop:service=JobTracker,name=QueueMetrics,q=default.reserved_reduce_slots",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/Queue/running_0":{
+        "metric" : "Hadoop:service=JobTracker,name=QueueMetrics,q=default.running_0",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/Queue/running_1440":{
+        "metric" : "Hadoop:service=JobTracker,name=QueueMetrics,q=default.running_1440",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/Queue/running_300":{
+        "metric" : "Hadoop:service=JobTracker,name=QueueMetrics,q=default.running_300",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/Queue/running_60":{
+        "metric" : "Hadoop:service=JobTracker,name=QueueMetrics,q=default.running_60",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/Queue/waiting_maps":{
+        "metric" : "Hadoop:service=JobTracker,name=QueueMetrics,q=default.waiting_maps",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/Queue/waiting_reduces":{
+        "metric" : "Hadoop:service=JobTracker,name=QueueMetrics,q=default.waiting_reduces",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/Queue/jobs_running":{
+        "metric" : "Hadoop:service=JobTracker,name=QueueMetrics,q=default.jobs_running",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/jobs_completed":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.jobs_completed",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/jobs_running":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.jobs_running",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/jobs_submitted":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.jobs_submitted",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/map_slots":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.map_slots",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/reduce_slots":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.reduce_slots",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/blacklisted_maps":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.blacklisted_maps",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/blacklisted_reduces":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.blacklisted_reduces",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/maps_launched":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.maps_launched",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/maps_completed":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.maps_completed",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/maps_failed":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.maps_failed",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/reduces_launched":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.reduces_launched",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/reduces_completed":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.reduces_completed",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/reduces_failed":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.reduces_failed",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/jobs_failed":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.jobs_failed",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/jobs_killed":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.jobs_killed",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/jobs_preparing":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.jobs_preparing",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/maps_killed":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.maps_killed",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/reduces_killed":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.reduces_killed",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/trackers":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.trackers",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/trackers_blacklisted":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.trackers_blacklisted",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/trackers_graylisted":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.trackers_graylisted",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/trackers_decommissioned":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.trackers_decommissioned",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/heartbeats":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.heartbeats",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/occupied_map_slots":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.occupied_map_slots",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/occupied_reduce_slots":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.occupied_reduce_slots",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/reserved_map_slots":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.reserved_map_slots",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/reserved_reduce_slots":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.reserved_reduce_slots",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/running_maps":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.running_maps",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/running_reduces":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.running_reduces",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/waiting_maps":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.waiting_maps",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/waiting_reduces":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerMetrics.waiting_reduces",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/Hostname":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerInfo.Hostname",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/Version":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerInfo.Version",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/ConfigVersion":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerInfo.ConfigVersion",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/ThreadCount":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerInfo.ThreadCount",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/SummaryJson":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerInfo.SummaryJson",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/AliveNodesInfoJson":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerInfo.AliveNodesInfoJson",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/BlacklistedNodesInfoJson":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerInfo.BlacklistedNodesInfoJson",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/GraylistedNodesInfoJson":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerInfo.GraylistedNodesInfoJson",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/mapred/jobtracker/QueueInfoJson":{
+        "metric" : "Hadoop:service=JobTracker,name=JobTrackerInfo.QueueInfoJson",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpc/NumOpenConnections":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcActivity.NumOpenConnections",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpc/ReceivedBytes":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcActivity.ReceivedBytes",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpc/RpcProcessingTime_avg_time":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcActivity.RpcProcessingTime_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpc/RpcProcessingTime_num_ops":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcActivity.RpcProcessingTime_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpc/RpcQueueTime_avg_time":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcActivity.RpcQueueTime_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpc/RpcQueueTime_num_ops":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcActivity.RpcQueueTime_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpc/SentBytes":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcActivity.SentBytes",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpc/callQueueLen":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcActivity.callQueueLen",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpc/rpcAuthenticationFailures":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcActivity.rpcAuthenticationFailures",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpc/rpcAuthenticationSuccesses":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcActivity.rpcAuthenticationSuccesses",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpc/rpcAuthorizationFailures":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcActivity.rpcAuthorizationFailures",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpc/rpcAuthorizationSuccesses":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcActivity.rpcAuthorizationSuccesses",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/addBlock_avg_time":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.addBlock_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/addBlock_num_ops":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.addBlock_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/blockReceived_avg_time":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.blockReceived_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/blockReceived_num_ops":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.blockReceived_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/blockReport_avg_time":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.blockReport_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/blockReport_num_ops":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.blockReport_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/complete_avg_time":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.complete_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/complete_num_ops":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.complete_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/create_avg_time":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.create_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/create_num_ops":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.create_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/fsync_avg_time":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.fsync_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/fsync_num_ops":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.fsync_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/getBlockLocations_avg_time":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.getBlockLocations_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/getBlockLocations_num_ops":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.getBlockLocations_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/getEditLogSize_avg_time":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.getEditLogSize_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/getEditLogSize_num_ops":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.getEditLogSize_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/getFileInfo_avg_time":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.getFileInfo_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/getFileInfo_num_ops":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.getFileInfo_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/getListing_avg_time":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.getListing_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/getListing_num_ops":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.getListing_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/getProtocolVersion_avg_time":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.getProtocolVersion_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/getProtocolVersion_num_ops":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.getProtocolVersion_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/renewLease_avg_time":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.renewLease_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/renewLease_num_ops":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.renewLease_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/rollEditLog_avg_time":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.rollEditLog_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/rollEditLog_num_ops":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.rollEditLog_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/rollFsImage_avg_time":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.rollFsImage_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/rollFsImage_num_ops":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.rollFsImage_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/sendHeartbeat_avg_time":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.sendHeartbeat_avg_time",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/rpcdetailed/sendHeartbeat_num_ops":{
+        "metric" : "Hadoop:service=JobTracker,name=RpcDetailedActivity.sendHeartbeat_num_ops",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/ugi/loginFailure_avg_time":{
+        "metric":"Hadoop:service=JobTracker,name=ugi.loginFailure_avg_time",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/ugi/loginFailure_num_ops":{
+        "metric":"Hadoop:service=JobTracker,name=ugi.loginFailure_num_ops",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/ugi/loginSuccess_avg_time":{
+        "metric":"Hadoop:service=JobTracker,name=ugi.loginSuccess_avg_time",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/ugi/loginSuccess_num_ops":{
+        "metric":"Hadoop:service=JobTracker,name=ugi.loginSuccess_num_ops",
+        "pointInTime":true,
+        "temporal":false
+      }
+    },
+
+    "HBASE_MASTER":{
+      "ServiceComponentInfo/AverageLoad":{
+        "metric" : "hadoop:service=Master,name=Master.AverageLoad",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/HeapMemoryMax":{
+        "metric" : "java.lang:type=Memory.HeapMemoryUsage[max]",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/HeapMemoryUsed":{
+        "metric" : "java.lang:type=Memory.HeapMemoryUsage[used]",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/NonHeapMemoryMax":{
+        "metric" : "java.lang:type=Memory.NonHeapMemoryUsage[max]",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/NonHeapMemoryUsed":{
+        "metric" : "java.lang:type=Memory.NonHeapMemoryUsage[used]",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/MasterActiveTime":{
+        "metric" : "hadoop:service=Master,name=Master.MasterActiveTime",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/MasterStartTime":{
+        "metric" : "hadoop:service=Master,name=Master.MasterStartTime",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/RegionsInTransition":{
+        "metric" : "hadoop:service=Master,name=Master.RegionsInTransition",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/Revision":{
+        "metric" : "hadoop:service=HBase,name=Info.revision",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "ServiceComponentInfo/Version":{
+        "metric" : "hadoop:service=HBase,name=Info.version",
+        "pointInTime" : true,
+        "temporal" : false
+      },
+      "metrics/hbase/master/ClusterId":{
+        "metric":"hadoop:service=Master,name=Master.ClusterId",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/MasterStartTime":{
+        "metric":"hadoop:service=Master,name=Master.MasterStartTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/MasterActiveTime":{
+        "metric":"hadoop:service=Master,name=Master.MasterActiveTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/Coprocessors":{
+        "metric":"hadoop:service=Master,name=Master.Coprocessors",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/ServerName":{
+        "metric":"hadoop:service=Master,name=Master.ServerName",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/AverageLoad":{
+        "metric":"hadoop:service=Master,name=Master.AverageLoad",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/RegionsInTransition":{
+        "metric":"hadoop:service=Master,name=Master.RegionsInTransition",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/RegionServers":{
+        "metric":"hadoop:service=Master,name=Master.RegionServers",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/ZookeeperQuorum":{
+        "metric":"hadoop:service=Master,name=Master.ZookeeperQuorum",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/DeadRegionServers":{
+        "metric":"hadoop:service=Master,name=Master.DeadRegionServers",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/IsActiveMaster":{
+        "metric":"hadoop:service=Master,name=Master.IsActiveMaster",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/splitTimeNumOps":{
+        "metric":"hadoop:service=Master,name=MasterStatistics.splitTimeNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/splitTimeAvgTime":{
+        "metric":"hadoop:service=Master,name=MasterStatistics.splitTimeAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/splitTimeMinTime":{
+        "metric":"hadoop:service=Master,name=MasterStatistics.splitTimeMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/splitTimeMaxTime":{
+        "metric":"hadoop:service=Master,name=MasterStatistics.splitTimeMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/splitSizeNumOps":{
+        "metric":"hadoop:service=Master,name=MasterStatistics.splitSizeNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/splitSizeAvgTime":{
+        "metric":"hadoop:service=Master,name=MasterStatistics.splitSizeAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/splitSizeMinTime":{
+        "metric":"hadoop:service=Master,name=MasterStatistics.splitSizeMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/splitSizeMaxTime":{
+        "metric":"hadoop:service=Master,name=MasterStatistics.splitSizeMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/cluster_requests":{
+        "metric":"hadoop:service=Master,name=MasterStatistics.cluster_requests",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/revision":{
+        "metric":"hadoop:service=HBase,name=Info.revision",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/hdfsUser":{
+        "metric":"hadoop:service=HBase,name=Info.hdfsUser",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/hdfsDate":{
+        "metric":"hadoop:service=HBase,name=Info.hdfsDate",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/hdfsUrl":{
+        "metric":"hadoop:service=HBase,name=Info.hdfsUrl",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/date":{
+        "metric":"hadoop:service=HBase,name=Info.date",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/hdfsRevision":{
+        "metric":"hadoop:service=HBase,name=Info.hdfsRevision",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/user":{
+        "metric":"hadoop:service=HBase,name=Info.user",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/hdfsVersion":{
+        "metric":"hadoop:service=HBase,name=Info.hdfsVersion",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/url":{
+        "metric":"hadoop:service=HBase,name=Info.url",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/hbase/master/version":{
+        "metric":"hadoop:service=HBase,name=Info.version",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/enableTableNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.enableTableNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/enableTableAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.enableTableAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/enableTableMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.enableTableMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/enableTableMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.enableTableMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/assignNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.assignNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/assignAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.assignAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/assignMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.assignMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/assignMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.assignMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/enableTable.aboveOneSec.NumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.enableTable.aboveOneSec.NumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/enableTable.aboveOneSec.AvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.enableTable.aboveOneSec.AvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/enableTable.aboveOneSec.MinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.enableTable.aboveOneSec.MinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/enableTable.aboveOneSec.MaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.enableTable.aboveOneSec.MaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/RpcSlowResponseNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.RpcSlowResponseNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/RpcSlowResponseAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.RpcSlowResponseAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/RpcSlowResponseMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.RpcSlowResponseMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/RpcSlowResponseMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.RpcSlowResponseMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getStoreFileListNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getStoreFileListNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getStoreFileListAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getStoreFileListAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getStoreFileListMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getStoreFileListMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getStoreFileListMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getStoreFileListMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getProtocolVersion.aboveOneSec.NumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getProtocolVersion.aboveOneSec.NumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getProtocolVersion.aboveOneSec.AvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getProtocolVersion.aboveOneSec.AvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getProtocolVersion.aboveOneSec.MinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getProtocolVersion.aboveOneSec.MinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getProtocolVersion.aboveOneSec.MaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getProtocolVersion.aboveOneSec.MaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getAlterStatus.aboveOneSec.NumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getAlterStatus.aboveOneSec.NumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getAlterStatus.aboveOneSec.AvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getAlterStatus.aboveOneSec.AvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getAlterStatus.aboveOneSec.MinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getAlterStatus.aboveOneSec.MinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getAlterStatus.aboveOneSec.MaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getAlterStatus.aboveOneSec.MaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/moveNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.moveNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/moveAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.moveAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/moveMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.moveMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/moveMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.moveMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/openRegionNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.openRegionNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/openRegionAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.openRegionAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/openRegionMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.openRegionMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/openRegionMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.openRegionMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/incrementNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.incrementNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/incrementAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.incrementAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/incrementMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.incrementMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/incrementMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.incrementMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/regionServerStartup.aboveOneSec.NumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.regionServerStartup.aboveOneSec.NumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/regionServerStartup.aboveOneSec.AvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.regionServerStartup.aboveOneSec.AvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/regionServerStartup.aboveOneSec.MinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.regionServerStartup.aboveOneSec.MinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/regionServerStartup.aboveOneSec.MaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.regionServerStartup.aboveOneSec.MaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/deleteTableNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.deleteTableNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/deleteTableAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.deleteTableAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/deleteTableMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.deleteTableMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/deleteTableMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.deleteTableMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/balance.aboveOneSec.NumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.balance.aboveOneSec.NumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/balance.aboveOneSec.AvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.balance.aboveOneSec.AvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/balance.aboveOneSec.MinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.balance.aboveOneSec.MinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/balance.aboveOneSec.MaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.balance.aboveOneSec.MaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/execCoprocessorNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.execCoprocessorNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/execCoprocessorAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.execCoprocessorAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/execCoprocessorMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.execCoprocessorMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/execCoprocessorMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.execCoprocessorMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getHTableDescriptorsNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getHTableDescriptorsNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getHTableDescriptorsAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getHTableDescriptorsAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getHTableDescriptorsMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getHTableDescriptorsMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getHTableDescriptorsMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getHTableDescriptorsMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/addColumnNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.addColumnNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/addColumnAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.addColumnAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/addColumnMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.addColumnMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/addColumnMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.addColumnMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/offline.aboveOneSec.NumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.offline.aboveOneSec.NumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/offline.aboveOneSec.AvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.offline.aboveOneSec.AvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/offline.aboveOneSec.MinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.offline.aboveOneSec.MinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/offline.aboveOneSec.MaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.offline.aboveOneSec.MaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/multiNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.multiNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/multiAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.multiAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/multiMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.multiMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/multiMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.multiMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/closeRegionNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.closeRegionNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/closeRegionAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.closeRegionAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/closeRegionMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.closeRegionMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/closeRegionMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.closeRegionMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/disableTableNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.disableTableNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/disableTableAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.disableTableAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/disableTableMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.disableTableMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/disableTableMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.disableTableMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/bulkLoadHFilesNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.bulkLoadHFilesNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/bulkLoadHFilesAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.bulkLoadHFilesAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/bulkLoadHFilesMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.bulkLoadHFilesMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/bulkLoadHFilesMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.bulkLoadHFilesMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/putNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.putNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/putAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.putAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/putMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.putMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/putMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.putMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/createTableNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.createTableNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/createTableAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.createTableAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/createTableMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.createTableMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/createTableMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.createTableMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/nextNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.nextNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/nextAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.nextAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/nextMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.nextMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/nextMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.nextMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/unlockRowNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.unlockRowNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/unlockRowAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.unlockRowAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/unlockRowMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.unlockRowMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/unlockRowMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.unlockRowMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/reportRSFatalErrorNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.reportRSFatalErrorNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/reportRSFatalErrorAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.reportRSFatalErrorAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/reportRSFatalErrorMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.reportRSFatalErrorMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/reportRSFatalErrorMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.reportRSFatalErrorMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/rpcAuthenticationFailures":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.rpcAuthenticationFailures",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getRegionInfoNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getRegionInfoNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getRegionInfoAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getRegionInfoAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getRegionInfoMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getRegionInfoMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getRegionInfoMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getRegionInfoMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/openScannerNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.openScannerNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/openScannerAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.openScannerAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/openScannerMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.openScannerMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/openScannerMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.openScannerMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/offlineNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.offlineNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/offlineAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.offlineAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/offlineMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.offlineMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/offlineMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.offlineMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getAlterStatusNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getAlterStatusNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getAlterStatusAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getAlterStatusAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getAlterStatusMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getAlterStatusMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getAlterStatusMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getAlterStatusMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/deleteNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.deleteNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/deleteAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.deleteAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/deleteMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.deleteMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/deleteMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.deleteMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/RpcProcessingTimeNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.RpcProcessingTimeNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/RpcProcessingTimeAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.RpcProcessingTimeAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/RpcProcessingTimeMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.RpcProcessingTimeMinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/RpcProcessingTimeMaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.RpcProcessingTimeMaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/move.aboveOneSec.NumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.move.aboveOneSec.NumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/move.aboveOneSec.AvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.move.aboveOneSec.AvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/move.aboveOneSec.MinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.move.aboveOneSec.MinTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/move.aboveOneSec.MaxTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.move.aboveOneSec.MaxTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getLastFlushTimeNumOps":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getLastFlushTimeNumOps",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getLastFlushTimeAvgTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getLastFlushTimeAvgTime",
+        "pointInTime":true,
+        "temporal":false
+      },
+      "metrics/rpc/getLastFlushTimeMinTime":{
+        "metric":"hadoop:service=HBase,name=RPCStatistics.getLastFlushTimeMinTime",
+      

<TRUNCATED>

[03/14] AMBARI-2677. Merge from branch-1.4.0 (ncole)

Posted by nc...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/controllers/main/service/info/configs.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/info/configs.js b/ambari-web/app/controllers/main/service/info/configs.js
index 0b01575..6c33134 100644
--- a/ambari-web/app/controllers/main/service/info/configs.js
+++ b/ambari-web/app/controllers/main/service/info/configs.js
@@ -42,7 +42,6 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
 
   secureConfigs: require('data/secure_mapping'),
 
-  
   /**
    * During page load time, we get the host overrides from the server.
    * The current host -> site:tag map is stored below. This will be 
@@ -1579,6 +1578,22 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
         jobTrackerHost.defaultValue = this.get('content.hostComponents').findProperty('componentName', 'JOBTRACKER').get('host.hostName');
         globalConfigs.push(jobTrackerHost);
         break;
+      case 'MAPREDUCE2':
+        var historyServerHost = serviceConfigs.findProperty('name', 'hs_host');
+        historyServerHost.defaultValue = this.get('content.hostComponents').findProperty('componentName', 'HISTORYSERVER').get('host.hostName');
+        globalConfigs.push(historyServerHost);
+        break;
+      case 'YARN':
+        var resourceManagerHost = serviceConfigs.findProperty('name', 'rm_host');
+        resourceManagerHost.defaultValue = this.get('content.hostComponents').findProperty('componentName', 'RESOURCEMANAGER').get('host.hostName');
+        globalConfigs.push(resourceManagerHost);
+        //yarn.log.server.url config dependent on HistoryServer host
+        if(App.HostComponent.find().someProperty('componentName', 'HISTORYSERVER')){
+          historyServerHost = this.get('serviceConfigs').findProperty('serviceName', 'MAPREDUCE2').configs.findProperty('name', 'hs_host');
+          historyServerHost.defaultValue = App.HostComponent.find().findProperty('componentName', 'HISTORYSERVER').get('host.hostName');
+          globalConfigs.push(historyServerHost);
+        }
+        break;
       case 'HIVE':
         var hiveMetastoreHost = serviceConfigs.findProperty('name', 'hivemetastore_host');
         hiveMetastoreHost.defaultValue = this.get('content.hostComponents').findProperty('componentName', 'HIVE_SERVER').get('host.hostName');

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/controllers/wizard/step12_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step12_controller.js b/ambari-web/app/controllers/wizard/step12_controller.js
index d5b8ae9..da698b7 100644
--- a/ambari-web/app/controllers/wizard/step12_controller.js
+++ b/ambari-web/app/controllers/wizard/step12_controller.js
@@ -19,18 +19,11 @@
 App.WizardStep12Controller = App.MainServiceInfoConfigsController.extend({
 
   modifiedConfigs: [],
-  oldConfigs: [],
 
   afterLoad: function () {
     if (this.get('dataIsLoaded')) {
       this.get('stepConfigs').objectAt(0).get('configs').filterProperty('isEditable', false).setEach('isEditable', true);
       this.get('stepConfigs').objectAt(0).get('configs').filterProperty('displayType', 'masterHost').setEach('isVisible', false);
-      this.get('oldConfigs').clear();
-      this.get('modifiedConfigs').clear();
-      this.get('stepConfigs').objectAt(0).get('configs').forEach(function (config) {
-            this.get('oldConfigs').push(jQuery.extend({}, config));
-          }, this
-      );
     }
   }.observes('dataIsLoaded'),
 
@@ -50,16 +43,18 @@ App.WizardStep12Controller = App.MainServiceInfoConfigsController.extend({
     if (this.get('isSubmitDisabled')) {
       return false;
     }
+    var self = this;
+    this.get('modifiedConfigs').clear();
     this.get('stepConfigs').objectAt(0).get('configs').forEach(function (config) {
-      var oldConfig = this.get('oldConfigs').filterProperty('name', config.get('name')).findProperty('id', config.get('id'));
-      if (!oldConfig || oldConfig.get('value') !== config.get('value')) {
-        this.get('modifiedConfigs').push({
+      if (config.get('defaultValue') !== config.get('value')) {
+        self.get('modifiedConfigs').push({
           name: config.get('displayName'),
-          oldValue: !oldConfig ? 'null' : oldConfig.get('value') + ' ' + (oldConfig.get('unit') || ''),
-          value: config.get('value') + ' ' + (config.get('unit') || '')
+          oldValue: config.get('defaultValue'),
+          value: config.get('value'),
+          unit: config.get('unit') || false
         });
       }
-    }, this);
+    });
     App.router.send('next');
   }
 });

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/controllers/wizard/step14_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step14_controller.js b/ambari-web/app/controllers/wizard/step14_controller.js
index d34dd2c..b0eb687 100644
--- a/ambari-web/app/controllers/wizard/step14_controller.js
+++ b/ambari-web/app/controllers/wizard/step14_controller.js
@@ -695,10 +695,10 @@ App.WizardStep14Controller = Em.Controller.extend({
       task = 0;
     }
     if (!polledData.someProperty('Tasks.status', 'PENDING') && !polledData.someProperty('Tasks.status', 'QUEUED') && !polledData.someProperty('Tasks.status', 'IN_PROGRESS')) {
-      if (polledData.everyProperty('Tasks.status', 'COMPLETED')) {
-        this.setTasksStatus(task, 'COMPLETED');
-      } else {
+      if (polledData.someProperty('Tasks.status', 'FAILED')) {
         this.setTasksStatus(task, 'FAILED');
+      } else {
+        this.setTasksStatus(task, 'COMPLETED');
       }
       stopPolling = true;
     } else {

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/controllers/wizard/step3_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step3_controller.js b/ambari-web/app/controllers/wizard/step3_controller.js
index 9f4b68d..ad01697 100644
--- a/ambari-web/app/controllers/wizard/step3_controller.js
+++ b/ambari-web/app/controllers/wizard/step3_controller.js
@@ -353,6 +353,15 @@ App.WizardStep3Controller = Em.Controller.extend({
     }
   },
 
+  /*
+   stopBootstrap: function () {
+   console.log('stopBootstrap() called');
+   Ember.run.later(this, function () {
+   this.startRegistration();
+   }, 1000);
+   },
+   */
+
   startRegistration: function () {
     if (this.get('registrationStartedAt') == null) {
       this.set('registrationStartedAt', new Date().getTime());

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/controllers/wizard/step6_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step6_controller.js b/ambari-web/app/controllers/wizard/step6_controller.js
index a0279de..236fa41 100644
--- a/ambari-web/app/controllers/wizard/step6_controller.js
+++ b/ambari-web/app/controllers/wizard/step6_controller.js
@@ -146,8 +146,8 @@ App.WizardStep6Controller = Em.Controller.extend({
    * @return {*}
    */
   isServiceSelected: function (name) {
-    return !!(this.get('content.services').findProperty('serviceName', name) &&
-      this.get('content.services').findProperty('serviceName', name).get('isSelected'));
+    return this.get('content.services').findProperty('serviceName', name) &&
+      this.get('content.services').findProperty('serviceName', name).get('isSelected');
   },
 
   /**

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/controllers/wizard/step8_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step8_controller.js b/ambari-web/app/controllers/wizard/step8_controller.js
index 5f73e27..57e41e8 100644
--- a/ambari-web/app/controllers/wizard/step8_controller.js
+++ b/ambari-web/app/controllers/wizard/step8_controller.js
@@ -28,6 +28,10 @@ App.WizardStep8Controller = Em.Controller.extend({
   configs: [],
   globals: [],
   ajaxQueue: [],
+  configMapping: function(){
+    return App.config.get('configMapping').all();
+  }.property('App.config.configMapping'),
+
   slaveComponentConfig: null,
   isSubmitDisabled: false,
   hasErrorOccurred: false,
@@ -1302,15 +1306,11 @@ App.WizardStep8Controller = Em.Controller.extend({
     }
     if (selectedServices.someProperty('serviceName', 'MAPREDUCE2')) {
       this.applyConfigurationToSite(this.createMrSiteObj());
-      if (App.supports.capacitySchedulerUi) {
-        this.applyConfigurationToSite(this.createMapredQueueAcls());
-      }
+      this.applyConfigurationToSite(this.createMapredQueueAcls());
     }
     if (selectedServices.someProperty('serviceName', 'YARN')) {
       this.applyConfigurationToSite(this.createYarnSiteObj());
-      if (App.supports.capacitySchedulerUi) {
-        this.applyConfigurationToSite(this.createCapacityScheduler());
-      }
+      this.applyConfigurationToSite(this.createCapacityScheduler());
     }
     if (selectedServices.someProperty('serviceName', 'HBASE')) {
       this.applyConfigurationToSite(this.createHbaseSiteObj());
@@ -1418,16 +1418,6 @@ App.WizardStep8Controller = Em.Controller.extend({
     var hdfsSiteObj = this.get('configs').filterProperty('filename', 'hdfs-site.xml');
     var hdfsProperties = {};
     hdfsSiteObj.forEach(function (_configProperty) {
-
-      if (stringUtils.compareVersions(App.get('currentStackVersionNumber'), '2.0.0') === 1 ||
-          stringUtils.compareVersions(App.get('currentStackVersionNumber'), '2.0.0') === 0) {
-        // TODO Remove temporary hack. This was added to not set
-        // dfs.hosts and dfs.hosts.exclude properties on HDP 2 stacks.
-        if ("dfs.hosts"==_configProperty.name || "dfs.hosts.exclude"==_configProperty.name) {
-          _configProperty.value = "";
-        }
-      }
-
       hdfsProperties[_configProperty.name] = _configProperty.value;
       this._recordHostOverrideFromObj(_configProperty, 'hdfs-site', 'version1', this);
       console.log("STEP*: name of the property is: " + _configProperty.name);

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/data/HDP2/config_mapping.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/HDP2/config_mapping.js b/ambari-web/app/data/HDP2/config_mapping.js
index 7c86b90..56f0e2d 100644
--- a/ambari-web/app/data/HDP2/config_mapping.js
+++ b/ambari-web/app/data/HDP2/config_mapping.js
@@ -241,31 +241,45 @@ var configs = [
   },
 /**********************************************yarn-site***************************************/
   {
+    "name": "yarn.resourcemanager.webapp.address",
+    "templateName": ["rm_host"],
+    "foreignKey": null,
+    "value": "<templateName[0]>:8088",
+    "filename": "yarn-site.xml"
+  },
+  {
     "name": "yarn.resourcemanager.resource-tracker.address",
     "templateName": ["rm_host"],
     "foreignKey": null,
-    "value": "hdfs://<templateName[0]>:8025",
+    "value": "<templateName[0]>:8025",
     "filename": "yarn-site.xml"
   },
   {
     "name": "yarn.resourcemanager.scheduler.address",
     "templateName": ["rm_host"],
     "foreignKey": null,
-    "value": "hdfs://<templateName[0]>:8030",
+    "value": "<templateName[0]>:8030",
     "filename": "yarn-site.xml"
   },
   {
     "name": "yarn.resourcemanager.address",
     "templateName": ["rm_host"],
     "foreignKey": null,
-    "value": "hdfs://<templateName[0]>:8050",
+    "value": "<templateName[0]>:8050",
     "filename": "yarn-site.xml"
   },
   {
     "name": "yarn.resourcemanager.admin.address",
     "templateName": ["rm_host"],
     "foreignKey": null,
-    "value": "hdfs://<templateName[0]>:8041",
+    "value": "<templateName[0]>:8141",
+    "filename": "yarn-site.xml"
+  },
+  {
+    "name": "yarn.log.server.url",
+    "templateName": ["hs_host"],
+    "foreignKey": null,
+    "value": "http://<templateName[0]>:19888/jobhistory/logs",
     "filename": "yarn-site.xml"
   },
 /**********************************************mapred-site***************************************/
@@ -273,14 +287,14 @@ var configs = [
     "name": "mapreduce.jobhistory.webapp.address",
     "templateName": ["hs_host"],
     "foreignKey": null,
-    "value": "hdfs://<templateName[0]>:19888",
+    "value": "<templateName[0]>:19888",
     "filename": "mapred-site.xml"
   },
   {
     "name": "mapreduce.jobhistory.address",
     "templateName": ["hs_host"],
     "foreignKey": null,
-    "value": "hdfs://<templateName[0]>:10020",
+    "value": "<templateName[0]>:10020",
     "filename": "mapred-site.xml"
   },
   {

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/data/HDP2/config_properties.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/HDP2/config_properties.js b/ambari-web/app/data/HDP2/config_properties.js
index 0f08a66..24101a5 100644
--- a/ambari-web/app/data/HDP2/config_properties.js
+++ b/ambari-web/app/data/HDP2/config_properties.js
@@ -613,6 +613,30 @@ module.exports =
     },
     {
       "id": "puppet var",
+      "name": "mapred_log_dir_prefix",
+      "displayName": "Mapreduce Log Dir Prefix",
+      "description": "",
+      "defaultValue": "/var/log/hadoop-mapreduce",
+      "displayType": "directory",
+      "isVisible": true,
+      "domain": "global",
+      "serviceName": "MAPREDUCE2",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "mapred_pid_dir_prefix",
+      "displayName": "Mapreduce PID Dir Prefix",
+      "description": "",
+      "defaultValue": "/var/run/hadoop-mapreduce",
+      "displayType": "directory",
+      "isVisible": true,
+      "domain": "global",
+      "serviceName": "MAPREDUCE2",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
       "name": "mapred_hosts_include",
       "displayName": "Include hosts",
       "description": "Include enetered hosts",
@@ -688,6 +712,30 @@ module.exports =
       "category": "NodeManager",
       "index": 0
     },
+    {
+      "id": "puppet var",
+      "name": "yarn_log_dir_prefix",
+      "displayName": "YARN Log Dir Prefix",
+      "description": "",
+      "defaultValue": "/var/log/hadoop-yarn",
+      "displayType": "directory",
+      "isVisible": true,
+      "domain": "global",
+      "serviceName": "YARN",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "yarn_pid_dir_prefix",
+      "displayName": "YARN PID Dir Prefix",
+      "description": "",
+      "defaultValue": "/var/run/hadoop-yarn",
+      "displayType": "directory",
+      "isVisible": true,
+      "domain": "global",
+      "serviceName": "YARN",
+      "category": "Advanced"
+    },
   /**********************************************HBASE***************************************/
     {
       "id": "puppet var",
@@ -2023,7 +2071,22 @@ module.exports =
       "domain": "global",
       "serviceName": "MISC",
       "category": "Users and Groups",
-      "belongsToService":["MAPREDUCE"]
+      "belongsToService":["MAPREDUCE2"]
+    },
+    {
+      "id": "puppet var",
+      "name": "yarn_user",
+      "displayName": "YARN User",
+      "description": "User to run YARN as",
+      "defaultValue": "yarn",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "domain": "global",
+      "serviceName": "MISC",
+      "category": "Users and Groups",
+      "belongsToService":["YARN"]
     },
     {
       "id": "puppet var",

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/data/HDP2/custom_configs.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/HDP2/custom_configs.js b/ambari-web/app/data/HDP2/custom_configs.js
new file mode 100644
index 0000000..4fdf3f8
--- /dev/null
+++ b/ambari-web/app/data/HDP2/custom_configs.js
@@ -0,0 +1,127 @@
+/**
+ * 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.
+ */
+
+
+module.exports =
+  [
+    {
+      "id": "site property",
+      "name": "yarn.scheduler.capacity.root.<queue-name>.capacity",
+      "displayName": "Capacity",
+      "value": '',
+      "defaultValue": '',
+      "description": "Percentage of the number of slots in the cluster that are made to be available for jobs in this queue. The sum of capacities for all queues should be less than or equal 100.",
+      "isVisible": true,
+      "isRequired": true,
+      "serviceName": "",
+      "category": "CapacityScheduler",
+      "unit": "%",
+      "isQueue": true,
+      "filename": 'capacity-scheduler.xml',
+      "inTable": true,
+      "index": 1
+    },
+    {
+      "id": "site property",
+      "name": "yarn.scheduler.capacity.root.<queue-name>.maximum-capacity",
+      "displayName": "Max Capacity",
+      "value": '',
+      "defaultValue": '100',
+      "displayType": "int",
+      "description": "Defines a limit beyond which a queue cannot use the capacity of the cluster." +
+        "This provides a means to limit how much excess capacity a queue can use. By default, there is no limit." +
+        "The Max Capacity of a queue can only be greater than or equal to its minimum capacity. " +
+        "This property could be to curtail certain jobs which are long running in nature from occupying more than a certain " +
+        "percentage of the cluster, which in the absence of pre-emption, could lead to capacity guarantees of other queues being affected. " +
+        "One important thing to note is that maximum-capacity is a percentage , so based on the cluster's capacity it would change. " +
+        "So if large no of nodes or racks get added to the cluster, Max Capacity in absolute terms would increase accordingly. ",
+      "isVisible": true,
+      "isRequired": true,
+      "serviceName": "YARN",
+      "category": "CapacityScheduler",
+      "unit": "%",
+      "valueRange": [0, 100],
+      "isQueue": true,
+      "filename": 'capacity-scheduler.xml',
+      "inTable": true,
+      "index": 2
+    },
+    {
+      "id": "site property",
+      "name": "yarn.scheduler.capacity.root.<queue-name>.user-limit-factor",
+      "displayName": "User Limit Factor",
+      "value": '',
+      "defaultValue": '1',
+      "displayType": "int",
+      "description": "The multiple of the queue capacity which can be configured to allow a single user to acquire more slots. " +
+        "By default this is set to 1 which ensure that a single user can never take more than the queue's configured capacity " +
+        "irrespective of how idle the cluster is.",
+      "isVisible": true,
+      "isRequired": true,
+      "serviceName": "YARN",
+      "category": "CapacityScheduler",
+      "isQueue": true,
+      "filename": 'capacity-scheduler.xml',
+      "inTable": true,
+      "index": 7
+    },
+    {
+      "id": "site property",
+      "name": "yarn.scheduler.capacity.root.<queue-name>.state",
+      "displayName": "State",
+      "value": '',
+      "defaultValue": 'RUNNING',
+      "description": "state",
+      "isVisible": true,
+      "isRequired": true,
+      "serviceName": "YARN",
+      "category": "CapacityScheduler",
+      "isQueue": true,
+      "filename": 'capacity-scheduler.xml',
+      "inTable": true,
+      "index": 8
+    },
+    {
+      "id": "site property",
+      "name": "yarn.scheduler.capacity.root.<queue-name>.acl_submit_jobs",
+      "displayName": "",
+      "value": '',
+      "defaultValue": '*',
+      "description": "",
+      "isVisible": false,
+      "isRequired": true,
+      "serviceName": "YARN",
+      "category": "CapacityScheduler",
+      "isQueue": true,
+      "filename": 'capacity-scheduler.xml'
+    },
+    {
+      "id": "site property",
+      "name": "yarn.scheduler.capacity.root.<queue-name>.acl_administer_jobs",
+      "displayName": "",
+      "value": '',
+      "defaultValue": '*',
+      "description": "",
+      "isVisible": false,
+      "isRequired": true,
+      "serviceName": "YARN",
+      "category": "CapacityScheduler",
+      "isQueue": true,
+      "filename": 'capacity-scheduler.xml'
+    }
+  ]

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/data/custom_configs.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/custom_configs.js b/ambari-web/app/data/custom_configs.js
index 1009f32..8f47e5a 100644
--- a/ambari-web/app/data/custom_configs.js
+++ b/ambari-web/app/data/custom_configs.js
@@ -24,7 +24,7 @@ module.exports =
       "name": "mapred.capacity-scheduler.queue.<queue-name>.capacity",
       "displayName": "Capacity",
       "value": '',
-      "defaultValue": '',
+      "defaultValue": '100',
       "description": "Percentage of the number of slots in the cluster that are made to be available for jobs in this queue. The sum of capacities for all queues should be less than or equal 100.",
       "isVisible": true,
       "isRequired": true,
@@ -33,6 +33,7 @@ module.exports =
       "unit": "%",
       "isQueue": true,
       "filename": 'capacity-scheduler.xml',
+      "inTable": true,
       "index": 1
     },
     {
@@ -40,7 +41,7 @@ module.exports =
       "name": "mapred.capacity-scheduler.queue.<queue-name>.maximum-capacity",
       "displayName": "Max Capacity",
       "value": '',
-      "defaultValue": 100,
+      "defaultValue": '100',
       "displayType": "int",
       "description": "Defines a limit beyond which a queue cannot use the capacity of the cluster." +
         "This provides a means to limit how much excess capacity a queue can use. By default, there is no limit." +
@@ -57,6 +58,7 @@ module.exports =
       "valueRange": [0, 100],
       "isQueue": true,
       "filename": 'capacity-scheduler.xml',
+      "inTable": true,
       "index": 2
     },
     {
@@ -64,7 +66,7 @@ module.exports =
       "name": "mapred.capacity-scheduler.queue.<queue-name>.minimum-user-limit-percent",
       "displayName": "Min User Limit",
       "value": '',
-      "defaultValue": 100,
+      "defaultValue": '100',
       "displayType": "int",
       "description": "Each queue enforces a limit on the percentage of resources allocated to a user at any given time, " +
         "if there is competition for them. This user limit can vary between a minimum and maximum value. " +
@@ -81,6 +83,7 @@ module.exports =
       "valueRange": [1, 100],
       "isQueue": true,
       "filename": 'capacity-scheduler.xml',
+      "inTable": true,
       "index": 9
     },
     {
@@ -88,7 +91,7 @@ module.exports =
       "name": "mapred.capacity-scheduler.queue.<queue-name>.user-limit-factor",
       "displayName": "User Limit Factor",
       "value": '',
-      "defaultValue": 1,
+      "defaultValue": '1',
       "displayType": "int",
       "description": "The multiple of the queue capacity which can be configured to allow a single user to acquire more slots. " +
         "By default this is set to 1 which ensure that a single user can never take more than the queue's configured capacity " +
@@ -99,6 +102,7 @@ module.exports =
       "category": "CapacityScheduler",
       "isQueue": true,
       "filename": 'capacity-scheduler.xml',
+      "inTable": true,
       "index": 8
     },
     {
@@ -106,7 +110,7 @@ module.exports =
       "name": "mapred.capacity-scheduler.queue.<queue-name>.supports-priority",
       "displayName": "Supports Priority",
       "value": 'false',
-      "defaultValue": false,
+      "defaultValue": 'false',
       "displayType": "checkbox",
       "description": "If true, priorities of jobs will be taken into account in scheduling decisions.",
       "isVisible": true,
@@ -115,6 +119,7 @@ module.exports =
       "category": "CapacityScheduler",
       "isQueue": true,
       "filename": 'capacity-scheduler.xml',
+      "inTable": true,
       "index": 7
     },
     {
@@ -122,37 +127,35 @@ module.exports =
       "name": "mapred.queue.<queue-name>.acl-submit-job",
       "displayName": "",
       "value": '',
-      "defaultValue": '',
+      "defaultValue": '*',
       "description": "",
       "isVisible": false,
       "isRequired": true,
       "serviceName": "MAPREDUCE",
       "category": "CapacityScheduler",
       "isQueue": true,
-      "filename": 'mapred-queue-acls.xml',
-      "index": 13
+      "filename": 'mapred-queue-acls.xml'
     },
     {
       "id": "site property",
       "name": "mapred.queue.<queue-name>.acl-administer-jobs",
       "displayName": "",
       "value": '',
-      "defaultValue": '',
+      "defaultValue": '*',
       "description": "",
       "isVisible": false,
       "isRequired": true,
       "serviceName": "MAPREDUCE",
       "category": "CapacityScheduler",
       "isQueue": true,
-      "filename": 'mapred-queue-acls.xml',
-      "index": 14
+      "filename": 'mapred-queue-acls.xml'
     },
     {
       "id": "site property",
       "name": "mapred.capacity-scheduler.queue.<queue-name>.maximum-initialized-active-tasks",
       "displayName": "Max initialized active tasks",
       "value": '',
-      "defaultValue": 200000,
+      "defaultValue": '200000',
       "displayType": "int",
       "description": "The maximum number of tasks, across all jobs in the queue, which can be initialized concurrently. " +
         "Once the queue's jobs exceed this limit they will be queued on disk.",
@@ -169,7 +172,7 @@ module.exports =
       "name": "mapred.capacity-scheduler.queue.<queue-name>.maximum-initialized-active-tasks-per-user",
       "displayName": "Max initialized active tasks per user",
       "value": '',
-      "defaultValue": 100000,
+      "defaultValue": '100000',
       "displayType": "int",
       "description": "The maximum number of tasks per-user, across all the of the user's jobs in the queue, which " +
         "can be initialized concurrently. Once the user's jobs exceed this limit they will be queued on disk.",
@@ -186,7 +189,7 @@ module.exports =
       "name": "mapred.capacity-scheduler.queue.<queue-name>.init-accept-jobs-factor",
       "displayName": "Init accept jobs factor",
       "value": '',
-      "defaultValue": 10,
+      "defaultValue": '10',
       "displayType": "int",
       "description": "The multiple of (maximum-system-jobs * queue-capacity) used to determine the number of " +
         "jobs which are accepted by the scheduler. The default value is 10. If number of jobs submitted to " +

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/data/secure_configs.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/secure_configs.js b/ambari-web/app/data/secure_configs.js
index 9f498d1..4990498 100644
--- a/ambari-web/app/data/secure_configs.js
+++ b/ambari-web/app/data/secure_configs.js
@@ -85,8 +85,8 @@ module.exports = [
     displayName: 'HBase',
     filename: 'hbase-site',
     configCategories: [
-      App.ServiceConfigCategory.create({ name: 'HBase Master', displayName : 'HBase Master'}),
-      App.ServiceConfigCategory.create({ name: 'RegionServer', displayName : 'RegionServer'})
+      App.ServiceConfigCategory.create({ name: 'HBase Master', displayName: 'HBase Master'}),
+      App.ServiceConfigCategory.create({ name: 'RegionServer', displayName: 'RegionServer'})
     ],
     sites: ['hbase-site'],
     configs: configProperties.filterProperty('serviceName', 'HBASE')
@@ -95,7 +95,7 @@ module.exports = [
     serviceName: 'ZOOKEEPER',
     displayName: 'ZooKeeper',
     configCategories: [
-      App.ServiceConfigCategory.create({ name: 'ZooKeeper Server', displayName: 'ZooKeeper Server'})
+      App.ServiceConfigCategory.create({ name: 'ZooKeeper Server'})
     ],
     configs: configProperties.filterProperty('serviceName', 'ZOOKEEPER')
 
@@ -105,7 +105,7 @@ module.exports = [
     displayName: 'Oozie',
     filename: 'oozie-site',
     configCategories: [
-      App.ServiceConfigCategory.create({ name: 'Oozie Server', displayName:  'Oozie Server'})
+      App.ServiceConfigCategory.create({ name: 'Oozie Server'})
     ],
     sites: ['oozie-site'],
     configs: configProperties.filterProperty('serviceName', 'OOZIE')

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/data/secure_mapping.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/secure_mapping.js b/ambari-web/app/data/secure_mapping.js
index 54fce80..b087285 100644
--- a/ambari-web/app/data/secure_mapping.js
+++ b/ambari-web/app/data/secure_mapping.js
@@ -124,7 +124,7 @@ module.exports = [
   },
   {
     "name": "dfs.datanode.address",
-    "templateName": ["dfs_datanode_address"],
+    "templateName": [],
     "foreignKey": null,
     "value": "0.0.0.0:<templateName[0]>",
     "filename": "hdfs-site.xml",
@@ -132,7 +132,7 @@ module.exports = [
   },
   {
     "name": "dfs.datanode.http.address",
-    "templateName": ["dfs_datanode_http_address"],
+    "templateName": [],
     "foreignKey": null,
     "value": "0.0.0.0:<templateName[0]>",
     "filename": "hdfs-site.xml",
@@ -421,6 +421,13 @@ module.exports = [
     "serviceName": "HBASE"
   },
   {
+    "name": "hbase.coprocessor.region.classes",
+    "templateName": [],
+    "foreignKey": null,
+    "value": "org.apache.hadoop.hbase.security.token.TokenProvider,org.apache.hadoop.hbase.security.access.SecureBulkLoadEndpoint,org.apache.hadoop.hbase.security.access.AccessController",
+    "filename": "hbase-site.xml"
+  },
+  {
     "name": "hbase.bulkload.staging.dir",
     "templateName": [],
     "foreignKey": null,

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/data/secure_properties.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/secure_properties.js b/ambari-web/app/data/secure_properties.js
index 956719c..30d2034 100644
--- a/ambari-web/app/data/secure_properties.js
+++ b/ambari-web/app/data/secure_properties.js
@@ -557,8 +557,6 @@ module.exports =
       "isVisible": true,
       "isOverridable": false,
       "serviceName": "HBASE",
-      "category": "RegionServer",
-      "components": ["HBASE_REGIONSERVER"]
     },
 
     //HIVE
@@ -757,6 +755,5 @@ module.exports =
       "category": "Nagios Server",
       "component": "NAGIOS_SERVER"
     }
-
   ]
-};
\ No newline at end of file
+};

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/data/service_configs.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/service_configs.js b/ambari-web/app/data/service_configs.js
index 0ab480c..e096647 100644
--- a/ambari-web/app/data/service_configs.js
+++ b/ambari-web/app/data/service_configs.js
@@ -59,7 +59,7 @@ module.exports = [
       App.ServiceConfigCategory.create({ name: 'CapacityScheduler', displayName : 'Capacity Scheduler', isCapacityScheduler : true, isCustomView: true, siteFileName: 'capacity-scheduler.xml', siteFileNames: ['capacity-scheduler.xml', 'mapred-queue-acls.xml'], canAddProperty: true}),
       App.ServiceConfigCategory.create({ name: 'AdvancedMapredSite', displayName : 'Custom mapred-site.xml', siteFileName: 'mapred-site.xml', canAddProperty: true})
     ],
-    sites: ['global', 'core-site', 'mapred-site', 'capacity-scheduler', 'mapred-queue-acls'],
+    sites: ['global', 'mapred-site', 'capacity-scheduler', 'mapred-queue-acls'],
     configs: []
   },
 
@@ -73,7 +73,7 @@ module.exports = [
       App.ServiceConfigCategory.create({ name: 'Advanced', displayName : 'Advanced'}),
       App.ServiceConfigCategory.create({ name: 'AdvancedMapredSite', displayName : 'Custom mapred-site.xml', siteFileName: 'mapred-site.xml', canAddProperty: true})
     ],
-    sites: ['core-site', 'mapred-site', 'mapred-queue-acls'],
+    sites: ['global', 'mapred-site', 'mapred-queue-acls'],
     configs: []
   },
 
@@ -89,7 +89,7 @@ module.exports = [
       App.ServiceConfigCategory.create({ name: 'Advanced', displayName : 'Advanced'}),
       App.ServiceConfigCategory.create({ name: 'AdvancedYARNSite', displayName : 'Custom yarn-site.xml', siteFileName: 'yarn-site.xml', canAddProperty: true})
     ],
-    sites: ['core-site', 'yarn-site', 'capacity-scheduler', 'mapred-queue-acls'],
+    sites: ['global', 'yarn-site', 'capacity-scheduler'],
     configs: []
   },
 

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/initialize.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/initialize.js b/ambari-web/app/initialize.js
index 17d7c9b..70e1964 100644
--- a/ambari-web/app/initialize.js
+++ b/ambari-web/app/initialize.js
@@ -40,6 +40,7 @@ require('mappers/status_mapper');
 require('mappers/hosts_mapper');
 require('mappers/cluster_mapper');
 require('mappers/jobs_mapper');
+require('mappers/apps_mapper');
 require('mappers/runs_mapper');
 require('mappers/racks_mapper');
 require('mappers/alerts_mapper');

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/mappers/apps_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/apps_mapper.js b/ambari-web/app/mappers/apps_mapper.js
new file mode 100644
index 0000000..f388555
--- /dev/null
+++ b/ambari-web/app/mappers/apps_mapper.js
@@ -0,0 +1,63 @@
+/**
+ * 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.appsMapper = App.QuickDataMapper.create({
+  model:App.App,
+  map:function (json) {
+    if (!this.get('model')) {
+      return;
+    }
+    if (json.apps) {
+      var result = [];
+      json.apps.forEach(function (item) {
+        var a = this.parseIt(item, this.config);
+        // assume a nonzero elapsed time (otherwise axis labels are blank)
+        if (a.finish_time < a.submit_time)
+          a.finish_time = a.submit_time + 1000;
+        a.elapsed_time = a.finish_time - a.submit_time;
+        a.num_stages = a.stages.length;
+        result.push(a);
+      }, this);
+
+      var r = Ember.ArrayProxy.create({"content":[]});
+      result.forEach(function(item){
+        r.content.push(App.App2.create(item));
+      });
+
+      this.set('controller.content.jobs', r.content);
+    }
+  },
+  config:{
+    id:'appId',
+    run_id:'workflowId',
+    app_name:'appName',
+    app_type:'appType',
+    workflow_entity_name:'workflowEntityName',
+    user_name:'userName',
+    queue:'queue',
+    submit_time:'submitTime',
+    launch_time:'launchTime',
+    finish_time:'finishTime',
+    num_stages:'numStages',
+    stages:'stages',
+    status:'status',
+    elapsed_time:'elapsedTime'
+  }
+});

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/mappers/runs_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/runs_mapper.js b/ambari-web/app/mappers/runs_mapper.js
index 198ddd2..fd6faf7 100644
--- a/ambari-web/app/mappers/runs_mapper.js
+++ b/ambari-web/app/mappers/runs_mapper.js
@@ -87,6 +87,7 @@ App.runsMapper = App.QuickDataMapper.create({
     startTime: 'startTime',
     elapsedTime: 'elapsedTime',
     input: 'inputBytes',
-    output: 'outputBytes'
+    output: 'outputBytes',
+    tags: 'workflowTags'
   }
 });

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/mappers/service_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/service_mapper.js b/ambari-web/app/mappers/service_mapper.js
index a08ad0a..5fd1b65 100644
--- a/ambari-web/app/mappers/service_mapper.js
+++ b/ambari-web/app/mappers/service_mapper.js
@@ -82,6 +82,35 @@ App.servicesMapper = App.QuickDataMapper.create({
     name_node_cpu: 'nameNodeComponent.host_components[0].metrics.cpu.cpu_wio',
     name_node_rpc: 'nameNodeComponent.host_components[0].metrics.rpc.RpcQueueTime_avg_time'
   },
+  yarnConfig: {
+    version: 'resourceManagerComponent.ServiceComponentInfo.Version',
+    resource_manager_node_id: 'resourceManagerComponent.host_components[0].HostRoles.host_name',
+    node_manager_nodes: 'node_manager_nodes',
+    node_manager_live_nodes: 'node_manager_live_nodes',
+    yarn_client_nodes: 'yarn_client_nodes',
+    resource_manager_start_time: 'resourceManagerComponent.ServiceComponentInfo.StartTime',
+    jvm_memory_heap_used: 'resourceManagerComponent.host_components[0].metrics.jvm.memHeapUsedM',
+    jvm_memory_heap_committed: 'resourceManagerComponent.host_components[0].metrics.jvm.memHeapCommittedM',
+    containers_allocated: 'resourceManagerComponent.host_components[0].metrics.yarn.Queue.AllocatedContainers',
+    containers_pending: 'resourceManagerComponent.host_components[0].metrics.yarn.Queue.PendingContainers',
+    containers_reserved: 'resourceManagerComponent.host_components[0].metrics.yarn.Queue.ReservedContainers',
+    apps_submitted: 'resourceManagerComponent.host_components[0].metrics.yarn.Queue.AppsSubmitted',
+    apps_running: 'resourceManagerComponent.host_components[0].metrics.yarn.Queue.AppsRunning',
+    apps_pending: 'resourceManagerComponent.host_components[0].metrics.yarn.Queue.AppsPending',
+    apps_completed: 'resourceManagerComponent.host_components[0].metrics.yarn.Queue.AppsCompleted',
+    apps_killed: 'resourceManagerComponent.host_components[0].metrics.yarn.Queue.AppsKilled',
+    apps_failed: 'resourceManagerComponent.host_components[0].metrics.yarn.Queue.AppsFailed',
+    node_managers_count_active: 'resourceManagerComponent.ServiceComponentInfo.rm_metrics.cluster.activeNMcount',
+    node_managers_count_lost: 'resourceManagerComponent.ServiceComponentInfo.rm_metrics.cluster.lostNMcount',
+    node_managers_count_unhealthy: 'resourceManagerComponent.ServiceComponentInfo.rm_metrics.cluster.unhealthyNMcount',
+    node_managers_count_rebooted: 'resourceManagerComponent.ServiceComponentInfo.rm_metrics.cluster.rebootedNMcount',
+    node_managers_count_decommissioned: 'resourceManagerComponent.ServiceComponentInfo.rm_metrics.cluster.decommissionedNMcount'
+  },
+  mapReduce2Config: {
+    version: 'jobHistoryServerComponent.ServiceComponentInfo.Version',
+    job_history_server_id: 'jobHistoryServerComponent.host_components[0].HostRoles.host_name',
+    map_reduce2_clients: 'map_reduce2_clients'
+  },
   mapReduceConfig: {
     version: 'jobTrackerComponent.ServiceComponentInfo.Version',
     job_tracker_id: 'jobTrackerComponent.host_components[0].HostRoles.host_name',
@@ -180,10 +209,19 @@ App.servicesMapper = App.QuickDataMapper.create({
             });
           }
           App.store.load(App.FlumeService, finalJson);
+        }else if (item && item.ServiceInfo && item.ServiceInfo.service_name == "YARN") {
+          finalJson = this.yarnMapper(item);
+          finalJson.rand = Math.random();
+          result.push(finalJson);
+          App.store.load(App.YARNService, finalJson);
+        }else if (item && item.ServiceInfo && item.ServiceInfo.service_name == "MAPREDUCE2") {
+          finalJson = this.mapreduce2Mapper(item);
+          finalJson.rand = Math.random();
+          result.push(finalJson);
+          App.store.load(App.MapReduce2Service, finalJson);
         }else {
           finalJson = this.parseIt(item, this.config);
           finalJson.rand = Math.random();
-          this.mapQuickLinks(finalJson, item);
           result.push(finalJson);
         }
       }, this);
@@ -329,6 +367,84 @@ App.servicesMapper = App.QuickDataMapper.create({
 
     return finalJson;
   },
+  yarnMapper: function (item) {
+    var result = [];
+    var finalConfig = jQuery.extend({}, this.config);
+    // Change the JSON so that it is easy to map
+    var yarnConfig = this.yarnConfig;
+    item.components.forEach(function (component) {
+      if (component.ServiceComponentInfo && component.ServiceComponentInfo.component_name == "RESOURCEMANAGER") {
+        item.resourceManagerComponent = component;
+        // live nodes calculation
+        var nmList = [];
+        if (component.ServiceComponentInfo.rm_metrics && component.ServiceComponentInfo.rm_metrics.cluster && component.ServiceComponentInfo.rm_metrics.cluster.nodeManagers) {
+          nmList = App.parseJSON(component.ServiceComponentInfo.rm_metrics.cluster.nodeManagers);
+        }
+        nmList.forEach(function (nm) {
+          if (nm.State === "RUNNING") {
+            if (!item.node_manager_live_nodes) {
+              item.node_manager_live_nodes = [];
+            }
+            item.node_manager_live_nodes.push(nm.HostName);
+          }
+        });
+        // extend config
+        finalConfig = jQuery.extend(finalConfig, yarnConfig);
+      }
+      if (component.ServiceComponentInfo && component.ServiceComponentInfo.component_name == "NODEMANAGER") {
+        if (!item.node_manager_nodes) {
+          item.node_manager_nodes = [];
+        }
+        if (component.host_components) {
+          component.host_components.forEach(function (hc) {
+            item.node_manager_nodes.push(hc.HostRoles.host_name);
+          });
+        }
+      }
+      if (component.ServiceComponentInfo && component.ServiceComponentInfo.component_name == "YARN_CLIENT") {
+        if (!item.yarn_client_nodes) {
+          item.yarn_client_nodes = [];
+        }
+        if (component.host_components) {
+          component.host_components.forEach(function (hc) {
+            item.yarn_client_nodes.push(hc.HostRoles.host_name);
+          });
+        }
+      }
+    });
+    // Map
+    var finalJson = this.parseIt(item, finalConfig);
+    finalJson.quick_links = [ 19, 20, 21, 22 ];
+
+    return finalJson;
+  },
+  mapreduce2Mapper: function (item) {
+    var result = [];
+    var finalConfig = jQuery.extend({}, this.config);
+    // Change the JSON so that it is easy to map
+    var mapReduce2Config = this.mapReduce2Config;
+    item.components.forEach(function (component) {
+      if (component.ServiceComponentInfo && component.ServiceComponentInfo.component_name == "HISTORYSERVER") {
+        item.jobHistoryServerComponent = component;
+        finalConfig = jQuery.extend(finalConfig, mapReduce2Config);
+      }
+      if (component.ServiceComponentInfo && component.ServiceComponentInfo.component_name == "MAPREDUCE2_CLIENT") {
+        if (!item.map_reduce2_clients) {
+          item.map_reduce2_clients = [];
+        }
+        if (component.host_components) {
+          component.host_components.forEach(function (hc) {
+            item.map_reduce2_clients.push(hc.HostRoles.host_name);
+          });
+        }
+      }
+    });
+    // Map
+    var finalJson = this.parseIt(item, finalConfig);
+    finalJson.quick_links = [23, 24, 25, 26];
+
+    return finalJson;
+  },
   mapreduceMapper: function (item) {
     // Change the JSON so that it is easy to map
     var result = [];
@@ -477,4 +593,4 @@ App.servicesMapper = App.QuickDataMapper.create({
     });
     return finalJson;
   }
-});
\ No newline at end of file
+});

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 413fcb5..2a06e7e 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -144,6 +144,7 @@ Em.I18n.translations = {
   'common.installed': 'Installed',
   'common.persist.error' : 'Error in persisting web client state at ambari server',
   'common.update.error' : 'Error in retrieving web client state from ambari server',
+  'common.tags': 'Tags',
   'requestInfo.installComponents':'Install Components',
   'requestInfo.installServices':'Install Services',
   'requestInfo.startServices':'Start Services',
@@ -532,8 +533,6 @@ Em.I18n.translations = {
   'installer.step13.sourceHost':'Source Host:',
   'installer.step13.changes':'Configs to change:',
   'installer.step13.component':'Component name:',
-  'installer.step13.oldValue':'Old value',
-  'installer.step13.newValue':'New value',
   'installer.step14.task0':'{0} stop',
   'installer.step14.task1':'{0} create',
   'installer.step14.task2':'{0} configs create',
@@ -760,6 +759,7 @@ Em.I18n.translations = {
   'services.service.summary.masterHeap':'Master Heap',
   'services.service.summary.moreStats':'more stats here',
   'services.service.summary.clientCount': '{0} Client Hosts',
+  'services.service.summary.historyServer': 'History Server Web UI',
   'services.service.actions.run.rebalancer':'Run Rebalancer',
   'services.service.actions.run.compaction':'Run Compaction',
   'services.service.actions.run.smoke':'Run Smoke Test',
@@ -861,6 +861,9 @@ Em.I18n.translations = {
   'services.service.info.metrics.mapreduce.tasksRunningWaiting.displayNames.waitingMaps':'Waiting Map Tasks',
   'services.service.info.metrics.mapreduce.tasksRunningWaiting.displayNames.waitingReduces':'Waiting Reduce Tasks',
 
+  'services.service.info.metrics.yarn.gc': 'Garbage Collection',
+  'services.service.info.metrics.yarn.gc.displayNames.gcTimeMillis':'Time',
+  
   'services.service.info.menu.summary':'Summary',
   'services.service.info.menu.configs':'Configs',
   'services.service.info.summary.hostsRunningMonitor':'{0}/{1}',
@@ -907,6 +910,8 @@ Em.I18n.translations = {
   'services.ganglia.webUi': 'Ganglia Web UI',
   'services.ganglia.monitors': 'Ganglia Monitors',
 
+  'services.mapreduce2.webUi': 'History Server UI',
+
   'services.zookeeper.prefix': '{0} of',
   'services.zookeeper.title': '{0} ZooKeepers',
   'services.zookeeper.postfix': 'running',
@@ -1035,6 +1040,7 @@ Em.I18n.translations = {
   'charts.heatmap.item.host.process':'Total Running Processes',
   'charts.heatmap.category.hdfs':'HDFS',
   'charts.heatmap.category.mapreduce': 'MapReduce',
+  'charts.heatmap.category.yarn': 'YARN',
   'charts.heatmap.category.hbase': 'HBase',
   'charts.heatmap.unknown': 'Unknown',
   'charts.heatmap.label.notApplicable' :'Not Applicable',
@@ -1045,8 +1051,10 @@ Em.I18n.translations = {
   'charts.heatmap.metrics.DFSMemHeapUsed' :'HDFS JVM Heap Memory Used',
   'charts.heatmap.metrics.diskSpaceUsed' :'Host Disk Space Used %',
   'charts.heatmap.metrics.MapReduceGCTime' :'MapReduce Garbage Collection Time',
+  'charts.heatmap.metrics.YarnGCTime' :'YARN Garbage Collection Time',
   'charts.heatmap.metrics.mapsRunning' :'MapReduce Maps Running',
   'charts.heatmap.metrics.MRMemHeapUsed' :'MapReduce JVM Heap Memory Used',
+  'charts.heatmap.metrics.YarnMemHeapUsed' :'YARN JVM Heap Memory Used',
   'charts.heatmap.metrics.reducesRunning' :'MapReduce Reduces Running',
   'charts.heatmap.metrics.memoryUsed' :'Host Memory Used %',
   'charts.heatmap.metrics.processRun' :'Total Running Processes',
@@ -1130,6 +1138,22 @@ Em.I18n.translations = {
   'dashboard.services.hdfs.chart.label':'Capacity (Used/Total)',
   'dashboard.services.hdfs.blockErrors':'{0} corrupt / {1} missing / {2} under replicated',
 
+  'dashboard.services.yarn.summary':'{0} of {1} nodes live',
+  'dashboard.services.yarn.resourceManager':'ResourceManager',
+  'dashboard.services.yarn.nodeManagers':'NodeManagers',
+  'dashboard.services.yarn.yarnClients':'YARN Clients',
+  'dashboard.services.yarn.resourceManagerWebUI':'ResourceManager Web UI',
+  'dashboard.services.yarn.resourceManager.uptime':'ResourceManager Uptime',
+  'dashboard.services.resourceManager.nodes.heap':'ResourceManager Heap',
+  'dashboard.services.yarn.nodeManagers.live': 'NodeManagers Alive',
+  'dashboard.services.yarn.nodeManagers.live.msg':'{0} live / {1} total',
+  'dashboard.services.yarn.nodeManagers.status': 'NodeManagers Status',
+  'dashboard.services.yarn.nodeManagers.status.msg': '{0} active / {1} lost / {2} unhealthy / {3} rebooted / {4} decommissioned',
+  'dashboard.services.yarn.containers': 'Containers',
+  'dashboard.services.yarn.containers.msg': '{0} allocated / {1} pending / {2} reserved',
+  'dashboard.services.yarn.apps': 'Applications',
+  'dashboard.services.yarn.apps.msg': '{0} submitted / {1} running / {2} pending / {3} completed / {4} killed / {5} failed',
+
   'dashboard.services.mapreduce.summary':'{0} of {1} trackers live, {2} jobs running, {3} jobs waiting',
   'dashboard.services.mapreduce.taskTrackers':'TaskTrackers',
   'dashboard.services.mapreduce.taskTrackerCounts':'TaskTrackers Status',
@@ -1197,7 +1221,10 @@ Em.I18n.translations = {
 
   'apps.item.dag.job': 'Job',
   'apps.item.dag.jobId': 'Job Id',
+  'apps.item.dag.type': 'Job Type',
   'apps.item.dag.status': 'Status',
+  'apps.item.dag.num_stages': 'Total Stages',
+  'apps.item.dag.stages': 'Tasks per Stage',
   'apps.item.dag.maps': 'Maps',
   'apps.item.dag.reduces': 'Reduces',
   'apps.item.dag.input': 'Input',

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/models.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models.js b/ambari-web/app/models.js
index cae7aa1..c6ed392 100644
--- a/ambari-web/app/models.js
+++ b/ambari-web/app/models.js
@@ -29,7 +29,9 @@ require('models/service');
 require('models/service_config');
 require('models/service_audit');
 require('models/service/hdfs');
+require('models/service/yarn');
 require('models/service/mapreduce');
+require('models/service/mapreduce2');
 require('models/service/hbase');
 require('models/service/flume');
 require('models/alert');
@@ -46,4 +48,4 @@ require('models/dataset');
 require('models/dataset_job');
 require('classes/run_class');
 require('classes/job_class');
-require('classes/job_class');
+require('classes/app_class');

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/models/apps.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/apps.js b/ambari-web/app/models/apps.js
new file mode 100644
index 0000000..7c85c1b
--- /dev/null
+++ b/ambari-web/app/models/apps.js
@@ -0,0 +1,42 @@
+/**
+ * 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');
+var date = require('utils/date');
+var misc = require('utils/misc');
+
+App.App = DS.Model.extend({
+
+  run: DS.belongsTo('App.Run'),
+
+  appId: DS.attr('string'),
+  appName: DS.attr('string'),
+  appType: DS.attr('string'),
+  workflowEntityName: DS.attr('string'),
+  userName: DS.attr('string'),
+  queue: DS.attr('string'),
+  submitTime: DS.attr('number'),
+  launchTime: DS.attr('number'),
+  finishTime: DS.attr('number'),
+  numStages: DS.attr('number'),
+  stages: DS.attr('object'),
+  status: DS.attr('string'),
+});
+
+App.App.FIXTURES = [];

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/models/host_component.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/host_component.js b/ambari-web/app/models/host_component.js
index 98ded8a..279d5e1 100644
--- a/ambari-web/app/models/host_component.js
+++ b/ambari-web/app/models/host_component.js
@@ -56,6 +56,7 @@ App.HostComponent = DS.Model.extend({
       case 'HUE_SERVER':
       case 'HISTORYSERVER':
       case 'FLUME_SERVER':
+      case 'RESOURCEMANAGER':
         return true;
       default:
         return false;
@@ -67,6 +68,7 @@ App.HostComponent = DS.Model.extend({
       case 'TASKTRACKER':
       case 'HBASE_REGIONSERVER':
       case 'GANGLIA_MONITOR':
+      case 'NODEMANAGER':
         return true;
       default:
         return false;

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/models/job.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/job.js b/ambari-web/app/models/job.js
index e26ca84..8dd2662 100644
--- a/ambari-web/app/models/job.js
+++ b/ambari-web/app/models/job.js
@@ -33,28 +33,12 @@ App.Job = DS.Model.extend({
   maps: DS.attr('number'),
   reduces: DS.attr('number'),
   status: DS.attr('string'),
-  input: DS.attr('number'),
-  output: DS.attr('number'),
   elapsedTime: DS.attr('number'),
   duration: function () {
     return date.timingFormat(parseInt(this.get('elapsedTime')));
   }.property('elapsedTime'),
   jobTimeLine: DS.attr('string'),
-  jobTaskView: DS.attr('string'),
-  /**
-   *  Sum of input bandwidth for all jobs with appropriate measure
-   */
-  inputFormatted: function () {
-    var input = this.get('input');
-    return misc.formatBandwidth(input);
-  }.property('input'),
-  /**
-   *  Sum of output bandwidth for all jobs with appropriate measure
-   */
-  outputFormatted: function () {
-    var output = this.get('output');
-    return misc.formatBandwidth(output);
-  }.property('output')
+  jobTaskView: DS.attr('string')
 
 });
 

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/models/quick_links.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/quick_links.js b/ambari-web/app/models/quick_links.js
index 04b33da..4e2fdf4 100644
--- a/ambari-web/app/models/quick_links.js
+++ b/ambari-web/app/models/quick_links.js
@@ -156,5 +156,53 @@ App.QuickLinks.FIXTURES = [
     label:'Hue Web UI',
     url:'http://%@/hue',
     service_id: 'HUE'
+  },
+  {
+    id:23,
+    label:'ResourceManager UI',
+    url:'http://%@:8088',
+    service_id: 'YARN'
+  },
+  {
+    id:24,
+    label:'ResourceManager logs',
+    url:'http://%@:8088/logs',
+    service_id: 'YARN'
+  },
+  {
+    id:25,
+    label:'ResourceManager JMX',
+    url:'http://%@:8088/jmx',
+    service_id: 'YARN'
+  },
+  {
+    id:26,
+    label:'Thread Stacks',
+    url:'http://%@:8088/stacks',
+    service_id: 'YARN'
+  },
+  {
+    id:27,
+    label:'JobHistory UI',
+    url:'http://%@:19888',
+    service_id: 'MAPREDUCE2'
+  },
+  {
+    id:28,
+    label:'JobHistory logs',
+    url:'http://%@:19888/logs',
+    service_id: 'MAPREDUCE2'
+  },
+  {
+    id:29,
+    label:'JobHistory JMX',
+    url:'http://%@:19888/jmx',
+    service_id: 'MAPREDUCE2'
+  },
+  {
+    id:30,
+    label:'Thread Stacks',
+    url:'http://%@:19888/stacks',
+    service_id: 'MAPREDUCE2'
   }
 ];

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/models/run.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/run.js b/ambari-web/app/models/run.js
index 23cdda1..672bd0c 100644
--- a/ambari-web/app/models/run.js
+++ b/ambari-web/app/models/run.js
@@ -29,8 +29,7 @@ App.Run = DS.Model.extend({
   startTime:DS.attr('string'),
   elapsedTime:DS.attr('string'),
   workflowContext:DS.attr('string'),
-  input: DS.attr('number'),
-  output: DS.attr('number'),
+  tags: DS.attr('string'),
 
   loadAllJobs : false,
 
@@ -63,23 +62,6 @@ App.Run = DS.Model.extend({
   isRunning: function () {
     return !this.get('numJobsTotal') == this.get('numJobsCompleted');
   }.property('numJobsTotal', 'numJobsCompleted'),
-  /**
-   * Sum of input bandwidth for all jobs with appropriate measure
-   */
-  inputFormatted: function () {
-    var input = this.get('input');
-    input = misc.formatBandwidth(input);
-    return input;
-  }.property('input'),
-
-  /**
-   *  Sum of output bandwidth for all jobs with appropriate measure
-   */
-  outputFormatted: function () {
-    var output = this.get('output');
-    output = misc.formatBandwidth(output);
-    return output;
-  }.property('output'),
 
   /**
    *
@@ -106,7 +88,7 @@ App.Run = DS.Model.extend({
     if (this.get('id').indexOf('hive_') === 0) {
       return 'Hive';
     }
-    if (this.get('id').indexOf('mr_') === 0) {
+    if (this.get('id').indexOf('mr_') === 0 || this.get('id').indexOf('mapreduce_') === 0) {
       return 'MapReduce';
     }
   }.property('id')

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/models/service/mapreduce2.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/service/mapreduce2.js b/ambari-web/app/models/service/mapreduce2.js
new file mode 100644
index 0000000..4f5dc04
--- /dev/null
+++ b/ambari-web/app/models/service/mapreduce2.js
@@ -0,0 +1,26 @@
+/**
+ * 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.MapReduce2Service = App.Service.extend({
+  version: DS.attr('string'),
+  jobHistoryServer: DS.belongsTo('App.Host'),
+  mapReduce2Clients: DS.hasMany('App.Host'),
+});
+
+App.MapReduce2Service.FIXTURES = [];

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/models/service/yarn.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/service/yarn.js b/ambari-web/app/models/service/yarn.js
new file mode 100644
index 0000000..3635967
--- /dev/null
+++ b/ambari-web/app/models/service/yarn.js
@@ -0,0 +1,45 @@
+/**
+ * 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.YARNService = App.Service.extend({
+  version: DS.attr('string'),
+  resourceManagerNode: DS.belongsTo('App.Host'),
+  nodeManagerNodes: DS.hasMany('App.Host'),
+  nodeManagerLiveNodes: DS.hasMany('App.Host'),
+  nodeManagersCountActive: DS.attr('number'),
+  nodeManagersCountLost: DS.attr('number'),
+  nodeManagersCountUnhealthy: DS.attr('number'),
+  nodeManagersCountRebooted: DS.attr('number'),
+  nodeManagersCountDecommissioned: DS.attr('number'),
+  containersAllocated: DS.attr('number'),
+  containersPending: DS.attr('number'),
+  containersReserved: DS.attr('number'),
+  appsSubmitted: DS.attr('number'),
+  appsRunning: DS.attr('number'),
+  appsPending: DS.attr('number'),
+  appsCompleted: DS.attr('number'),
+  appsKilled: DS.attr('number'),
+  appsFailed: DS.attr('number'),
+  yarnClientNodes: DS.hasMany('App.Host'),
+  resourceManagerStartTime: DS.attr('number'),
+  jvmMemoryHeapUsed: DS.attr('number'),
+  jvmMemoryHeapCommitted: DS.attr('number'),
+});
+
+App.YARNService.FIXTURES = [];

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/routes/main.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/routes/main.js b/ambari-web/app/routes/main.js
index 426cbcc..af0ae59 100644
--- a/ambari-web/app/routes/main.js
+++ b/ambari-web/app/routes/main.js
@@ -99,15 +99,7 @@ module.exports = Em.Route.extend({
   apps: Em.Route.extend({
     route: '/apps',
     connectOutlets: function (router) {
-      if (stringUtils.compareVersions(App.get('currentStackVersionNumber'), "2.0") === 1 ||
-        stringUtils.compareVersions(App.get('currentStackVersionNumber'), "2.0") === 0) {
-        Em.run.next(function () {
-          router.transitionTo('main.dashboard');
-        });
-      } else {
-        router.get('mainAppsController').loadRuns();
-        router.get('mainController').connectOutlet('mainApps');
-      }
+      router.get('mainController').connectOutlet('mainApps');
     }
   }),
 
@@ -918,4 +910,4 @@ module.exports = Em.Route.extend({
     router.get('mainHostController').filterByComponent(component.context);
     router.transitionTo('hosts.index');
   }
-});
\ No newline at end of file
+});

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/routes/reassign_master_routes.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/routes/reassign_master_routes.js b/ambari-web/app/routes/reassign_master_routes.js
index 821f563..8427b32 100644
--- a/ambari-web/app/routes/reassign_master_routes.js
+++ b/ambari-web/app/routes/reassign_master_routes.js
@@ -54,6 +54,8 @@ module.exports = Em.Route.extend({
         if (currentClusterStatus && currentClusterStatus.clusterState == 'REASSIGN_MASTER_INSTALLING') {
           reassignMasterController.setCurrentStep('5');
           App.db.data = currentClusterStatus.localdb;
+        } else {
+          reassignMasterController.setCurrentStep('1');
         }
         router.transitionTo('step' + reassignMasterController.get('currentStep'));
       });

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/styles/application.less
----------------------------------------------------------------------
diff --git a/ambari-web/app/styles/application.less b/ambari-web/app/styles/application.less
index fdb3aba..9d09d86 100644
--- a/ambari-web/app/styles/application.less
+++ b/ambari-web/app/styles/application.less
@@ -630,8 +630,8 @@ h1 {
     }
     form.form-horizontal {
       margin-left: 20px;
-      .control-label {
-        text-align: left;
+      .control-label-span {
+        word-wrap: break-word;
       }
     }
     table tr, svg {

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/styles/apps.less
----------------------------------------------------------------------
diff --git a/ambari-web/app/styles/apps.less b/ambari-web/app/styles/apps.less
index 3cdd6f9..10398bd 100644
--- a/ambari-web/app/styles/apps.less
+++ b/ambari-web/app/styles/apps.less
@@ -60,7 +60,7 @@
     }
 
     input, select{
-      width: 76%;
+      width: 75%;
     }
 
     .no-data{
@@ -68,7 +68,7 @@
     }
 
     input.input-super-mini{
-      width: 47px;
+      width: 46px;
       max-width: 57%;
     }
 
@@ -78,22 +78,22 @@
     .col0,
     td:first-child,
     th:first-child {
-      width: 16%;
+      width: 14%;
     }
     .col1,
     td:first-child + td + td,
     th:first-child + th + th{
-      width: 15%;
+      width: 14%;
     }
     .col2,
     td:first-child + td + td + td,
     th:first-child + th + th + th{
-      width: 11%;
+      width: 9%;
     }
     .col3,
     td:first-child + td + td + td + td,
     th:first-child + th + th + th + th{
-      width: 11%;
+      width: 8%;
     }
     .col4,.col5,.col6,.col7,
     td:first-child + td + td + td + td + td,
@@ -105,12 +105,17 @@
     td:first-child + td + td + td + td + td + td + td + td,
     th:first-child + th + th + th + th + th + th + th + th
     {
-      width: 9%;
+      width: 8%;
     }
     .col8,
     td:first-child + td + td + td + td + td + td + td + td + td,
     th:first-child + th + th + th + th + th + th + th + th + th{
-      width: 13%;
+      width: 8%;
+    }
+    .col9,
+    td:first-child + td + td + td + td + td + td + td + td + td + td,
+    th:first-child + th + th + th + th + th + th + th + th + th + th{
+      width: 9%;
     }
   }
 
@@ -466,58 +471,6 @@
       visibility: hidden;
     }
   }
-  #dag_viewer_legend {
-    border: 1px solid #DDDDDD;
-    padding: 10px;
-    padding-left: 20px;
-    float: left;
-    ul {
-      list-style: none;
-      padding: 0;
-      margin: 0;
-    }
-    li {
-      display: block;
-      width: 25%;
-      float: left;
-    }
-    span {
-      width: 15px;
-      height: 15px;
-      display: block;
-      float: left;
-      margin-right: 5px;
-    }
-    #job {
-      border: 1px solid #333;
-      background: #ccc;
-    }
-    #jobdone {
-      border: 1px solid #333;
-      background: rgba(0,128,0,0.8);
-    }
-    #allmap {
-      border: 2px solid #007000;
-    }
-    #map {
-      border: 2px solid #007000;
-      background: rgba(0,128,0,0.8);
-    }
-    #allshuffle {
-      border: 2px solid #97BDC9;
-    }
-    #shuffle {
-      border: 2px solid #97BDC9;
-      background: rgba(173,216,230,0.8);
-    }
-    #allreduce {
-      border: 2px solid #3D729E;
-    }
-    #reduce {
-      border: 2px solid #3D729E;
-      background: rgba(70,130,180,0.8);
-    }
-  }
 }
 
 
@@ -534,3 +487,147 @@
 }
 
 /*Big modal window end*/
+
+/*
+ * D3  visualization components 
+ * Styles for App Graph
+ */
+.wfdag {
+  width: 100%;
+}
+
+#app_graph .axis path,
+#app_graph .axis line {
+  fill: none;
+  stroke: #000;
+  shape-rendering: crispEdges;
+}
+
+#app_graph line.link,
+#app_graph path.link {
+  fill: none;
+  stroke: #666;
+  stroke-width: 2.5px;
+}
+
+#app_graph line.link.finished,
+#app_graph path.link.finished {
+  stroke: #444;
+}
+
+#app_graph path.link.stage {
+  stroke: #fff;
+}
+
+#app_graph marker#finished {
+  fill: #444;
+}
+
+#app_graph marker#circle {
+  fill: #666;
+  stroke: none;
+}
+
+#app_graph marker#stage {
+  fill: #fff;
+}
+
+#app_graph line.source.mark,
+#app_graph line.target.mark {
+  stroke: #666;
+  stroke-width: 2.5px;
+}
+
+#app_graph rect {
+  fill: #ccc;
+  stroke: #333;
+  stroke-width: 1px;
+}
+
+#app_graph rect.finished {
+  fill: green;
+  fill-opacity: 0.8;
+}
+
+#app_graph text.joblabel {
+  pointer-events: none;
+  text-anchor: middle;
+}
+
+#app_graph text.axislabel {
+  pointer-events: none;
+  text-anchor: end;
+  font-size: 11px;
+  font-weight: bold;
+}
+
+#app_graph text.shadow {
+  stroke: #fff;
+  stroke-width: 3px;
+  stroke-opacity: .8;
+}
+#app_graph .y.axis {
+  font-size: 10px;
+}
+
+#app_graph circle.stage,
+#app_graph rect.stage,
+#app_graph_legend circle.stage {
+  fill: lightblue;
+  stroke: black;
+}
+
+#app_graph text.stagelabel {
+  stroke: black;
+  pointer-events: none;
+  text-anchor: middle;
+  dominant-baseline: central;
+  font-weight: bold;
+}
+
+#app_graph_legend {
+  border: 1px solid #DDDDDD;
+  padding: 10px;
+  padding-left: 20px;
+  margin: 0 auto;
+  width: 50%;
+  height: 40px;
+  ul {
+    list-style: none;
+    padding: 0;
+    margin: 0;
+  }
+  li {
+    display: block;
+    width: 50%;
+    float: left;
+  }
+  span {
+    width: 15px;
+    height: 15px;
+    display: block;
+    float: left;
+    margin-right: 5px;
+  }
+  span.stage {
+    margin-right: 8px;
+  }
+  .job {
+    border: 1px solid #333;
+    background: #ccc;
+  }
+  .jobdone {
+    border: 1px solid #333;
+    background: rgba(0,128,0,0.8);
+  }
+  .map {
+    border: 1px solid black;
+    background: lightblue;
+  }
+  .reduce {
+    stroke: white;
+    fill: white;
+  }
+}
+
+/* App Graph end */

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/templates/common/configs/capacity_scheduler.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/common/configs/capacity_scheduler.hbs b/ambari-web/app/templates/common/configs/capacity_scheduler.hbs
index ccee91f..eedffa1 100644
--- a/ambari-web/app/templates/common/configs/capacity_scheduler.hbs
+++ b/ambari-web/app/templates/common/configs/capacity_scheduler.hbs
@@ -35,14 +35,9 @@
             <table class="table table-bordered table-striped">
                 <thead>
                 <tr>
-                    <th>{{t services.mapReduce.config.queue.name}}</th>
-                    <th>{{t common.users}}</th>
-                    <th>{{t services.mapReduce.config.queue.groups}}</th>
-                    <th>{{t services.mapReduce.config.queue.capacity}}</th>
-                    <th>{{t services.mapReduce.config.queue.maxCapacity}}</th>
-                    <th>{{t services.mapReduce.config.queue.minUserLimit}}</th>
-                    <th>{{t services.mapReduce.config.queue.userLimitFactor}}</th>
-                    <th>{{t services.mapReduce.config.queue.supportsPriority}}</th>
+                    {{#each header in view.tableHeaders}}
+                      <th>{{header}}</th>
+                    {{/each}}
                 </tr>
                 </thead>
                 <tbody>
@@ -51,13 +46,9 @@
                       <td><a href="javascript:void(0)">
                           <i {{bindAttr style="queue.color"}} class="marker"></i>{{queue.name}}</a>
                       </td>
-                      <td>{{queue.users}}</td>
-                      <td>{{queue.groups}}</td>
-                      <td>{{queue.capacity}}&#37;</td>
-                      <td>{{queue.maxCapacity}}&#37;</td>
-                      <td>{{queue.minUserLimit}}&#37;</td>
-                      <td>{{queue.userLimitFactor}}</td>
-                      <td>{{queue.supportsPriority}}</td>
+                      {{#each config in queue.configs}}
+                        <td>{{config.value}}</td>
+                      {{/each}}
                   </tr>
                   {{/each}}
                 </tbody>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/templates/main/apps.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/apps.hbs b/ambari-web/app/templates/main/apps.hbs
index 25aa2cb..62c2d9b 100644
--- a/ambari-web/app/templates/main/apps.hbs
+++ b/ambari-web/app/templates/main/apps.hbs
@@ -22,8 +22,6 @@
     <tr>
       <td></td>
       <td>{{t apps.avgTable.jobs}}</td>
-      <td>{{t apps.avgTable.input}}</td>
-      <td>{{t apps.avgTable.output}}</td>
       <td>{{t apps.avgTable.duration}}</td>
       <td>{{t apps.avgTable.oldest}}</td>
       <td>{{t apps.avgTable.mostRecent}}</td>
@@ -31,8 +29,6 @@
     <tr class="avg-info">
       <td>{{t apps.avgTable.avg}}</td>
       <td>{{summary.jobs.avg}}</td>
-      <td>{{summary.input.avg}}</td>
-      <td>{{summary.output.avg}}</td>
       <td>{{summary.duration.avg}}</td>
       <td>{{summary.times.oldest}}</td>
       <td>{{summary.times.youngest}}</td>
@@ -41,8 +37,6 @@
     <tr class="compare-info">
       <td>{{t apps.avgTable.min}} / {{t apps.avgTable.max}}</td>
       <td>{{summary.jobs.min}} / {{summary.jobs.max}}</td>
-      <td>{{summary.input.min}} / {{summary.input.max}}</td>
-      <td>{{summary.output.min}} / {{summary.output.max}}</td>
       <td>{{summary.duration.min}} / {{summary.duration.max}}</td>
       <td></td>
       <td></td>
@@ -80,9 +74,8 @@
       <th>{{view view.nameFilterView}}</th>
       <th>{{view view.typeFilterView}}</th>
       <th>{{view view.userFilterView}}</th>
+      <th>{{view view.tagFilterView}}</th>
       <th>{{view view.jobsFilterView}}</th>
-      <th>{{view view.inputFilterView}}</th>
-      <th>{{view view.outputFilterView}}</th>
       <th>{{view view.durationFilterView}}</th>
       <th>{{view view.runDateFilterView}}</th>
     </tr>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/templates/main/apps/item/app.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/apps/item/app.hbs b/ambari-web/app/templates/main/apps/item/app.hbs
new file mode 100644
index 0000000..d451bbd
--- /dev/null
+++ b/ambari-web/app/templates/main/apps/item/app.hbs
@@ -0,0 +1,64 @@
+{{!
+* 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 id="app_graph"></div>
+
+    <div id="app_graph_legend">
+      <ul>
+        <li><span class="job"></span>Unfinished Job</li>
+        <li><span class="map"></span>Map Stage with Task Count</li>
+        <li><span class="jobdone"></span>Finished Job</li>
+        <li><span>
+          <svg width="18" height="18">
+            <rect class="reduce" x="0" y="0" width="18" height="18"/>
+            <circle class="stage" r="8" cx="9" cy="9"/>
+          </svg></span>Reduce Stage with Task Count</li>
+      </ul>
+    </div>
+
+    <table class="table table-bordered table-striped" id="innerTable">
+      <thead>
+      <tr>
+        {{#view view.sortView contentBinding="controller.content.jobs"}}
+          {{#if view.parentView.hasManyJobs}}{{view view.parentView.nameSort}}{{/if}}
+          {{view view.parentView.idSort}}
+          {{view view.parentView.typeSort}}
+          {{view view.parentView.statusSort}}
+          {{view view.parentView.numStagesSort}}
+          {{view view.parentView.stagesSort}}
+          {{view view.parentView.durationSort}}
+        {{/view}}
+      </tr>
+      </thead>
+      <tbody>
+      {{#if view.loaded}}
+        {{#each job in view.jobs}}
+        <tr>
+          {{#if view.hasManyJobs}}<td>{{job.entityName}}</td>{{/if}}
+          <td>{{job.name}}</td>
+          <td>{{job.type}}</td>
+          <td>{{job.status}}</td>
+          <td>{{job.numStages}}</td>
+          <td>{{job.stages}}</td>
+          <td>{{job.elapsedTime}}</td>
+        </tr>
+        {{/each}}
+      {{/if}}
+      </tbody>
+    </table>
+
+

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/templates/main/apps/item/dag.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/apps/item/dag.hbs b/ambari-web/app/templates/main/apps/item/dag.hbs
index 457d566..f9806cb 100644
--- a/ambari-web/app/templates/main/apps/item/dag.hbs
+++ b/ambari-web/app/templates/main/apps/item/dag.hbs
@@ -17,19 +17,6 @@
 }}
     <div id="dag_viewer"></div>
 
-    <div id="dag_viewer_legend">
-      <ul>
-        <li><span id="job"></span>Unfinished Job</li>
-        <li><span id="allmap"></span>All Maps on Cluster</li>
-        <li><span id="allshuffle"></span>All Shuffles on Cluster</li>
-        <li><span id="allreduce"></span>All Reduces on Cluster</li>
-        <li><span id="jobdone"></span>Finished Job</li>
-        <li><span id="map"></span>Maps for this App</li>
-        <li><span id="shuffle"></span>Shuffles for this App</li>
-        <li><span id="reduce"></span>Reduces for this App</li>
-      </ul>
-    </div>
-
     <table class="table table-bordered table-striped" id="innerTable">
       <thead>
       <tr>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/templates/main/apps/list_row.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/apps/list_row.hbs b/ambari-web/app/templates/main/apps/list_row.hbs
index a926248..8c88c50 100644
--- a/ambari-web/app/templates/main/apps/list_row.hbs
+++ b/ambari-web/app/templates/main/apps/list_row.hbs
@@ -20,9 +20,8 @@
 <td>{{unbound run.appName}}</td>
 <td>{{unbound run.type}}</td>
 <td>{{unbound run.userName}}</td>
+<td>{{unbound run.tags}}</td>
 <td>{{unbound run.numJobsTotal}}</td>
-<td>{{unbound run.inputFormatted}}</td>
-<td>{{unbound run.outputFormatted}}</td>
 <td>{{unbound run.duration}}</td>
 {{#if run.isRunning}}
 <td rel="popover" {{translateAttr title="apps.isRunning.popup.title" data-content="apps.isRunning.popup.content"}}>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/templates/main/dashboard/service/mapreduce2.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/dashboard/service/mapreduce2.hbs b/ambari-web/app/templates/main/dashboard/service/mapreduce2.hbs
index 4e8ce49..43c1abc 100644
--- a/ambari-web/app/templates/main/dashboard/service/mapreduce2.hbs
+++ b/ambari-web/app/templates/main/dashboard/service/mapreduce2.hbs
@@ -16,6 +16,7 @@
 * limitations under the License.
 }}
 
+
 <div class="clearfix">
   <div class="name span2">
     <i class="pull-left icon-empty"></i>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/templates/main/dashboard/service/yarn.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/dashboard/service/yarn.hbs b/ambari-web/app/templates/main/dashboard/service/yarn.hbs
new file mode 100644
index 0000000..79d4d0c
--- /dev/null
+++ b/ambari-web/app/templates/main/dashboard/service/yarn.hbs
@@ -0,0 +1,122 @@
+{{!
+* 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.
+}}
+
+{{#unless view.showOnlyRows}}
+<div class="clearfix like_pointer" {{action toggleInfoView target="view"}}>
+  <div class="name span2">
+    {{#if view.isCollapsed}}
+    <i class="icon-caret-down pull-left"></i>
+    {{else}}
+    <i class="icon-caret-right pull-left"></i>
+    {{/if}}
+    {{view App.MainDashboardServiceHealthView serviceBinding="view.service"}}
+    <a {{action selectService view.service href=true}}>{{view.service.displayName}}</a>
+    {{#if view.criticalAlertsCount}}
+      <a href="#" class="label label-important" {{action "showAlertsPopup" view.service target="view.parentView"}}>
+        {{view.criticalAlertsCount}}
+      </a>
+    {{/if}}
+  </div>
+  <div class="summary span">
+    {{view.summaryHeader}}
+  </div>
+</div>
+<div class="service-body">
+  <div class="span4">
+    <table class="table no-borders">
+      <tbody>
+    {{/unless}}
+
+      <!-- Resource Manager -->
+      <tr>
+        <td>{{t dashboard.services.yarn.resourceManager}}</td>
+        <td><a href="#" {{action showDetails view.service.resourceManagerNode}}>{{view.service.resourceManagerNode.publicHostName}}</a></td>
+      </tr>
+      <!-- Node Managers -->
+      <tr>
+        <td>{{t dashboard.services.yarn.nodeManagers}}</td>
+        <td>
+          <a href="#" {{action filterHosts view.nodeManagerComponent}}>{{view.service.nodeManagerNodes.length}} {{t dashboard.services.yarn.nodeManagers}}</a>
+        </td>
+      </tr>
+      <!-- YARN Clients -->
+      <tr>
+        <td>{{t dashboard.services.yarn.yarnClients}}</td>
+        <td>
+          <a href="#" {{action filterHosts view.yarnClientComponent}}>{{view.service.yarnClientNodes.length}} {{t dashboard.services.yarn.yarnClients}}</a>
+        </td>
+      </tr>
+      <!-- Resource Manager Web UI -->
+      <tr>
+        <td>{{t dashboard.services.yarn.resourceManagerWebUI}}</td>
+        <td><a {{bindAttr href="view.nodeWebUrl"}} target="_blank">{{view.service.resourceManagerNode.publicHostName}}:8088</a>
+        </td>
+      </tr>
+      <!-- Resource Manager Uptime -->
+      <tr>
+        <td>{{t dashboard.services.yarn.resourceManager.uptime}}</td>
+        <td>{{view.nodeUptime}}</td>
+      </tr>
+      <!-- Resource Manager Heap -->
+      <tr>
+        <td>{{t dashboard.services.resourceManager.nodes.heap}}</td>
+        <td>{{view.nodeHeap}}</td>
+      </tr>
+      <!-- NodeManagers live -->
+      <tr>
+        <td>{{t dashboard.services.yarn.nodeManagers.live}}</td>
+        <td>{{view.nodeManagersLive}}</td>
+      </tr>
+      <!-- NodeManagers status -->
+      <tr>
+        <td>{{t dashboard.services.yarn.nodeManagers.status}}</td>
+        <td>{{view.nodeManagersStatus}}</td>
+      </tr>
+      <!-- Containers -->
+      <tr>
+        <td>{{t dashboard.services.yarn.containers}}</td>
+        <td>{{view.containers}}</td>
+      </tr>
+      <!-- Applications -->
+      <tr>
+        <td>{{t dashboard.services.yarn.apps}}</td>
+        <td>{{view.apps}}</td>
+      </tr>
+    {{#unless view.showOnlyRows}}
+      </tbody>
+    </table>
+    <div class="dashboard-mini-chart span2">
+      {{#if view.service.quickLinks.length}}
+      {{#view App.QuickViewLinks contentBinding="view.service"}}
+        <div class="btn-group">
+          <a class="btn btn-mini dropdown-toggle" data-toggle="dropdown" href="#">
+            {{t common.quickLinks}}
+            <span class="caret"></span>
+          </a>
+          <ul class="dropdown-menu">
+            {{#each view.quickLinks}}
+              <li><a {{bindAttr href="url"}} target="_blank">{{label}}</a></li>
+            {{/each}}
+          </ul>
+        </div>
+      {{/view}}
+      {{/if}}
+    </div>
+</div>
+</div>
+{{/unless}}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/templates/main/service/info/summary.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/service/info/summary.hbs b/ambari-web/app/templates/main/service/info/summary.hbs
index 7f325e7..7abf983 100644
--- a/ambari-web/app/templates/main/service/info/summary.hbs
+++ b/ambari-web/app/templates/main/service/info/summary.hbs
@@ -64,6 +64,9 @@
         {{#if view.serviceStatus.mapreduce}}
           {{view App.MainDashboardServiceMapreduceView showOnlyRows=true serviceBinding="view.service"}}
         {{/if}}
+        {{#if view.serviceStatus.yarn}}
+          {{view App.MainDashboardServiceYARNView showOnlyRows=true serviceBinding="view.service"}}
+        {{/if}}
         {{#if view.serviceStatus.mapreduce2}}
           {{template "templates/main/service/info/summary/mapreduce2"}}
         {{/if}}

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/templates/main/service/info/summary/mapreduce2.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/service/info/summary/mapreduce2.hbs b/ambari-web/app/templates/main/service/info/summary/mapreduce2.hbs
index b5a42de..d8f6dd2 100644
--- a/ambari-web/app/templates/main/service/info/summary/mapreduce2.hbs
+++ b/ambari-web/app/templates/main/service/info/summary/mapreduce2.hbs
@@ -23,6 +23,12 @@
   <td>
       <a {{action selectHost component.host}} href="javascript:void(null)">{{component.host.publicHostName}}</a>
   </td>
+  <tr>
+    <td class="summary-label">{{t services.service.summary.historyServer}}</td>
+    <td>
+        <a {{bindAttr href="view.historyServerUI"}} target="_blank">{{component.host.publicHostName}}:19888</a>
+    </td>
+  </tr>
 </tr>
   {{/if}}
 {{/each}}

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/templates/main/service/item.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/service/item.hbs b/ambari-web/app/templates/main/service/item.hbs
index 5358478..c537afc 100644
--- a/ambari-web/app/templates/main/service/item.hbs
+++ b/ambari-web/app/templates/main/service/item.hbs
@@ -52,4 +52,4 @@
   </span>
 </div>
 {{/if}}
-{{outlet}}
\ No newline at end of file
+{{outlet}}

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/templates/wizard/step13.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/wizard/step13.hbs b/ambari-web/app/templates/wizard/step13.hbs
index 4a731fe..d25df19 100644
--- a/ambari-web/app/templates/wizard/step13.hbs
+++ b/ambari-web/app/templates/wizard/step13.hbs
@@ -39,8 +39,8 @@
       <ul><em> <b>{{item.name}}</b></em>
 
         <div>
-          <ul>{{t installer.step13.oldValue}}: &nbsp;<span class="text text-info">{{item.oldValue}}</span></ul>
-          <ul>{{t installer.step13.newValue}}: <span class="text text-info">{{item.value}}</span></ul>
+          <ul>Old value: &nbsp;<span class="text text-info">{{item.oldValue}} {{#if item.unit}}{{item.unit}}{{/if}}</span></ul>
+          <ul>New value: <span class="text text-info">{{item.value}} {{#if item.unit}}{{item.unit}}{{/if}}</span></ul>
         </div>
 
       </ul>


[04/14] AMBARI-2677. Merge from branch-1.4.0 (ncole)

Posted by nc...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/OOZIE/configuration/oozie-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/OOZIE/configuration/oozie-site.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/OOZIE/configuration/oozie-site.xml
new file mode 100644
index 0000000..1665ba8
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/OOZIE/configuration/oozie-site.xml
@@ -0,0 +1,245 @@
+<?xml version="1.0"?>
+<!--
+  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.
+-->     
+
+<configuration>
+
+<!--
+    Refer to the oozie-default.xml file for the complete list of
+    Oozie configuration properties and their default values.
+-->
+  <property>
+    <name>oozie.base.url</name>
+    <value>http://localhost:11000/oozie</value>
+    <description>Base Oozie URL.</description>
+   </property>
+
+  <property>
+    <name>oozie.system.id</name>
+    <value>oozie-${user.name}</value>
+    <description>
+    The Oozie system ID.
+    </description>
+   </property>
+
+   <property>
+     <name>oozie.systemmode</name>
+     <value>NORMAL</value>
+     <description>
+     System mode for  Oozie at startup.
+     </description>
+   </property>
+
+   <property>
+     <name>oozie.service.AuthorizationService.security.enabled</name>
+     <value>true</value>
+     <description>
+     Specifies whether security (user name/admin role) is enabled or not.
+     If disabled any user can manage Oozie system and manage any job.
+     </description>
+   </property>
+
+   <property>
+     <name>oozie.service.PurgeService.older.than</name>
+     <value>30</value>
+     <description>
+     Jobs older than this value, in days, will be purged by the PurgeService.
+     </description>
+   </property>
+
+   <property>
+     <name>oozie.service.PurgeService.purge.interval</name>
+     <value>3600</value>
+     <description>
+     Interval at which the purge service will run, in seconds.
+     </description>
+   </property>
+
+   <property>
+     <name>oozie.service.CallableQueueService.queue.size</name>
+     <value>1000</value>
+     <description>Max callable queue size</description>
+   </property>
+
+   <property>
+     <name>oozie.service.CallableQueueService.threads</name>
+     <value>10</value>
+     <description>Number of threads used for executing callables</description>
+   </property>
+
+   <property>
+     <name>oozie.service.CallableQueueService.callable.concurrency</name>
+     <value>3</value>
+     <description>
+     Maximum concurrency for a given callable type.
+     Each command is a callable type (submit, start, run, signal, job, jobs, suspend,resume, etc).
+     Each action type is a callable type (Map-Reduce, Pig, SSH, FS, sub-workflow, etc).
+     All commands that use action executors (action-start, action-end, action-kill and action-check) use
+     the action type as the callable type.
+     </description>
+   </property>
+
+   <property>
+     <name>oozie.service.coord.normal.default.timeout</name>
+     <value>120</value>
+     <description>Default timeout for a coordinator action input check (in minutes) for normal job.
+      -1 means infinite timeout</description>
+   </property>
+
+   <property>
+     <name>oozie.db.schema.name</name>
+     <value>oozie</value>
+     <description>
+      Oozie DataBase Name
+     </description>
+   </property>
+
+    <property>
+      <name>oozie.service.HadoopAccessorService.jobTracker.whitelist</name>
+      <value> </value>
+      <description>
+      Whitelisted job tracker for Oozie service.
+      </description>
+    </property>
+   
+    <property>
+      <name>oozie.authentication.type</name>
+      <value>simple</value>
+      <description>
+      </description>
+    </property>
+   
+    <property>
+      <name>oozie.service.HadoopAccessorService.nameNode.whitelist</name>
+      <value> </value>
+      <description>
+      </description>
+    </property>
+
+    <property>
+      <name>oozie.service.WorkflowAppService.system.libpath</name>
+      <value>/user/${user.name}/share/lib</value>
+      <description>
+      System library path to use for workflow applications.
+      This path is added to workflow application if their job properties sets
+      the property 'oozie.use.system.libpath' to true.
+      </description>
+    </property>
+
+    <property>
+      <name>use.system.libpath.for.mapreduce.and.pig.jobs</name>
+      <value>false</value>
+      <description>
+      If set to true, submissions of MapReduce and Pig jobs will include
+      automatically the system library path, thus not requiring users to
+      specify where the Pig JAR files are. Instead, the ones from the system
+      library path are used.
+      </description>
+    </property>
+    <property>
+      <name>oozie.authentication.kerberos.name.rules</name>
+      <value>
+        RULE:[2:$1@$0]([jt]t@.*TODO-KERBEROS-DOMAIN)s/.*/TODO-MAPREDUSER/
+        RULE:[2:$1@$0]([nd]n@.*TODO-KERBEROS-DOMAIN)s/.*/TODO-HDFSUSER/
+        RULE:[2:$1@$0](hm@.*TODO-KERBEROS-DOMAIN)s/.*/TODO-HBASE-USER/
+        RULE:[2:$1@$0](rs@.*TODO-KERBEROS-DOMAIN)s/.*/TODO-HBASE-USER/
+        DEFAULT
+        </value>
+      <description>The mapping from kerberos principal names to local OS user names.</description>
+    </property>
+    <property>
+      <name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
+      <value>*=/etc/hadoop/conf</value>
+      <description>
+          Comma separated AUTHORITY=HADOOP_CONF_DIR, where AUTHORITY is the HOST:PORT of
+          the Hadoop service (JobTracker, HDFS). The wildcard '*' configuration is
+          used when there is no exact match for an authority. The HADOOP_CONF_DIR contains
+          the relevant Hadoop *-site.xml files. If the path is relative is looked within
+          the Oozie configuration directory; though the path can be absolute (i.e. to point
+          to Hadoop client conf/ directories in the local filesystem.
+      </description>
+    </property>
+    <property>
+        <name>oozie.service.ActionService.executor.ext.classes</name>
+        <value>
+            org.apache.oozie.action.email.EmailActionExecutor,
+            org.apache.oozie.action.hadoop.HiveActionExecutor,
+            org.apache.oozie.action.hadoop.ShellActionExecutor,
+            org.apache.oozie.action.hadoop.SqoopActionExecutor,
+            org.apache.oozie.action.hadoop.DistcpActionExecutor
+        </value>
+    </property>
+
+    <property>
+        <name>oozie.service.SchemaService.wf.ext.schemas</name>
+        <value>shell-action-0.1.xsd,email-action-0.1.xsd,hive-action-0.2.xsd,sqoop-action-0.2.xsd,ssh-action-0.1.xsd,distcp-action-0.1.xsd</value>
+    </property>
+    <property>
+        <name>oozie.service.JPAService.create.db.schema</name>
+        <value>false</value>
+        <description>
+            Creates Oozie DB.
+
+            If set to true, it creates the DB schema if it does not exist. If the DB schema exists is a NOP.
+            If set to false, it does not create the DB schema. If the DB schema does not exist it fails start up.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.JPAService.jdbc.driver</name>
+        <value>org.apache.derby.jdbc.EmbeddedDriver</value>
+        <description>
+            JDBC driver class.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.JPAService.jdbc.url</name>
+        <value>jdbc:derby:${oozie.data.dir}/${oozie.db.schema.name}-db;create=true</value>
+        <description>
+            JDBC URL.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.JPAService.jdbc.username</name>
+        <value>sa</value>
+        <description>
+            DB user name.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.JPAService.jdbc.password</name>
+        <value> </value>
+        <description>
+            DB user password.
+
+            IMPORTANT: if password is emtpy leave a 1 space string, the service trims the value,
+                       if empty Configuration assumes it is NULL.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.JPAService.pool.max.active.conn</name>
+        <value>10</value>
+        <description>
+             Max number of connections.
+        </description>
+    </property>
+</configuration>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/OOZIE/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/OOZIE/metainfo.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/OOZIE/metainfo.xml
new file mode 100644
index 0000000..a65b547
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/OOZIE/metainfo.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <user>root</user>
+    <comment>System for workflow coordination and execution of Apache Hadoop jobs</comment>
+    <version>3.3.1</version>
+
+    <components>
+        <component>
+            <name>OOZIE_SERVER</name>
+            <category>MASTER</category>
+        </component>
+
+        <component>
+            <name>OOZIE_CLIENT</name>
+            <category>CLIENT</category>
+        </component>
+    </components>
+
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/PIG/configuration/pig.properties
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/PIG/configuration/pig.properties b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/PIG/configuration/pig.properties
new file mode 100644
index 0000000..01000b5
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/PIG/configuration/pig.properties
@@ -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.
+
+# Pig default configuration file. All values can be overwritten by pig.properties and command line arguments.
+# see bin/pig -help
+
+# brief logging (no timestamps)
+brief=false
+
+#debug level, INFO is default
+debug=INFO
+
+#verbose print all log messages to screen (default to print only INFO and above to screen)
+verbose=false
+
+#exectype local|mapreduce, mapreduce is default
+exectype=mapreduce
+
+#Enable insertion of information about script into hadoop job conf 
+pig.script.info.enabled=true
+
+#Do not spill temp files smaller than this size (bytes)
+pig.spill.size.threshold=5000000
+#EXPERIMENT: Activate garbage collection when spilling a file bigger than this size (bytes)
+#This should help reduce the number of files being spilled.
+pig.spill.gc.activation.size=40000000
+
+#the following two parameters are to help estimate the reducer number
+pig.exec.reducers.bytes.per.reducer=1000000000
+pig.exec.reducers.max=999
+
+#Temporary location to store the intermediate data.
+pig.temp.dir=/tmp/
+
+#Threshold for merging FRJoin fragment files
+pig.files.concatenation.threshold=100
+pig.optimistic.files.concatenation=false;
+
+pig.disable.counter=false

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/PIG/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/PIG/metainfo.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/PIG/metainfo.xml
new file mode 100644
index 0000000..731d7b0
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/PIG/metainfo.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <user>root</user>
+    <comment>Scripting platform for analyzing large datasets</comment>
+    <version>0.10.1.22-1</version>
+
+    <components>
+        <component>
+            <name>PIG</name>
+            <category>CLIENT</category>
+        </component>
+    </components>
+
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/TEZ/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/TEZ/metainfo.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/TEZ/metainfo.xml
new file mode 100644
index 0000000..30aa43e
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/TEZ/metainfo.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <user>root</user>
+    <comment>Tez is the next generation Hadoop Query Processing framework written on top of YARN</comment>
+    <version>0.1.0.22-1</version>
+
+    <components>
+        <component>
+            <name>TEZ_CLIENT</name>
+            <category>CLIENT</category>
+        </component>
+    </components>
+
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/WEBHCAT/configuration/webhcat-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/WEBHCAT/configuration/webhcat-site.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/WEBHCAT/configuration/webhcat-site.xml
new file mode 100644
index 0000000..31d0113
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/WEBHCAT/configuration/webhcat-site.xml
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+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.
+-->
+
+<!-- The default settings for Templeton. -->
+<!-- Edit templeton-site.xml to change settings for your local -->
+<!-- install. -->
+
+<configuration>
+
+  <property>
+    <name>templeton.port</name>
+      <value>50111</value>
+    <description>The HTTP port for the main server.</description>
+  </property>
+
+  <property>
+    <name>templeton.hadoop.conf.dir</name>
+    <value>/etc/hadoop/conf</value>
+    <description>The path to the Hadoop configuration.</description>
+  </property>
+
+  <property>
+    <name>templeton.jar</name>
+    <value>/usr/lib/hcatalog/share/webhcat/svr/webhcat.jar</value>
+    <description>The path to the Templeton jar file.</description>
+  </property>
+
+  <property>
+    <name>templeton.libjars</name>
+    <value>/usr/lib/zookeeper/zookeeper.jar</value>
+    <description>Jars to add the the classpath.</description>
+  </property>
+
+
+  <property>
+    <name>templeton.hadoop</name>
+    <value>/usr/bin/hadoop</value>
+    <description>The path to the Hadoop executable.</description>
+  </property>
+
+  <property>
+    <name>templeton.pig.archive</name>
+    <value>hdfs:///apps/webhcat/pig.tar.gz</value>
+    <description>The path to the Pig archive.</description>
+  </property>
+
+  <property>
+    <name>templeton.pig.path</name>
+    <value>pig.tar.gz/pig/bin/pig</value>
+    <description>The path to the Pig executable.</description>
+  </property>
+
+  <property>
+    <name>templeton.hcat</name>
+    <value>/usr/bin/hcat</value>
+    <description>The path to the hcatalog executable.</description>
+  </property>
+
+  <property>
+    <name>templeton.hive.archive</name>
+    <value>hdfs:///apps/webhcat/hive.tar.gz</value>
+    <description>The path to the Hive archive.</description>
+  </property>
+
+  <property>
+    <name>templeton.hive.path</name>
+    <value>hive.tar.gz/hive/bin/hive</value>
+    <description>The path to the Hive executable.</description>
+  </property>
+
+  <property>
+    <name>templeton.hive.properties</name>
+    <value></value>
+    <description>Properties to set when running hive.</description>
+  </property>
+
+
+  <property>
+    <name>templeton.zookeeper.hosts</name>
+    <value></value>
+    <description>ZooKeeper servers, as comma separated host:port pairs</description>
+  </property>
+
+  <property>
+    <name>templeton.storage.class</name>
+    <value>org.apache.hcatalog.templeton.tool.ZooKeeperStorage</value>
+    <description>The class to use as storage</description>
+  </property>
+
+  <property>
+   <name>templeton.override.enabled</name>
+   <value>false</value>
+   <description>
+     Enable the override path in templeton.override.jars
+   </description>
+ </property>
+
+ <property>
+    <name>templeton.streaming.jar</name>
+    <value>hdfs:///apps/webhcat/hadoop-streaming.jar</value>
+    <description>The hdfs path to the Hadoop streaming jar file.</description>
+  </property> 
+
+  <property>
+    <name>templeton.exec.timeout</name>
+    <value>60000</value>
+    <description>Time out for templeton api</description>
+  </property>
+
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/WEBHCAT/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/WEBHCAT/metainfo.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/WEBHCAT/metainfo.xml
new file mode 100644
index 0000000..e65992f
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/WEBHCAT/metainfo.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <user>root</user>
+    <comment>This is comment for WEBHCAT service</comment>
+    <version>0.5.0</version>
+
+    <components>
+        <component>
+            <name>WEBHCAT_SERVER</name>
+            <category>MASTER</category>
+        </component>
+    </components>
+
+
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/YARN/configuration/capacity-scheduler.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/YARN/configuration/capacity-scheduler.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/YARN/configuration/capacity-scheduler.xml
new file mode 100644
index 0000000..3f78292
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/YARN/configuration/capacity-scheduler.xml
@@ -0,0 +1,120 @@
+<!--
+   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.
+-->
+
+<configuration>
+
+  <property>
+    <name>yarn.scheduler.capacity.maximum-applications</name>
+    <value>10000</value>
+    <description>
+      Maximum number of applications that can be pending and running.
+    </description>
+  </property>
+
+  <property>
+    <name>yarn.scheduler.capacity.maximum-am-resource-percent</name>
+    <value>0.1</value>
+    <description>
+      Maximum percent of resources in the cluster which can be used to run 
+      application masters i.e. controls number of concurrent running
+      applications.
+    </description>
+  </property>
+
+  <property>
+    <name>yarn.scheduler.capacity.root.queues</name>
+    <value>default</value>
+    <description>
+      The queues at the this level (root is the root queue).
+    </description>
+  </property>
+
+  <property>
+    <name>yarn.scheduler.capacity.root.capacity</name>
+    <value>100</value>
+    <description>
+      The total capacity as a percentage out of 100 for this queue.
+      If it has child queues then this includes their capacity as well.
+      The child queues capacity should add up to their parent queue's capacity
+      or less.
+    </description>
+  </property>
+
+  <property>
+    <name>yarn.scheduler.capacity.root.default.capacity</name>
+    <value>100</value>
+    <description>Default queue target capacity.</description>
+  </property>
+
+  <property>
+    <name>yarn.scheduler.capacity.root.default.user-limit-factor</name>
+    <value>1</value>
+    <description>
+      Default queue user limit a percentage from 0.0 to 1.0.
+    </description>
+  </property>
+
+  <property>
+    <name>yarn.scheduler.capacity.root.default.maximum-capacity</name>
+    <value>100</value>
+    <description>
+      The maximum capacity of the default queue. 
+    </description>
+  </property>
+
+  <property>
+    <name>yarn.scheduler.capacity.root.default.state</name>
+    <value>RUNNING</value>
+    <description>
+      The state of the default queue. State can be one of RUNNING or STOPPED.
+    </description>
+  </property>
+
+  <property>
+    <name>yarn.scheduler.capacity.root.default.acl_submit_jobs</name>
+    <value>*</value>
+    <description>
+      The ACL of who can submit jobs to the default queue.
+    </description>
+  </property>
+
+  <property>
+    <name>yarn.scheduler.capacity.root.default.acl_administer_jobs</name>
+    <value>*</value>
+    <description>
+      The ACL of who can administer jobs on the default queue.
+    </description>
+  </property>
+
+  <property>
+    <name>yarn.scheduler.capacity.root.acl_administer_queues</name>
+    <value>*</value>
+    <description>
+      The ACL for who can administer this queue i.e. change sub-queue 
+      allocations.
+    </description>
+  </property>
+  
+  <property>
+    <name>yarn.scheduler.capacity.root.unfunded.capacity</name>
+    <value>50</value>
+    <description>
+      No description
+    </description>
+  </property>
+
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/YARN/configuration/container-executor.cfg
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/YARN/configuration/container-executor.cfg b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/YARN/configuration/container-executor.cfg
new file mode 100644
index 0000000..502ddaa
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/YARN/configuration/container-executor.cfg
@@ -0,0 +1,20 @@
+#
+# 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.
+#
+yarn.nodemanager.local-dirs=TODO-YARN-LOCAL-DIR
+yarn.nodemanager.linux-container-executor.group=hadoop
+yarn.nodemanager.log-dirs=TODO-YARN-LOG-DIR
+banned.users=hfds,bin,0

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/YARN/configuration/core-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/YARN/configuration/core-site.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/YARN/configuration/core-site.xml
new file mode 100644
index 0000000..3a2af49
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/YARN/configuration/core-site.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+   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.
+-->
+<configuration>
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/YARN/configuration/global.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/YARN/configuration/global.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/YARN/configuration/global.xml
new file mode 100644
index 0000000..68fb257
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/YARN/configuration/global.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+/**
+ * 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.
+ */
+-->
+
+<configuration>
+  <property>
+    <name>rm_host</name>
+    <value></value>
+    <description>Resource Manager.</description>
+  </property>
+  <property>
+    <name>nm_hosts</name>
+    <value></value>
+    <description>List of Node Manager Hosts.</description>
+  </property>
+  <property>
+    <name>yarn_log_dir_prefix</name>
+    <value>/var/log/hadoop-yarn</value>
+    <description>YARN Log Dir Prefix</description>
+  </property>
+  <property>
+    <name>yarn_pid_dir_prefix</name>
+    <value>/var/run/hadoop-yarn</value>
+    <description>YARN PID Dir Prefix</description>
+  </property>
+  <property>
+    <name>yarn_user</name>
+    <value>yarn</value>
+    <description>YARN User</description>
+  </property>
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/YARN/configuration/yarn-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/YARN/configuration/yarn-site.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/YARN/configuration/yarn-site.xml
new file mode 100644
index 0000000..da6641f
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/YARN/configuration/yarn-site.xml
@@ -0,0 +1,172 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+   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.
+-->
+
+<!-- Put site-specific property overrides in this file. -->
+
+<configuration xmlns:xi="http://www.w3.org/2001/XInclude">
+
+<!-- ResourceManager -->
+
+  <property>
+    <name>yarn.resourcemanager.resource-tracker.address</name>
+    <value>localhost:8025</value>
+  </property>
+
+  <property>
+    <name>yarn.resourcemanager.scheduler.address</name>
+    <value>localhost:8030</value>
+  </property>
+  
+  <property>
+    <name>yarn.resourcemanager.address</name>
+    <value>localhost:8050</value>
+  </property>
+
+  <property>
+    <name>yarn.resourcemanager.admin.address</name>
+    <value>localhost:8141</value>
+  </property>
+
+  <property>
+   <name>yarn.resourcemanager.scheduler.class</name>
+   <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
+  </property>
+
+  <property>
+    <name>yarn.scheduler.minimum-allocation-mb</name>
+    <value>1024</value>
+  </property>
+
+  <property>
+    <name>yarn.scheduler.maximum-allocation-mb</name>
+    <value>8192</value>
+  </property>
+
+<!-- NodeManager -->
+
+  <property>
+    <name>yarn.nodemanager.address</name>
+    <value>0.0.0.0:45454</value>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.resource.memory-mb</name>
+    <value>8192</value>
+    <description>Amount of physical memory, in MB, that can be allocated
+      for containers.</description>
+  </property>
+
+  <property>
+    <name>yarn.application.classpath</name>
+    <value>/etc/hadoop/conf,/usr/lib/hadoop/*,/usr/lib/hadoop/lib/*,/usr/lib/hadoop-hdfs/*,/usr/lib/hadoop-hdfs/lib/*,/usr/lib/hadoop-yarn/*,/usr/lib/hadoop-yarn/lib/*,/usr/lib/hadoop-mapreduce/*,/usr/lib/hadoop-mapreduce/lib/*</value>
+  <description>Classpath for typical applications.</description>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.vmem-pmem-ratio</name>
+    <value>2.1</value>
+    <description>Ratio between virtual memory to physical memory when
+    setting memory limits for containers. Container allocations are
+    expressed in terms of physical memory, and virtual memory usage
+    is allowed to exceed this allocation by this ratio.
+    </description>
+  </property>
+  
+  <property>
+    <name>yarn.nodemanager.container-executor.class</name>
+    <value>org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor</value>
+    <description>ContainerExecutor for launching containers</description>
+  </property>
+ 
+  <property>
+    <name>yarn.nodemanager.aux-services</name>
+    <value>mapreduce.shuffle</value>
+    <description>Auxilliary services of NodeManager</description>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.aux-services.class</name>
+    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
+    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.log-dirs</name>
+    <value>/var/log/hadoop/yarn</value>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.container-monitor.interval-ms</name>
+    <value>3000</value>
+    <description>The interval, in milliseconds, for which the node manager
+    waits  between two cycles of monitoring its containers' memory usage. 
+    </description>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.health-checker.script.path</name>
+    <value>/etc/hadoop/conf/health_check</value>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.health-checker.interval-ms</name>
+    <value>135000</value>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.health-checker.script.timeout-ms</name>
+    <value>60000</value>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.log.retain-second</name>
+    <value>604800</value>
+  </property>
+
+  <property>
+    <name>yarn.log-aggregation-enable</name>
+    <value>true</value>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.remote-app-log-dir</name>
+    <value>/app-logs</value>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.remote-app-log-dir-suffix</name>
+    <value>logs</value>
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.log-aggregation.compression-type</name>
+    <value>gz</value> 
+  </property>
+
+  <property>
+    <name>yarn.nodemanager.delete.debug-delay-sec</name>
+    <value>36000</value>
+  </property>
+
+
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/YARN/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/YARN/metainfo.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/YARN/metainfo.xml
new file mode 100644
index 0000000..743c40d
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/YARN/metainfo.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <user>mapred</user>
+    <comment>Apache Hadoop NextGen MapReduce (YARN)</comment>
+    <version>2.0.3.22-1</version>
+    <components>
+        <component>
+            <name>RESOURCEMANAGER</name>
+            <category>MASTER</category>
+        </component>
+        <component>
+            <name>NODEMANAGER</name>
+            <category>SLAVE</category>
+        </component>
+       <component>
+            <name>YARN_CLIENT</name>
+            <category>CLIENT</category>
+        </component>
+    </components>
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/ZOOKEEPER/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/ZOOKEEPER/metainfo.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/ZOOKEEPER/metainfo.xml
new file mode 100644
index 0000000..e72fd2a
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.1/services/ZOOKEEPER/metainfo.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <user>root</user>
+    <comment>Centralized service which provides highly reliable distributed coordination</comment>
+    <version>3.4.5.22-1</version>
+
+    <components>
+        <component>
+            <name>ZOOKEEPER_SERVER</name>
+            <category>MASTER</category>
+        </component>
+
+        <component>
+            <name>ZOOKEEPER_CLIENT</name>
+            <category>CLIENT</category>
+        </component>
+    </components>
+
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/assets/data/apps/apps/mapreduce_201301280808_0001.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/apps/apps/mapreduce_201301280808_0001.json b/ambari-web/app/assets/data/apps/apps/mapreduce_201301280808_0001.json
new file mode 100644
index 0000000..f018e57
--- /dev/null
+++ b/ambari-web/app/assets/data/apps/apps/mapreduce_201301280808_0001.json
@@ -0,0 +1,16 @@
+{
+  "apps": [
+    {
+      "appId": "application_201301280808_0001",
+      "appName": "word count",
+      "appType": "MAPREDUCE",
+      "status": "FINISHED",
+      "userName": "ambari_qa",
+      "submitTime": 1359378637135,
+      "finishTime": 1359378667350,
+      "stages": [1,1],
+      "workflowId": "mapreduce_201301280808_0001",
+      "workflowEntityName": "1"
+    }
+  ]
+}

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/assets/data/apps/apps/mapreduce_201301280808_0003.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/apps/apps/mapreduce_201301280808_0003.json b/ambari-web/app/assets/data/apps/apps/mapreduce_201301280808_0003.json
new file mode 100644
index 0000000..ebc1f05
--- /dev/null
+++ b/ambari-web/app/assets/data/apps/apps/mapreduce_201301280808_0003.json
@@ -0,0 +1,15 @@
+{
+  "apps": [
+    {
+      "appId": "application_201301280808_0003",
+      "appName": "oozie:launcher:T\\=map-reduce:W\\=map-reduce-wf:A\\=mr-node:ID\\=0000000-130128081151371-oozie-oozi-W",
+      "appType": "MAPREDUCE",
+      "userName": "ambari_qa",
+      "submitTime": 1359378907927,
+      "finishTime": 0,
+      "stages": [1,0],
+      "workflowId": "mapreduce_201301280808_0003",
+      "workflowEntityName": "3"
+    }
+  ]
+}

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/assets/data/apps/apps/mapreduce_201301280808_0004.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/apps/apps/mapreduce_201301280808_0004.json b/ambari-web/app/assets/data/apps/apps/mapreduce_201301280808_0004.json
new file mode 100644
index 0000000..a77b7b1
--- /dev/null
+++ b/ambari-web/app/assets/data/apps/apps/mapreduce_201301280808_0004.json
@@ -0,0 +1,40 @@
+{
+  "apps": [
+    {
+      "appId": "application_201301280808_0002",
+      "appName": "oozie:action:T\\=map-reduce:W\\=map-reduce-wf:A\\=mr-node:ID\\=0000000-130128081151371-oozie-oozi-W",
+      "appType": "MAPREDUCE",
+      "status": "FINISHED",
+      "userName": "ambari_qa",
+      "submitTime": 1359378922503,
+      "finishTime": 1359378949583,
+      "stages": [1,1],
+      "workflowId": "mapreduce_201301280808_0002",
+      "workflowEntityName": "2"
+    },
+    {
+      "appId": "application_201301280808_0004",
+      "appName": "oozie:action:T\\=map-reduce:W\\=map-reduce-wf:A\\=mr-node:ID\\=0000000-130128081151371-oozie-oozi-W",
+      "appType": "MAPREDUCE",
+      "status": "FINISHED",
+      "userName": "ambari_qa",
+      "submitTime": 1359378922503,
+      "finishTime": 1359378949583,
+      "stages": [1,1],
+      "workflowId": "mapreduce_201301280808_0004",
+      "workflowEntityName": "4"
+    },
+    {
+      "appId": "application_201301280808_0003",
+      "appName": "oozie:action:T\\=map-reduce:W\\=map-reduce-wf:A\\=mr-node:ID\\=0000000-130128081151371-oozie-oozi-W",
+      "appType": "MAPREDUCE",
+      "status": "FINISHED",
+      "userName": "ambari_qa",
+      "submitTime": 1359378922503,
+      "finishTime": 1359378949583,
+      "stages": [1,1],
+      "workflowId": "mapreduce_201301280808_0003",
+      "workflowEntityName": "3"
+    }
+  ]
+}

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/assets/data/apps/apps/pig_c1af4446-64d2-46fb-be69-6363e7ec89fe.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/apps/apps/pig_c1af4446-64d2-46fb-be69-6363e7ec89fe.json b/ambari-web/app/assets/data/apps/apps/pig_c1af4446-64d2-46fb-be69-6363e7ec89fe.json
new file mode 100644
index 0000000..0f468ef
--- /dev/null
+++ b/ambari-web/app/assets/data/apps/apps/pig_c1af4446-64d2-46fb-be69-6363e7ec89fe.json
@@ -0,0 +1,89 @@
+{
+    "apps": [
+        {
+            "appId": "application_1371140159837_0004",
+            "appName": "PigLatin:script1-hadoop.pig",
+            "appType": "MAPREDUCE",
+            "status": "FINISHED",
+            "userName": "ambari-qa",
+            "queue": "default",
+            "submitTime": 1371141211530,
+            "launchTime": 1371141211530,
+            "finishTime": 1371141316943,
+            "stages": [
+                1,
+                1
+            ],
+            "workflowId": "pig_c1af4446-64d2-46fb-be69-6363e7ec89fe",
+            "workflowEntityName": "scope-72"
+        },
+        {
+            "appId": "application_1371140159837_0005",
+            "appName": "PigLatin:script1-hadoop.pig",
+            "appType": "MAPREDUCE",
+            "status": "FINISHED",
+            "userName": "ambari-qa",
+            "queue": "default",
+            "submitTime": 1371141327050,
+            "launchTime": 1371141327050,
+            "finishTime": 1371141364567,
+            "stages": [
+                1,
+                1
+            ],
+            "workflowId": "pig_c1af4446-64d2-46fb-be69-6363e7ec89fe",
+            "workflowEntityName": "scope-80"
+        },
+        {
+            "appId": "application_1371140159837_0006",
+            "appName": "PigLatin:script1-hadoop.pig",
+            "appType": "MAPREDUCE",
+            "status": "FINISHED",
+            "userName": "ambari-qa",
+            "queue": "default",
+            "submitTime": 1371141370351,
+            "launchTime": 1371141370351,
+            "finishTime": 1371141412252,
+            "stages": [
+                1,
+                1
+            ],
+            "workflowId": "pig_c1af4446-64d2-46fb-be69-6363e7ec89fe",
+            "workflowEntityName": "scope-83"
+        },
+        {
+            "appId": "application_1371140159837_0007",
+            "appName": "PigLatin:script1-hadoop.pig",
+            "appType": "MAPREDUCE",
+            "status": "FINISHED",
+            "userName": "ambari-qa",
+            "queue": "default",
+            "submitTime": 1371141419373,
+            "launchTime": 1371141419373,
+            "finishTime": 1371141448848,
+            "stages": [
+                1,
+                1
+            ],
+            "workflowId": "pig_c1af4446-64d2-46fb-be69-6363e7ec89fe",
+            "workflowEntityName": "scope-86"
+        },
+        {
+            "appId": "application_1371140159837_0008",
+            "appName": "PigLatin:script1-hadoop.pig",
+            "appType": "MAPREDUCE",
+            "status": "FINISHED",
+            "userName": "ambari-qa",
+            "queue": "default",
+            "submitTime": 1371141452275,
+            "launchTime": 1371141452275,
+            "finishTime": 1371141483744,
+            "stages": [
+                1,
+                1
+            ],
+            "workflowId": "pig_c1af4446-64d2-46fb-be69-6363e7ec89fe",
+            "workflowEntityName": "scope-103"
+        }
+    ]
+}

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/assets/data/apps/apps/pig_f9957a11-a902-4f01-ac53-9679ce3a4b13.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/apps/apps/pig_f9957a11-a902-4f01-ac53-9679ce3a4b13.json b/ambari-web/app/assets/data/apps/apps/pig_f9957a11-a902-4f01-ac53-9679ce3a4b13.json
new file mode 100644
index 0000000..d647331
--- /dev/null
+++ b/ambari-web/app/assets/data/apps/apps/pig_f9957a11-a902-4f01-ac53-9679ce3a4b13.json
@@ -0,0 +1,16 @@
+{
+  "apps": [
+    {
+      "appId": "application_201301280808_0002",
+      "appName": "PigLatin:pigSmoke\\.sh",
+      "appType": "MAPREDUCE",
+      "status": "FINISHED",
+      "userName": "ambari_qa",
+      "submitTime": 1359378741973,
+      "finishTime": 1359378760098,
+      "stages": [1,0],
+      "workflowId": "pig_f9957a11-a902-4f01-ac53-9679ce3a4b13",
+      "workflowEntityName": "scope-5"
+    }
+  ]
+}

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/assets/data/apps/apps/yarn_1371140159837_0001.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/apps/apps/yarn_1371140159837_0001.json b/ambari-web/app/assets/data/apps/apps/yarn_1371140159837_0001.json
new file mode 100644
index 0000000..8a69dba
--- /dev/null
+++ b/ambari-web/app/assets/data/apps/apps/yarn_1371140159837_0001.json
@@ -0,0 +1,18 @@
+{
+    "apps": [
+        {
+            "appId": "application_1371140159837_0001",
+            "appName": "yarnservicecheck",
+            "appType": "YARN",
+            "status": "FINISHED",
+            "userName": "hdfs",
+            "queue": "default",
+            "submitTime": 1371140224391,
+            "launchTime": 1371140224420,
+            "finishTime": 1371140233914,
+            "stages": [],
+            "workflowId": "yarn_1371140159837_0001",
+            "workflowEntityName": "1"
+        }
+    ]
+}

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/assets/data/apps/runs2.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/apps/runs2.json b/ambari-web/app/assets/data/apps/runs2.json
new file mode 100644
index 0000000..467ca17
--- /dev/null
+++ b/ambari-web/app/assets/data/apps/runs2.json
@@ -0,0 +1,171 @@
+{
+  "sEcho": 0,
+  "iTotalRecords": 6,
+  "iTotalDisplayRecords": 6,
+  "startIndex": 0,
+  "endIndex": 5,
+  "aaData": [
+    {
+      "workflowId": "mapreduce_201301280808_0001",
+      "workflowName": "word count",
+      "userName": "ambari_qa",
+      "startTime": 1359378637135,
+      "elapsedTime": 30215,
+      "inputBytes": 0,
+      "outputBytes": 0,
+      "numJobsTotal": 1,
+      "numJobsCompleted": 1,
+      "workflowTags": "tag",
+      "workflowContext": {
+        "workflowDag": {
+          "entries": [
+            {
+              "source": "1",
+              "targets": [
+
+              ]
+            }
+          ]
+        }
+      }
+    },
+    {
+      "workflowId": "mapreduce_201301280808_0003",
+      "workflowName": "oozie:launcher:T\\=map-reduce:W\\=map-reduce-wf:A\\=mr-node:ID\\=0000000-130128081151371-oozie-oozi-W",
+      "userName": "ambari_qa",
+      "startTime": 1359378907927,
+      "elapsedTime": 19186,
+      "inputBytes": 0,
+      "outputBytes": 0,
+      "numJobsTotal": 1,
+      "numJobsCompleted": 1,
+      "workflowContext": {
+        "workflowDag": {
+          "entries": [
+            {
+              "source": "3",
+              "targets": [
+
+              ]
+            }
+          ]
+        }
+      }
+    },
+    {
+      "workflowId": "mapreduce_201301280808_0004",
+      "workflowName": "oozie:action:T\\=map-reduce:W\\=map-reduce-wf:A\\=mr-node:ID\\=0000000-130128081151371-oozie-oozi-W",
+      "userName": "ambari_qa",
+      "startTime": 1359378922503,
+      "elapsedTime": 27080,
+      "inputBytes": 0,
+      "outputBytes": 0,
+      "numJobsTotal": 3,
+      "numJobsCompleted": 1,
+      "workflowTags": "tag",
+      "workflowContext": {
+        "workflowDag": {
+          "entries": [
+            {
+              "source": "4",
+              "targets": [
+
+              ]
+            }
+          ]
+        }
+      }
+    },
+    {
+      "workflowId": "pig_f9957a11-a902-4f01-ac53-9679ce3a4b13",
+      "workflowName": "\/tmp\/pigSmoke.sh",
+      "userName": "ambari_qa",
+      "startTime": 1359378741973,
+      "elapsedTime": 18125,
+      "inputBytes": 0,
+      "outputBytes": 0,
+      "numJobsTotal": 1,
+      "numJobsCompleted": 1,
+      "workflowContext": {
+        "workflowDag": {
+          "entries": [
+            {
+              "source": "scope-5",
+              "targets": [
+
+              ]
+            }
+          ]
+        }
+      }
+    },
+    {
+      "workflowId": "pig_c1af4446-64d2-46fb-be69-6363e7ec89fe",
+      "workflowName": "script1-hadoop.pig",
+      "userName": "ambari-qa",
+      "startTime": 1371141211530,
+      "elapsedTime": 272214,
+      "inputBytes": 0,
+      "outputBytes": 0,
+      "numJobsTotal": 5,
+      "numJobsCompleted": 5,
+      "workflowContext": {
+        "workflowDag": {
+          "entries": [
+            { "source": "scope-103", "targets": [] },
+            { "source": "scope-72", "targets": [ "scope-80" ] },
+            { "source": "scope-80", "targets": [ "scope-83" ] },
+            { "source": "scope-83", "targets": [ "scope-86" ] },
+            { "source": "scope-86", "targets": [ "scope-103" ] }
+          ]
+        }
+      },
+      "workflowTags": ""
+    },
+    {
+      "workflowId": "yarn_1371140159837_0001",
+      "workflowName": "yarnservicecheck",
+      "userName": "hdfs",
+      "startTime": 1371140224391,
+      "elapsedTime": 9523,
+      "inputBytes": 0,
+      "outputBytes": 0,
+      "numJobsTotal": 1,
+      "numJobsCompleted": 1,
+      "workflowContext": {
+        "workflowDag": {
+          "entries": [
+            { "source": "1", "targets": [] }
+          ]
+        }
+      }
+    }
+  ],
+  "summary": {
+    "numRows": 6,
+    "jobs": {
+      "avg": 1,
+      "min": 1,
+      "max": 1
+    },
+    "input": {
+      "avg": 0,
+      "min": 0,
+      "max": 0
+    },
+    "output": {
+      "avg": 0,
+      "min": 0,
+      "max": 0
+    },
+    "duration": {
+      "avg": 23651.5,
+      "min": 18125,
+      "max": 30215
+    },
+    "times": {
+      "oldest": 1359378922503,
+      "youngest": 1359378637135
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/assets/data/services/metrics/yarn/gc.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/services/metrics/yarn/gc.json b/ambari-web/app/assets/data/services/metrics/yarn/gc.json
new file mode 100644
index 0000000..8e64d9d
--- /dev/null
+++ b/ambari-web/app/assets/data/services/metrics/yarn/gc.json
@@ -0,0 +1,16 @@
+{
+  "href" : "http://ambari/clusters/SrimanthAmbari/hosts/hostname/host_components/RESOURCEMANAGER?fields=metrics/jvm/gcTimeMillis[1351213550,1351217148,60]",
+  "HostRoles" : {
+    "cluster_name" : "SrimanthAmbari",
+    "component_name" : "RESOURCEMANAGER",
+    "host_name" : "hostname"
+  },
+  "host" : {
+    "href" : "http://ambari/clusters/SrimanthAmbari/hosts/hostname"
+  },
+  "metrics" : {
+    "jvm" : {
+      "gcTimeMillis" : "[[0.0,1351213560],[0.0,1351213920],[0.0,1351214280],[0.0,1351214640],[0.0,1351215000],[0.0,1351215360],[0.011111111111,1351215720],[0.0,1351216080],[0.0,1351216440],[1.1930462189E7,1351216800],[0.069444444444,1351217160]]"
+    }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/assets/data/services/metrics/yarn/jvm_heap.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/services/metrics/yarn/jvm_heap.json b/ambari-web/app/assets/data/services/metrics/yarn/jvm_heap.json
new file mode 100644
index 0000000..0fbf53f
--- /dev/null
+++ b/ambari-web/app/assets/data/services/metrics/yarn/jvm_heap.json
@@ -0,0 +1,19 @@
+{
+  "href" : "http://ambari/clusters/SrimanthAmbari/hosts/hostname/host_components/RESOURCEMANAGER?fields=metrics/jvm/memNonHeapUsedM[1351213550,1351217148,60],metrics/jvm/memNonHeapCommittedM[1351213550,1351217148,60],metrics/jvm/memHeapUsedM[1351213550,1351217148,60],metrics/jvm/memHeapCommittedM[1351213550,1351217148,60]",
+  "HostRoles" : {
+    "cluster_name" : "SrimanthAmbari",
+    "component_name" : "RESOURCEMANAGER",
+    "host_name" : "hostname"
+  },
+  "host" : {
+    "href" : "http://ambari/clusters/SrimanthAmbari/hosts/hostname"
+  },
+  "metrics" : {
+    "jvm" : {
+      "memHeapCommittedM" : "[[185.1875,1351213560],[185.1875,1351213920],[185.1875,1351214280],[185.1875,1351214640],[185.1875,1351215000],[185.1875,1351215360],[185.1875,1351215720],[185.1875,1351216080],[185.1875,1351216440],[185.1875,1351216800],[185.1875,1351217160]]",
+      "memNonHeapUsedM" : "[[24.856247,1351213560],[24.856247,1351213920],[24.856247,1351214280],[24.856247,1351214640],[24.856247,1351215000],[24.856247,1351215360],[24.856247,1351215720],[24.856247,1351216080],[24.856247,1351216440],[23.964379333,1351216800],[21.711374106,1351217160]]",
+      "memHeapUsedM" : "[[58.635102042,1351213560],[76.2040755,1351213920],[93.246927389,1351214280],[110.45160614,1351214640],[127.54546414,1351215000],[144.66363658,1351215360],[96.690545511,1351215720],[20.528702175,1351216080],[38.275298164,1351216440],[59.513269842,1351216800],[127.88187832,1351217160]]",
+      "memNonHeapCommittedM" : "[[39.08203,1351213560],[39.08203,1351213920],[39.08203,1351214280],[39.08203,1351214640],[39.08203,1351215000],[39.08203,1351215360],[39.08203,1351215720],[39.08203,1351216080],[39.08203,1351216440],[36.653699028,1351216800],[23.404166667,1351217160]]"
+    }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/assets/data/services/metrics/yarn/jvm_threads.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/services/metrics/yarn/jvm_threads.json b/ambari-web/app/assets/data/services/metrics/yarn/jvm_threads.json
new file mode 100644
index 0000000..15c241f
--- /dev/null
+++ b/ambari-web/app/assets/data/services/metrics/yarn/jvm_threads.json
@@ -0,0 +1,19 @@
+{
+  "href" : "http://ambari/clusters/SrimanthAmbari/hosts/hostname/host_components/RESOURCEMANAGER?fields=metrics/jvm/threadsRunnable[1351213550,1351217148,60],metrics/jvm/threadsBlocked[1351213550,1351217148,60],metrics/jvm/threadsWaiting[1351213550,1351217148,60],metrics/jvm/threadsTimedWaiting[1351213550,1351217148,60]",
+  "HostRoles" : {
+    "cluster_name" : "SrimanthAmbari",
+    "component_name" : "RESOURCEMANAGER",
+    "host_name" : "hostname"
+  },
+  "host" : {
+    "href" : "http://ambari/clusters/SrimanthAmbari/hosts/hostname"
+  },
+  "metrics" : {
+    "jvm" : {
+      "threadsBlocked" : "[[0.0,1351213560],[0.0,1351213920],[0.0,1351214280],[0.0,1351214640],[0.0,1351215000],[0.0,1351215360],[0.0,1351215720],[0.0,1351216080],[0.0,1351216440],[0.0,1351216800],[0.0,1351217160]]",
+      "threadsWaiting" : "[[59.0,1351213560],[59.0,1351213920],[59.0,1351214280],[59.0,1351214640],[59.0,1351215000],[59.0,1351215360],[59.0,1351215720],[59.0,1351216080],[59.0,1351216440],[58.388888889,1351216800],[58.627777778,1351217160]]",
+      "threadsTimedWaiting" : "[[10.0,1351213560],[10.0,1351213920],[10.0,1351214280],[10.0,1351214640],[10.0,1351215000],[10.0,1351215360],[10.0,1351215720],[10.0,1351216080],[10.0,1351216440],[10.161111111,1351216800],[10.830555556,1351217160]]",
+      "threadsRunnable" : "[[6.0,1351213560],[6.0,1351213920],[6.0,1351214280],[6.0,1351214640],[6.0,1351215000],[6.0,1351215360],[6.0,1351215720],[6.0,1351216080],[6.0,1351216440],[6.0,1351216800],[6.0,1351217160]]"
+    }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/assets/data/services/metrics/yarn/rpc.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/services/metrics/yarn/rpc.json b/ambari-web/app/assets/data/services/metrics/yarn/rpc.json
new file mode 100644
index 0000000..feb4ddc
--- /dev/null
+++ b/ambari-web/app/assets/data/services/metrics/yarn/rpc.json
@@ -0,0 +1,16 @@
+{
+  "href" : "http://ambari/clusters/SrimanthAmbari/hosts/hostname/host_components/RESOURCEMANAGER?fields=metrics/rpc/RpcQueueTime_avg_time[1351213550,1351217148,60]",
+  "HostRoles" : {
+    "cluster_name" : "SrimanthAmbari",
+    "component_name" : "RESOURCEMANAGER",
+    "host_name" : "hostname"
+  },
+  "host" : {
+    "href" : "http://ambari/clusters/SrimanthAmbari/hosts/hostname"
+  },
+  "metrics" : {
+    "rpc" : {
+      "RpcQueueTime_avg_time" : "[[0.069553376906,1351213560],[0.08265993266,1351213920],[0.096717171717,1351214280],[0.07859724698,1351214640],[0.093248663102,1351215000],[0.084630619925,1351215360],[0.09087443058,1351215720],[0.075108932462,1351216080],[0.086007130125,1351216440],[0.42323904309,1351216800],[0.14756856477,1351217160]]"
+    }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/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 a1e3731..42f854f 100644
--- a/ambari-web/app/assets/test/tests.js
+++ b/ambari-web/app/assets/test/tests.js
@@ -53,11 +53,11 @@ require('test/utils/date_test');
 require('test/utils/config_test');
 require('test/utils/date_test');
 require('test/utils/form_field_test');
-require('test/utils/host_progress_popup_test');
 require('test/utils/misc_test');
 require('test/utils/validator_test');
+require('test/utils/config_test');
 require('test/utils/string_utils_test');
 require('test/views/common/chart/linear_time_test');
 require('test/models/host_component_test');
 require('test/models/host_test');
-require('test/models/rack_test');
\ No newline at end of file
+require('test/models/rack_test');

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/classes/app_class.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/classes/app_class.js b/ambari-web/app/classes/app_class.js
new file mode 100644
index 0000000..a3d51eb
--- /dev/null
+++ b/ambari-web/app/classes/app_class.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.
+ */
+
+
+var App = require('app');
+var date = require('utils/date');
+var misc = require('utils/misc');
+
+App.App2 = Ember.Object.extend({
+
+  app_id: "", //string
+  app_name: "", //string
+  app_type: "", //string
+  workflow_entity_name: "", //string
+  user_name: "", //string
+  queue: "", //string
+  submit_time: 0, //number
+  launch_time: 0, //number
+  finish_time: 0, //number
+  num_stages: 0, //number
+  stages: [], //number
+  status: "", //string
+});

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/classes/run_class.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/classes/run_class.js b/ambari-web/app/classes/run_class.js
index 801c550..d7e0d43 100644
--- a/ambari-web/app/classes/run_class.js
+++ b/ambari-web/app/classes/run_class.js
@@ -32,6 +32,7 @@ App.Run2 = Ember.Object.extend({
   workflowContext: null, //string
   input: 0, //number
   output: 0, //number
+  tags: null, //string
 
   /**
    * Will set to true when we load all jobs related to this run
@@ -95,9 +96,12 @@ App.Run2 = Ember.Object.extend({
     if (this.get('id').indexOf('hive_') === 0) {
       return 'Hive';
     }
-    if (this.get('id').indexOf('mr_') === 0) {
+    if (this.get('id').indexOf('mr_') === 0 || this.get('id').indexOf('mapreduce_') === 0) {
       return 'MapReduce';
     }
+    if (this.get('id').indexOf('yarn_') === 0) {
+      return 'Yarn';
+    }
     return 'Undefined';
   }.property('id')
-});
\ No newline at end of file
+});

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/controllers.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers.js b/ambari-web/app/controllers.js
index 5abbec2..b0a02b7 100644
--- a/ambari-web/app/controllers.js
+++ b/ambari-web/app/controllers.js
@@ -69,6 +69,9 @@ require('controllers/main/charts/heatmap_metrics/heatmap_metric_mapreduce_gctime
 require('controllers/main/charts/heatmap_metrics/heatmap_metric_mapreduce_mapsRunning');
 require('controllers/main/charts/heatmap_metrics/heatmap_metric_mapreduce_reducesRunning');
 require('controllers/main/charts/heatmap_metrics/heatmap_metric_mapreduce_memHeapUsed');
+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_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/a718fc45/ambari-web/app/controllers/global/cluster_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/global/cluster_controller.js b/ambari-web/app/controllers/global/cluster_controller.js
index 1055f68..4545c7e 100644
--- a/ambari-web/app/controllers/global/cluster_controller.js
+++ b/ambari-web/app/controllers/global/cluster_controller.js
@@ -120,7 +120,7 @@ App.ClusterController = Em.Controller.extend({
               if (host) {
                 hostName = host.get('publicHostName');
               }
-              return "http://" + (App.singleNodeInstall ? App.singleNodeAlias : hostName) + "/ganglia";
+              return "http://" + (App.singleNodeInstall ? App.singleNodeAlias + ":42080" : hostName) + "/ganglia";
             }
           }
         }
@@ -154,7 +154,7 @@ App.ClusterController = Em.Controller.extend({
               if (host) {
                 hostName = host.get('publicHostName');
               }
-              return "http://" + (App.singleNodeInstall ? App.singleNodeAlias : hostName) + "/nagios";
+              return "http://" + (App.singleNodeInstall ? App.singleNodeAlias + ":42080" : hostName) + "/nagios";
             }
           }
         }

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/controllers/global/update_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/global/update_controller.js b/ambari-web/app/controllers/global/update_controller.js
index db53f0f..c320f52 100644
--- a/ambari-web/app/controllers/global/update_controller.js
+++ b/ambari-web/app/controllers/global/update_controller.js
@@ -87,8 +87,8 @@ App.UpdateController = Em.Controller.extend({
     var methodStartTs = new Date().getTime();
     var servicesUrl = isInitialLoad ? 
       //this.getUrl('/data/dashboard/services.json', '/services?fields=components/ServiceComponentInfo,components/host_components,components/host_components/HostRoles') :
-      this.getUrl('/data/dashboard/services.json', '/services?fields=components/ServiceComponentInfo,components/host_components,components/host_components/HostRoles,components/host_components/metrics/jvm/memHeapUsedM,components/host_components/metrics/jvm/memHeapCommittedM,components/host_components/metrics/mapred/jobtracker/trackers_decommissioned,components/host_components/metrics/cpu/cpu_wio,components/host_components/metrics/rpc/RpcQueueTime_avg_time'+conditionalFieldsString):
-      this.getUrl('/data/dashboard/services.json', '/services?fields=components/ServiceComponentInfo,components/host_components,components/host_components/HostRoles,components/host_components/metrics/jvm/memHeapUsedM,components/host_components/metrics/jvm/memHeapCommittedM,components/host_components/metrics/mapred/jobtracker/trackers_decommissioned,components/host_components/metrics/cpu/cpu_wio,components/host_components/metrics/rpc/RpcQueueTime_avg_time'+conditionalFieldsString);
+      this.getUrl('/data/dashboard/services.json', '/services?fields=components/ServiceComponentInfo,components/host_components,components/host_components/HostRoles,components/host_components/metrics/jvm/memHeapUsedM,components/host_components/metrics/jvm/memHeapCommittedM,components/host_components/metrics/mapred/jobtracker/trackers_decommissioned,components/host_components/metrics/cpu/cpu_wio,components/host_components/metrics/rpc/RpcQueueTime_avg_time'+conditionalFieldsString+',components/host_components/metrics/yarn/Queue') :
+      this.getUrl('/data/dashboard/services.json', '/services?fields=components/ServiceComponentInfo,components/host_components,components/host_components/HostRoles,components/host_components/metrics/jvm/memHeapUsedM,components/host_components/metrics/jvm/memHeapCommittedM,components/host_components/metrics/mapred/jobtracker/trackers_decommissioned,components/host_components/metrics/cpu/cpu_wio,components/host_components/metrics/rpc/RpcQueueTime_avg_time'+conditionalFieldsString+',components/host_components/metrics/yarn/Queue');
     var callback = callback || function (jqXHR, textStatus) {
       self.set('isUpdated', true);
     };

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/controllers/main/apps/item_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/apps/item_controller.js b/ambari-web/app/controllers/main/apps/item_controller.js
index 4534279..50b9cb8 100644
--- a/ambari-web/app/controllers/main/apps/item_controller.js
+++ b/ambari-web/app/controllers/main/apps/item_controller.js
@@ -17,6 +17,7 @@
  */
 
 var App = require('app');
+var stringUtils = require('utils/string_utils');
 
 App.MainAppsItemController = Em.Controller.extend({
   name:'mainAppsItemController',
@@ -34,16 +35,29 @@ App.MainAppsItemController = Em.Controller.extend({
     }
     var self = this;
 
-    var url = App.testMode ? '/data/apps/jobs/'+ currentId +'.json' :
-      App.apiPrefix + "/jobhistory/job?workflowId=" + currentId;
+    if (!App.testMode && stringUtils.compareVersions(App.get('currentStackVersionNumber'), "2.0") === -1) {
+      var url = App.testMode ? '/data/apps/jobs/'+ currentId +'.json' :
+        App.apiPrefix + "/jobhistory/job?workflowId=" + currentId;
 
-    var mapper = App.jobsMapper;
-    mapper.set('controller', this);
-    App.HttpClient.get(url, mapper,{
-      complete:function(jqXHR, textStatus) {
-        self.set('content.loadAllJobs', true);
-      }
-    });
+      var mapper = App.jobsMapper;
+      mapper.set('controller', this);
+      App.HttpClient.get(url, mapper,{
+        complete:function(jqXHR, textStatus) {
+          self.set('content.loadAllJobs', true);
+        }
+      });
+    } else {
+      var url = App.testMode ? '/data/apps/apps/'+ currentId +'.json' :
+        App.apiPrefix + "/jobhistory/app?workflowId=" + currentId;
+
+      var mapper = App.appsMapper;
+      mapper.set('controller', this);
+      App.HttpClient.get(url, mapper,{
+        complete:function(jqXHR, textStatus) {
+          self.set('content.loadAllJobs', true);
+        }
+      });
+    }
   }.observes('content')
 
 })

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/controllers/main/apps_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/apps_controller.js b/ambari-web/app/controllers/main/apps_controller.js
index 4a548ce..ba8a594 100644
--- a/ambari-web/app/controllers/main/apps_controller.js
+++ b/ambari-web/app/controllers/main/apps_controller.js
@@ -19,6 +19,7 @@
 var App = require('app');
 var misc = require('utils/misc');
 var date = require('utils/date');
+var stringUtils = require('utils/string_utils');
 
 App.MainAppsController = Em.ArrayController.extend({
 
@@ -48,7 +49,7 @@ App.MainAppsController = Em.ArrayController.extend({
     var self = this;
 
     //var runsUrl = App.testMode ? "/data/apps/runs.json" : App.apiPrefix + "/jobhistory/workflow?orderBy=startTime&sortDir=DESC&limit=" + App.maxRunsForAppBrowser;
-    var runsUrl = App.testMode ? "/data/apps/runs.json" : App.apiPrefix + this.get("runUrl");
+    var runsUrl = App.testMode ? "/data/apps/runs2.json" : App.apiPrefix + this.get("runUrl");
 
     App.HttpClient.get(runsUrl, App.runsMapper, {
       complete:function (jqXHR, textStatus) {
@@ -88,10 +89,6 @@ App.MainAppsController = Em.ArrayController.extend({
     sSearch_3:"",
     minJobs:"",
     maxJobs:"",
-    minInputBytes:"",
-    maxInputBytes:"",
-    minOutputBytes:"",
-    maxOutputBytes:"",
     minDuration:"",
     maxDuration:"",
     minStartTime:"",
@@ -101,6 +98,7 @@ App.MainAppsController = Em.ArrayController.extend({
     iDisplayStart:"",
     iSortCol_0:"",
     sSortDir_0:"",
+    tagSearch:"",
 
     allFilterActivated:false,
     filteredDisplayRecords:null,
@@ -114,11 +112,16 @@ App.MainAppsController = Em.ArrayController.extend({
     runType:"",
     onRunTypeChange:function(){
       if(this.runType == "MapReduce"){
-        this.set("sSearch_2","mr");
+        if (!App.testMode && stringUtils.compareVersions(App.get('currentStackVersionNumber'), "2.0") === -1)
+          this.set("sSearch_2","mr");
+        else
+          this.set("sSearch_2","mapreduce");
       }else if(this.runType == "Hive"){
         this.set("sSearch_2","hive");
       }else if(this.runType == "Pig"){
         this.set("sSearch_2","pig");
+      }else if(this.runType == "Yarn"){
+        this.set("sSearch_2","yarn");
       }else{
         this.set("sSearch_2","");
       }
@@ -135,26 +138,6 @@ App.MainAppsController = Em.ArrayController.extend({
     }.observes("jobs"),
 
     /**
-     * Direct binding to Input filter field
-     */
-    input:"",
-    onInputChange:function(){
-      var minMaxTmp = this.parseBandWidth(this.input);
-      this.set("minInputBytes", minMaxTmp.min);
-      this.set("maxInputBytes", minMaxTmp.max);
-    }.observes("input"),
-
-    /**
-     * Direct binding to Output filter field
-     */
-    output:"",
-    onOutputChange:function(){
-      var minMaxTmp = this.parseBandWidth(this.output);
-      this.set("minOutputBytes", minMaxTmp.min);
-      this.set("maxOutputBytes", minMaxTmp.max);
-    }.observes("output"),
-
-    /**
      * Direct binding to Duration filter field
      */
     duration:"",
@@ -320,10 +303,9 @@ App.MainAppsController = Em.ArrayController.extend({
 
       var arr = [
         "sSearch_0", "sSearch_1", "sSearch_2", "sSearch_3", "minJobs",
-        "maxJobs", "minInputBytes", "maxInputBytes", "minOutputBytes",
-        "maxOutputBytes", "minDuration", "maxDuration", "minStartTime",
+        "maxJobs", "minDuration", "maxDuration", "minStartTime",
         "maxStartTime", "sSearch", "iDisplayLength", "iDisplayStart",
-        "iSortCol_0", "sSortDir_0"
+        "iSortCol_0", "sSortDir_0", "tagSearch"
       ];
 
       var notFilterFields = ["iDisplayLength", "iDisplayStart", "iSortCol_0", "sSortDir_0"];
@@ -362,10 +344,9 @@ App.MainAppsController = Em.ArrayController.extend({
     obj.set("sSearch_3","");
     obj.set("runType","Any");
     obj.set("jobs","");
-    obj.set("input","");
-    obj.set("output","");
     obj.set("duration","");
     obj.set("runDate","Any");
+    obj.set("tagSearch","");
   },
 
 
@@ -403,10 +384,6 @@ App.MainAppsController = Em.ArrayController.extend({
       'filterObject.sSearch_3',
       'filterObject.minJobs',
       'filterObject.maxJobs',
-      'filterObject.minInputBytes',
-      'filterObject.maxInputBytes',
-      'filterObject.minOutputBytes',
-      'filterObject.maxOutputBytes',
       'filterObject.minDuration',
       'filterObject.maxDuration',
       'filterObject.minStartTime',
@@ -416,7 +393,8 @@ App.MainAppsController = Em.ArrayController.extend({
       'filterObject.iDisplayStart',
       'filterObject.iSortCol_0',
       'filterObject.sSortDir_0',
-      'filterObject.viewType'
+      'filterObject.viewType',
+      'filterObject.tagSearch'
   ),
 
   serverData: "",
@@ -435,16 +413,6 @@ App.MainAppsController = Em.ArrayController.extend({
           'min': '-',
           'max': '-'
         },
-        'input': {
-          'avg': '-',
-          'min': '-',
-          'max': '-'
-        },
-        'output': {
-          'avg': '-',
-          'min': '-',
-          'max': '-'
-        },
         'duration': {
           'avg': '-',
           'min': '-',
@@ -462,16 +430,6 @@ App.MainAppsController = Em.ArrayController.extend({
           'min': summary.jobs.min,
           'max': summary.jobs.max
         },
-        'input': {
-          'avg': misc.formatBandwidth(summary.input.avg),
-          'min': misc.formatBandwidth(summary.input.min),
-          'max': misc.formatBandwidth(summary.input.max)
-        },
-        'output': {
-          'avg': misc.formatBandwidth(summary.output.avg),
-          'min': misc.formatBandwidth(summary.output.min),
-          'max': misc.formatBandwidth(summary.output.max)
-        },
         'duration': {
           'avg': date.timingFormat(Math.round(summary.duration.avg)),
           'min': date.timingFormat(summary.duration.min),
@@ -493,11 +451,10 @@ App.MainAppsController = Em.ArrayController.extend({
       { name: Em.I18n.t('common.name'), index: 1 },
       { name: Em.I18n.t('common.type'), index: 2 },
       { name: Em.I18n.t('common.user'), index: 3 },
-      { name: Em.I18n.t('apps.avgTable.jobs'), index: 4 },
-      { name: Em.I18n.t('apps.avgTable.input'), index: 5 },
-      { name: Em.I18n.t('apps.avgTable.output'), index: 6 },
-      { name: Em.I18n.t('apps.avgTable.duration'), index: 7 },
-      { name: Em.I18n.t('apps.table.column.runDate'), index: 8 }
+      { name: Em.I18n.t('common.tags'), index: 4 },
+      { name: Em.I18n.t('apps.avgTable.jobs'), index: 5 },
+      { name: Em.I18n.t('apps.avgTable.duration'), index: 6 },
+      { name: Em.I18n.t('apps.table.column.runDate'), index: 7 }
     ]
   })
 

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/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 d8240f0..771aa66 100644
--- a/ambari-web/app/controllers/main/charts/heatmap.js
+++ b/ambari-web/app/controllers/main/charts/heatmap.js
@@ -61,6 +61,19 @@ App.MainChartsHeatmapController = Em.Controller.extend({
       );
     }
 
+    if (App.YARNService.find().get('length')) {
+      metrics.push(
+        Em.Object.create({
+          label: Em.I18n.t('charts.heatmap.category.yarn'),
+          category: 'yarn',
+          items: [
+            App.MainChartHeatmapYarnGCTimeMillisMetric.create(),
+            App.MainChartHeatmapYarnMemHeapUsedMetric.create()
+          ]
+        })
+      );
+    }
+
     if (App.HBaseService.find().get('length')) {
       metrics.push(
         Em.Object.create({

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn.js b/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn.js
new file mode 100644
index 0000000..299f00b
--- /dev/null
+++ b/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn.js
@@ -0,0 +1,63 @@
+/**
+ * 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');
+
+/**
+ * Base class for any YARN metric.
+ */
+App.MainChartHeatmapYarnMetrics = App.MainChartHeatmapMetric.extend({
+  metricUrlTemplate: "/clusters/{clusterName}/services/YARN/components/NODEMANAGER?fields=host_components/{metricName}",
+
+  /**
+   * Custom mapper for DFS metrics
+   */
+  metricMapper: function (json) {
+    var hostToValueMap = {};
+    var metricName = this.get('defaultMetric');
+    if (json.host_components) {
+      var props = metricName.split('.');
+      transformValueFunction = this.get('transformValue');
+      json.host_components.forEach(function (hc) {
+        var value = hc;
+        props.forEach(function (prop) {
+          if (value != null && prop in value) {
+            value = value[prop];
+          } else {
+            value = null;
+          }
+        });
+        if (value != null) {
+          if (transformValueFunction) {
+            value = transformValueFunction(value);
+          }
+          var hostName = hc.HostRoles.host_name;
+          hostToValueMap[hostName] = value;
+        }
+      });
+    }
+    return hostToValueMap;
+  },
+
+  /**
+   * Utility function which allows extending classes to transform the value
+   * assigned to a host.
+   *
+   * @type Function
+   */
+  tranformValue: null
+});

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_gctime.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_gctime.js b/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_gctime.js
new file mode 100644
index 0000000..10efe65
--- /dev/null
+++ b/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_gctime.js
@@ -0,0 +1,29 @@
+/**
+ * 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.MainChartHeatmapYarnGCTimeMillisMetric = App.MainChartHeatmapYarnMetrics.extend({
+  name: Em.I18n.t('charts.heatmap.metrics.YarnGCTime'),
+  maximumValue: 10000,
+  defaultMetric: 'metrics.jvm.gcTimeMillis',
+  units: ' ms',
+  slotDefinitionLabelSuffix: ' ms'
+});

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_memHeapUsed.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_memHeapUsed.js b/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_memHeapUsed.js
new file mode 100644
index 0000000..762c0bf
--- /dev/null
+++ b/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_memHeapUsed.js
@@ -0,0 +1,29 @@
+/**
+ * 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.MainChartHeatmapYarnMemHeapUsedMetric = App.MainChartHeatmapYarnMetrics.extend({
+  name: Em.I18n.t('charts.heatmap.metrics.YarnMemHeapUsed'),
+  maximumValue: 512,
+  defaultMetric: 'metrics.jvm.memHeapUsedM',
+  units: 'MB',
+  slotDefinitionLabelSuffix: 'MB'
+});


[08/14] AMBARI-2677. Merge from branch-1.4.0 (ncole)

Posted by nc...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HDFS/configuration/hadoop-policy.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HDFS/configuration/hadoop-policy.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HDFS/configuration/hadoop-policy.xml
new file mode 100644
index 0000000..6ec304d
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HDFS/configuration/hadoop-policy.xml
@@ -0,0 +1,134 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+
+<!--
+   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.
+-->
+
+<!-- Put site-specific property overrides in this file. -->
+
+<configuration>
+  <property>
+    <name>security.client.protocol.acl</name>
+    <value>*</value>
+    <description>ACL for ClientProtocol, which is used by user code
+    via the DistributedFileSystem.
+    The ACL is a comma-separated list of user and group names. The user and
+    group list is separated by a blank. For e.g. "alice,bob users,wheel".
+    A special value of "*" means all users are allowed.</description>
+  </property>
+
+  <property>
+    <name>security.client.datanode.protocol.acl</name>
+    <value>*</value>
+    <description>ACL for ClientDatanodeProtocol, the client-to-datanode protocol
+    for block recovery.
+    The ACL is a comma-separated list of user and group names. The user and
+    group list is separated by a blank. For e.g. "alice,bob users,wheel".
+    A special value of "*" means all users are allowed.</description>
+  </property>
+
+  <property>
+    <name>security.datanode.protocol.acl</name>
+    <value>*</value>
+    <description>ACL for DatanodeProtocol, which is used by datanodes to
+    communicate with the namenode.
+    The ACL is a comma-separated list of user and group names. The user and
+    group list is separated by a blank. For e.g. "alice,bob users,wheel".
+    A special value of "*" means all users are allowed.</description>
+  </property>
+
+  <property>
+    <name>security.inter.datanode.protocol.acl</name>
+    <value>*</value>
+    <description>ACL for InterDatanodeProtocol, the inter-datanode protocol
+    for updating generation timestamp.
+    The ACL is a comma-separated list of user and group names. The user and
+    group list is separated by a blank. For e.g. "alice,bob users,wheel".
+    A special value of "*" means all users are allowed.</description>
+  </property>
+
+  <property>
+    <name>security.namenode.protocol.acl</name>
+    <value>*</value>
+    <description>ACL for NamenodeProtocol, the protocol used by the secondary
+    namenode to communicate with the namenode.
+    The ACL is a comma-separated list of user and group names. The user and
+    group list is separated by a blank. For e.g. "alice,bob users,wheel".
+    A special value of "*" means all users are allowed.</description>
+  </property>
+
+  <property>
+    <name>security.inter.tracker.protocol.acl</name>
+    <value>*</value>
+    <description>ACL for InterTrackerProtocol, used by the tasktrackers to
+    communicate with the jobtracker.
+    The ACL is a comma-separated list of user and group names. The user and
+    group list is separated by a blank. For e.g. "alice,bob users,wheel".
+    A special value of "*" means all users are allowed.</description>
+  </property>
+
+  <property>
+    <name>security.job.submission.protocol.acl</name>
+    <value>*</value>
+    <description>ACL for JobSubmissionProtocol, used by job clients to
+    communciate with the jobtracker for job submission, querying job status etc.
+    The ACL is a comma-separated list of user and group names. The user and
+    group list is separated by a blank. For e.g. "alice,bob users,wheel".
+    A special value of "*" means all users are allowed.</description>
+  </property>
+
+  <property>
+    <name>security.task.umbilical.protocol.acl</name>
+    <value>*</value>
+    <description>ACL for TaskUmbilicalProtocol, used by the map and reduce
+    tasks to communicate with the parent tasktracker.
+    The ACL is a comma-separated list of user and group names. The user and
+    group list is separated by a blank. For e.g. "alice,bob users,wheel".
+    A special value of "*" means all users are allowed.</description>
+  </property>
+
+ <property>
+    <name>security.admin.operations.protocol.acl</name>
+    <value>hadoop</value>
+    <description>ACL for AdminOperationsProtocol. Used for admin commands.
+    The ACL is a comma-separated list of user and group names. The user and
+    group list is separated by a blank. For e.g. "alice,bob users,wheel".
+    A special value of "*" means all users are allowed.</description>
+  </property>
+
+  <property>
+    <name>security.refresh.usertogroups.mappings.protocol.acl</name>
+    <value>hadoop</value>
+    <description>ACL for RefreshUserMappingsProtocol. Used to refresh
+    users mappings. The ACL is a comma-separated list of user and
+    group names. The user and group list is separated by a blank. For
+    e.g. "alice,bob users,wheel".  A special value of "*" means all
+    users are allowed.</description>
+  </property>
+
+<property>
+    <name>security.refresh.policy.protocol.acl</name>
+    <value>hadoop</value>
+    <description>ACL for RefreshAuthorizationPolicyProtocol, used by the
+    dfsadmin and mradmin commands to refresh the security policy in-effect.
+    The ACL is a comma-separated list of user and group names. The user and
+    group list is separated by a blank. For e.g. "alice,bob users,wheel".
+    A special value of "*" means all users are allowed.</description>
+  </property>
+
+
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HDFS/configuration/hdfs-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HDFS/configuration/hdfs-site.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HDFS/configuration/hdfs-site.xml
new file mode 100644
index 0000000..10d58c5
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HDFS/configuration/hdfs-site.xml
@@ -0,0 +1,459 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+
+<!--
+   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.
+-->
+
+<!-- Put site-specific property overrides in this file. -->
+
+<configuration>
+
+<!-- file system properties -->
+
+  <property>
+    <name>dfs.name.dir</name>
+    <!-- cluster variant -->
+    <value></value>
+    <description>Determines where on the local filesystem the DFS name node
+      should store the name table.  If this is a comma-delimited list
+      of directories then the name table is replicated in all of the
+      directories, for redundancy. </description>
+    <final>true</final>
+  </property>
+
+  <property>
+    <name>dfs.support.append</name>
+    <value>true</value>
+    <description>to enable dfs append</description>
+    <final>true</final>
+  </property>
+
+  <property>
+    <name>dfs.webhdfs.enabled</name>
+    <value>true</value>
+    <description>to enable webhdfs</description>
+    <final>true</final>
+  </property>
+
+<!--
+ <property>
+    <name>dfs.datanode.socket.write.timeout</name>
+    <value>0</value>
+    <description>DFS Client write socket timeout</description>
+  </property>
+-->
+
+  <property>
+    <name>dfs.datanode.failed.volumes.tolerated</name>
+    <value>0</value>
+    <description>#of failed disks dn would tolerate</description>
+    <final>true</final>
+  </property>
+
+  <property>
+    <name>dfs.block.local-path-access.user</name>
+    <value>hbase</value>
+    <description>the user who is allowed to perform short
+    circuit reads.
+    </description>
+    <final>true</final>
+  </property>
+
+  <property>
+    <name>dfs.data.dir</name>
+    <value></value>
+    <description>Determines where on the local filesystem an DFS data node
+  should store its blocks.  If this is a comma-delimited
+  list of directories, then data will be stored in all named
+  directories, typically on different devices.
+  Directories that do not exist are ignored.
+  </description>
+    <final>true</final>
+  </property>
+
+  <property>
+    <name>dfs.hosts.exclude</name>
+    <value></value>
+    <description>Names a file that contains a list of hosts that are
+    not permitted to connect to the namenode.  The full pathname of the
+    file must be specified.  If the value is empty, no hosts are
+    excluded.</description>
+  </property>
+
+<!--
+  <property>
+    <name>dfs.hosts</name>
+    <value></value>
+    <description>Names a file that contains a list of hosts that are
+    permitted to connect to the namenode. The full pathname of the file
+    must be specified.  If the value is empty, all hosts are
+    permitted.</description>
+  </property>
+-->
+
+  <property>
+    <name>dfs.checksum.type</name>
+    <value>CRC32</value>
+    <description>The checksum method to be used by default. To maintain
+    compatibility, it is being set to CRC32. Once all migration steps
+    are complete, we can change it to CRC32C and take advantage of the
+    additional performance benefit.</description>
+  </property>
+
+  <property>
+    <name>dfs.replication.max</name>
+    <value>50</value>
+    <description>Maximal block replication.
+  </description>
+  </property>
+
+  <property>
+    <name>dfs.replication</name>
+    <value>3</value>
+    <description>Default block replication.
+  </description>
+  </property>
+
+  <property>
+    <name>dfs.heartbeat.interval</name>
+    <value>3</value>
+    <description>Determines datanode heartbeat interval in seconds.</description>
+  </property>
+
+  <property>
+    <name>dfs.heartbeat.interval</name>
+    <value>3</value>
+    <description>Determines datanode heartbeat interval in seconds.</description>
+  </property>
+
+  <property>
+    <name>dfs.safemode.threshold.pct</name>
+    <value>1.0f</value>
+    <description>
+        Specifies the percentage of blocks that should satisfy
+        the minimal replication requirement defined by dfs.replication.min.
+        Values less than or equal to 0 mean not to start in safe mode.
+        Values greater than 1 will make safe mode permanent.
+        </description>
+  </property>
+
+  <property>
+    <name>dfs.balance.bandwidthPerSec</name>
+    <value>6250000</value>
+    <description>
+        Specifies the maximum amount of bandwidth that each datanode
+        can utilize for the balancing purpose in term of
+        the number of bytes per second.
+  </description>
+  </property>
+
+  <property>
+    <name>dfs.datanode.address</name>
+    <value>0.0.0.0:50010</value>
+  </property>
+
+  <property>
+    <name>dfs.datanode.http.address</name>
+    <value>0.0.0.0:50075</value>
+  </property>
+
+  <property>
+    <name>dfs.block.size</name>
+    <value>134217728</value>
+    <description>The default block size for new files.</description>
+  </property>
+
+  <property>
+    <name>dfs.http.address</name>
+    <value></value>
+<description>The name of the default file system.  Either the
+literal string "local" or a host:port for NDFS.</description>
+<final>true</final>
+</property>
+
+<property>
+<name>dfs.datanode.du.reserved</name>
+<!-- cluster variant -->
+<value>1073741824</value>
+<description>Reserved space in bytes per volume. Always leave this much space free for non dfs use.
+</description>
+</property>
+
+<property>
+<name>dfs.datanode.ipc.address</name>
+<value>0.0.0.0:8010</value>
+<description>
+The datanode ipc server address and port.
+If the port is 0 then the server will start on a free port.
+</description>
+</property>
+
+<property>
+<name>dfs.blockreport.initialDelay</name>
+<value>120</value>
+<description>Delay for first block report in seconds.</description>
+</property>
+
+<property>
+<name>dfs.datanode.du.pct</name>
+<value>0.85f</value>
+<description>When calculating remaining space, only use this percentage of the real available space
+</description>
+</property>
+
+<property>
+<name>dfs.namenode.handler.count</name>
+<value>40</value>
+<description>The number of server threads for the namenode.</description>
+</property>
+
+<property>
+<name>dfs.datanode.max.xcievers</name>
+<value>1024</value>
+<description>PRIVATE CONFIG VARIABLE</description>
+</property>
+
+<!-- Permissions configuration -->
+
+<property>
+<name>dfs.umaskmode</name>
+<value>022</value>
+<description>
+The octal umask used when creating files and directories.
+</description>
+</property>
+
+<property>
+<name>dfs.web.ugi</name>
+<!-- cluster variant -->
+<value>gopher,gopher</value>
+<description>The user account used by the web interface.
+Syntax: USERNAME,GROUP1,GROUP2, ...
+</description>
+</property>
+
+<property>
+<name>dfs.permissions</name>
+<value>true</value>
+<description>
+If "true", enable permission checking in HDFS.
+If "false", permission checking is turned off,
+but all other behavior is unchanged.
+Switching from one parameter value to the other does not change the mode,
+owner or group of files or directories.
+</description>
+</property>
+
+<property>
+<name>dfs.permissions.supergroup</name>
+<value>hdfs</value>
+<description>The name of the group of super-users.</description>
+</property>
+
+<property>
+<name>dfs.namenode.handler.count</name>
+<value>100</value>
+<description>Added to grow Queue size so that more client connections are allowed</description>
+</property>
+
+<property>
+<name>ipc.server.max.response.size</name>
+<value>5242880</value>
+</property>
+<property>
+<name>dfs.block.access.token.enable</name>
+<value>true</value>
+<description>
+If "true", access tokens are used as capabilities for accessing datanodes.
+If "false", no access tokens are checked on accessing datanodes.
+</description>
+</property>
+
+<property>
+<name>dfs.namenode.kerberos.principal</name>
+<value></value>
+<description>
+Kerberos principal name for the NameNode
+</description>
+</property>
+
+<property>
+<name>dfs.secondary.namenode.kerberos.principal</name>
+<value></value>
+    <description>
+        Kerberos principal name for the secondary NameNode.
+    </description>
+  </property>
+
+
+<!--
+  This is KRB DOMAIN specific. The FQDN of the namenode has to be mentioned.
+-->
+  <property>
+    <name>dfs.namenode.kerberos.https.principal</name>
+    <value></value>
+     <description>The Kerberos principal for the host that the NameNode runs on.</description>
+
+  </property>
+
+  <property>
+    <name>dfs.secondary.namenode.kerberos.https.principal</name>
+    <value></value>
+    <description>The Kerberos principal for the hostthat the secondary NameNode runs on.</description>
+
+  </property>
+
+  <property>
+    <!-- cluster variant -->
+    <name>dfs.secondary.http.address</name>
+    <value></value>
+    <description>Address of secondary namenode web server</description>
+  </property>
+
+  <property>
+    <name>dfs.secondary.https.port</name>
+    <value>50490</value>
+    <description>The https port where secondary-namenode binds</description>
+  </property>
+
+  <property>
+    <name>dfs.web.authentication.kerberos.principal</name>
+    <value></value>
+    <description>
+      The HTTP Kerberos principal used by Hadoop-Auth in the HTTP endpoint.
+      The HTTP Kerberos principal MUST start with 'HTTP/' per Kerberos
+      HTTP SPENGO specification.
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.web.authentication.kerberos.keytab</name>
+    <value></value>
+    <description>
+      The Kerberos keytab file with the credentials for the
+      HTTP Kerberos principal used by Hadoop-Auth in the HTTP endpoint.
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.datanode.kerberos.principal</name>
+    <value></value>
+ <description>
+        The Kerberos principal that the DataNode runs as. "_HOST" is replaced by the real host name.
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.namenode.keytab.file</name>
+    <value></value>
+ <description>
+        Combined keytab file containing the namenode service and host principals.
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.secondary.namenode.keytab.file</name>
+    <value></value>
+  <description>
+        Combined keytab file containing the namenode service and host principals.
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.datanode.keytab.file</name>
+    <value></value>
+ <description>
+        The filename of the keytab file for the DataNode.
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.https.port</name>
+    <value>50470</value>
+ <description>The https port where namenode binds</description>
+
+  </property>
+
+  <property>
+    <name>dfs.https.address</name>
+    <value></value>
+  <description>The https address where namenode binds</description>
+
+  </property>
+
+  <property>
+    <name>dfs.datanode.data.dir.perm</name>
+    <value>750</value>
+<description>The permissions that should be there on dfs.data.dir
+directories. The datanode will not come up if the permissions are
+different on existing dfs.data.dir directories. If the directories
+don't exist, they will be created with this permission.</description>
+  </property>
+
+  <property>
+    <name>dfs.access.time.precision</name>
+    <value>0</value>
+    <description>The access time for HDFS file is precise upto this value.
+                 The default value is 1 hour. Setting a value of 0 disables
+                 access times for HDFS.
+    </description>
+  </property>
+
+  <property>
+   <name>dfs.cluster.administrators</name>
+   <value> hdfs</value>
+   <description>ACL for who all can view the default servlets in the HDFS</description>
+  </property>
+
+  <property>
+    <name>ipc.server.read.threadpool.size</name>
+    <value>5</value>
+    <description></description>
+  </property>
+
+  <property>
+    <name>dfs.namenode.avoid.read.stale.datanode</name>
+    <value>true</value>
+    <description>
+      Indicate whether or not to avoid reading from stale datanodes whose
+      heartbeat messages have not been received by the namenode for more than a
+      specified time interval.
+    </description>
+  </property>
+  <property>
+    <name>dfs.namenode.avoid.write.stale.datanode</name>
+    <value>true</value>
+    <description>
+      Indicate whether or not to avoid writing to stale datanodes whose
+      heartbeat messages have not been received by the namenode for more than a
+      specified time interval.
+    </description>
+  </property>
+  <property>
+    <name>dfs.namenode.write.stale.datanode.ratio</name>
+    <value>1.0f</value>
+    <description>When the ratio of number stale datanodes to total datanodes marked is greater
+      than this ratio, stop avoiding writing to stale nodes so as to prevent causing hotspots.
+    </description>
+  </property>
+  <property>
+    <name>dfs.namenode.stale.datanode.interval</name>
+    <value>30000</value>
+    <description>Datanode is stale after not getting a heartbeat in this interval in ms</description>
+  </property>
+
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HDFS/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HDFS/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HDFS/metainfo.xml
new file mode 100644
index 0000000..8514121
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HDFS/metainfo.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <user>root</user>
+    <comment>Apache Hadoop Distributed File System</comment>
+    <version>2.1.0.2.0.3.0</version>
+
+    <components>
+        <component>
+            <name>NAMENODE</name>
+            <category>MASTER</category>
+        </component>
+
+        <component>
+            <name>DATANODE</name>
+            <category>SLAVE</category>
+        </component>
+
+        <component>
+            <name>SECONDARY_NAMENODE</name>
+            <category>MASTER</category>
+        </component>
+
+        <component>
+            <name>HDFS_CLIENT</name>
+            <category>CLIENT</category>
+        </component>
+    </components>
+
+
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HIVE/configuration/hive-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HIVE/configuration/hive-site.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HIVE/configuration/hive-site.xml
new file mode 100644
index 0000000..cd72625
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HIVE/configuration/hive-site.xml
@@ -0,0 +1,253 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+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.
+-->
+
+<configuration>
+  <property>
+    <name>hive.metastore.local</name>
+    <value>false</value>
+    <description>controls whether to connect to remove metastore server or
+    open a new metastore server in Hive Client JVM</description>
+  </property>
+
+  <property>
+    <name>javax.jdo.option.ConnectionURL</name>
+    <value></value>
+    <description>JDBC connect string for a JDBC metastore</description>
+  </property>
+
+  <property>
+    <name>javax.jdo.option.ConnectionDriverName</name>
+    <value>com.mysql.jdbc.Driver</value>
+    <description>Driver class name for a JDBC metastore</description>
+  </property>
+
+  <property>
+    <name>javax.jdo.option.ConnectionUserName</name>
+    <value></value>
+    <description>username to use against metastore database</description>
+  </property>
+
+  <property>
+    <name>javax.jdo.option.ConnectionPassword</name>
+    <value></value>
+    <description>password to use against metastore database</description>
+  </property>
+
+  <property>
+    <name>hive.metastore.warehouse.dir</name>
+    <value>/apps/hive/warehouse</value>
+    <description>location of default database for the warehouse</description>
+  </property>
+
+  <property>
+    <name>hive.metastore.sasl.enabled</name>
+    <value></value>
+    <description>If true, the metastore thrift interface will be secured with SASL.
+     Clients must authenticate with Kerberos.</description>
+  </property>
+
+  <property>
+    <name>hive.metastore.kerberos.keytab.file</name>
+    <value></value>
+    <description>The path to the Kerberos Keytab file containing the metastore
+     thrift server's service principal.</description>
+  </property>
+
+  <property>
+    <name>hive.metastore.kerberos.principal</name>
+    <value></value>
+    <description>The service principal for the metastore thrift server. The special
+    string _HOST will be replaced automatically with the correct host name.</description>
+  </property>
+
+  <property>
+    <name>hive.metastore.cache.pinobjtypes</name>
+    <value>Table,Database,Type,FieldSchema,Order</value>
+    <description>List of comma separated metastore object types that should be pinned in the cache</description>
+  </property>
+
+  <property>
+    <name>hive.metastore.uris</name>
+    <value></value>
+    <description>URI for client to contact metastore server</description>
+  </property>
+
+  <property>
+    <name>hive.semantic.analyzer.factory.impl</name>
+    <value>org.apache.hivealog.cli.HCatSemanticAnalyzerFactory</value>
+    <description>controls which SemanticAnalyzerFactory implemenation class is used by CLI</description>
+  </property>
+
+  <property>
+    <name>hadoop.clientside.fs.operations</name>
+    <value>true</value>
+    <description>FS operations are owned by client</description>
+  </property>
+
+  <property>
+    <name>hive.metastore.client.socket.timeout</name>
+    <value>60</value>
+    <description>MetaStore Client socket timeout in seconds</description>
+  </property>
+
+  <property>
+    <name>hive.metastore.execute.setugi</name>
+    <value>true</value>
+    <description>In unsecure mode, setting this property to true will cause the metastore to execute DFS operations using the client's reported user and group permissions. Note that this property must be set on both the client and     server sides. Further note that its best effort. If client sets its to true and server sets it to false, client setting will be ignored.</description>
+  </property>
+
+  <property>
+    <name>hive.security.authorization.enabled</name>
+    <value>false</value>
+    <description>enable or disable the hive client authorization</description>
+  </property>
+
+  <property>
+    <name>hive.security.authorization.manager</name>
+    <value>org.apache.hadoop.hive.ql.security.authorization.DefaultHiveAuthorizationProvider</value>
+    <description>the hive client authorization manager class name.
+    The user defined authorization class should implement interface org.apache.hadoop.hive.ql.security.authorization.HiveAuthorizationProvider.  </description>
+  </property>
+
+  <property>
+    <name>hive.server2.enable.doAs</name>
+    <value>true</value>
+  </property>
+
+  <property>
+    <name>fs.hdfs.impl.disable.cache</name>
+    <value>true</value>
+  </property>
+
+  <property>
+    <name>fs.file.impl.disable.cache</name>
+    <value>true</value>
+  </property>
+
+  <property>
+    <name>hive.enforce.bucketing</name>
+    <value>true</value>
+    <description>Whether bucketing is enforced. If true, while inserting into the table, bucketing is enforced.</description>
+  </property>
+
+  <property>
+    <name>hive.enforce.sorting</name>
+    <value>true</value>
+    <description>Whether sorting is enforced. If true, while inserting into the table, sorting is enforced.</description>
+  </property>
+
+  <property>
+    <name>hive.map.aggr</name>
+    <value>true</value>
+    <description>Whether to use map-side aggregation in Hive Group By queries.</description>
+  </property>
+
+  <property>
+    <name>hive.optimize.bucketmapjoin</name>
+    <value>true</value>
+  </property>
+
+  <property>
+    <name>hive.optimize.bucketmapjoin.sortedmerge</name>
+    <value>true</value>
+  </property>
+
+  <property>
+    <name>hive.mapred.reduce.tasks.speculative.execution</name>
+    <value>false</value>
+    <description>Whether speculative execution for reducers should be turned on.</description>
+  </property>
+
+  <property>
+    <name>hive.auto.convert.join</name>
+    <value>true</value>
+    <description>Whether Hive enable the optimization about converting common
+      join into mapjoin based on the input file size.</description>
+  </property>
+
+  <property>
+    <name>hive.auto.convert.sortmerge.join</name>
+    <value>true</value>
+    <description>Will the join be automatically converted to a sort-merge join, if the joined tables pass
+      the criteria for sort-merge join.
+    </description>
+  </property>
+
+  <property>
+    <name>hive.auto.convert.sortmerge.join.noconditionaltask</name>
+    <value>true</value>
+  </property>
+
+  <property>
+    <name>hive.auto.convert.join.noconditionaltask</name>
+    <value>true</value>
+    <description>Whether Hive enable the optimization about converting common join into mapjoin based on the input file
+      size. If this paramater is on, and the sum of size for n-1 of the tables/partitions for a n-way join is smaller than the
+      specified size, the join is directly converted to a mapjoin (there is no conditional task).
+    </description>
+  </property>
+
+  <property>
+    <name>hive.auto.convert.join.noconditionaltask.size</name>
+    <value>1000000000</value>
+    <description>If hive.auto.convert.join.noconditionaltask is off, this parameter does not take affect. However, if it
+      is on, and the sum of size for n-1 of the tables/partitions for a n-way join is smaller than this size, the join is directly
+      converted to a mapjoin(there is no conditional task). The default is 10MB.
+    </description>
+  </property>
+
+  <property>
+    <name>hive.optimize.reducededuplication.min.reducer</name>
+    <value>1</value>
+    <description>Reduce deduplication merges two RSs by moving key/parts/reducer-num of the child RS to parent RS.
+      That means if reducer-num of the child RS is fixed (order by or forced bucketing) and small, it can make very slow, single MR.
+      The optimization will be disabled if number of reducers is less than specified value.
+    </description>
+  </property>
+
+  <property>
+    <name>hive.optimize.mapjoin.mapreduce</name>
+    <value>true</value>
+    <description>If hive.auto.convert.join is off, this parameter does not take
+      affect. If it is on, and if there are map-join jobs followed by a map-reduce
+      job (for e.g a group by), each map-only job is merged with the following
+      map-reduce job.
+    </description>
+  </property>
+
+  <property>
+    <name>hive.mapjoin.bucket.cache.size</name>
+    <value>10000</value>
+    <description>
+      Size per reducer.The default is 1G, i.e if the input size is 10G, it
+      will use 10 reducers.
+    </description>
+  </property>
+
+  <property>
+    <name>hive.vectorized.execution.enabled</name>
+    <value>false</value>
+  </property>
+
+  <property>
+    <name>hive.optimize.reducededuplication</name>
+    <value>true</value>
+  </property>
+
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HIVE/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HIVE/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HIVE/metainfo.xml
new file mode 100644
index 0000000..5c4f269
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/HIVE/metainfo.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <user>root</user>
+    <comment>Data warehouse system for ad-hoc queries &amp; analysis of large datasets and table &amp; storage management service</comment>
+    <version>0.11.0.2.0.3.0</version>
+
+    <components>        
+        <component>
+            <name>HIVE_METASTORE</name>
+            <category>MASTER</category>
+        </component>
+        <component>
+            <name>HIVE_SERVER</name>
+            <category>MASTER</category>
+        </component>
+        <component>
+            <name>MYSQL_SERVER</name>
+            <category>MASTER</category>
+        </component>
+        <component>
+            <name>HIVE_CLIENT</name>
+            <category>CLIENT</category>
+        </component>
+    </components>
+
+
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/MAPREDUCE2/configuration/container-executor.cfg
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/MAPREDUCE2/configuration/container-executor.cfg b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/MAPREDUCE2/configuration/container-executor.cfg
new file mode 100644
index 0000000..502ddaa
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/MAPREDUCE2/configuration/container-executor.cfg
@@ -0,0 +1,20 @@
+#
+# 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.
+#
+yarn.nodemanager.local-dirs=TODO-YARN-LOCAL-DIR
+yarn.nodemanager.linux-container-executor.group=hadoop
+yarn.nodemanager.log-dirs=TODO-YARN-LOG-DIR
+banned.users=hfds,bin,0

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/MAPREDUCE2/configuration/core-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/MAPREDUCE2/configuration/core-site.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/MAPREDUCE2/configuration/core-site.xml
new file mode 100644
index 0000000..3a2af49
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/MAPREDUCE2/configuration/core-site.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+   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.
+-->
+<configuration>
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/MAPREDUCE2/configuration/global.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/MAPREDUCE2/configuration/global.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/MAPREDUCE2/configuration/global.xml
new file mode 100644
index 0000000..ceedd56
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/MAPREDUCE2/configuration/global.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+/**
+ * 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.
+ */
+-->
+
+<configuration>
+  <property>
+    <name>hs_host</name>
+    <value></value>
+    <description>History Server.</description>
+  </property>
+  <property>
+    <name>mapred_log_dir_prefix</name>
+    <value>/var/log/hadoop-mapreduce</value>
+    <description>Mapreduce Log Dir Prefix</description>
+  </property>
+  <property>
+    <name>mapred_pid_dir_prefix</name>
+    <value>/var/run/hadoop-mapreduce</value>
+    <description>Mapreduce PID Dir Prefix</description>
+  </property>
+  <property>
+    <name>mapred_user</name>
+    <value>mapred</value>
+    <description>Mapreduce User</description>
+  </property>
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/MAPREDUCE2/configuration/mapred-queue-acls.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/MAPREDUCE2/configuration/mapred-queue-acls.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/MAPREDUCE2/configuration/mapred-queue-acls.xml
new file mode 100644
index 0000000..ce12380
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/MAPREDUCE2/configuration/mapred-queue-acls.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+
+<!--
+   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.
+-->
+
+<!-- mapred-queue-acls.xml -->
+<configuration>
+
+
+<!-- queue default -->
+
+  <property>
+    <name>mapred.queue.default.acl-submit-job</name>
+    <value>*</value>
+  </property>
+
+  <property>
+    <name>mapred.queue.default.acl-administer-jobs</name>
+    <value>*</value>
+  </property>
+
+  <!-- END ACLs -->
+
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/MAPREDUCE2/configuration/mapred-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/MAPREDUCE2/configuration/mapred-site.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/MAPREDUCE2/configuration/mapred-site.xml
new file mode 100644
index 0000000..7ac882d
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/MAPREDUCE2/configuration/mapred-site.xml
@@ -0,0 +1,300 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+
+<!--
+   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.
+-->
+
+<!-- Put site-specific property overrides in this file. -->
+
+<configuration xmlns:xi="http://www.w3.org/2001/XInclude">
+
+<!-- i/o properties -->
+
+  <property>
+    <name>io.sort.mb</name>
+    <value>100</value>
+    <description>No description</description>
+  </property>
+
+  <property>
+    <name>io.sort.record.percent</name>
+    <value>.2</value>
+    <description>No description</description>
+  </property>
+
+  <property>
+    <name>io.sort.spill.percent</name>
+    <value>0.1</value>
+    <description>No description</description>
+  </property>
+
+  <property>
+    <name>io.sort.factor</name>
+    <value>100</value>
+    <description>No description</description>
+  </property>
+
+<!-- map/reduce properties -->
+
+  <property>
+    <name>mapred.system.dir</name>
+    <value></value>
+    <description>No description</description>
+    <final>true</final>
+  </property>
+
+  <property>
+    <!-- cluster specific -->
+    <name>mapred.local.dir</name>
+    <value></value>
+    <description>No description</description>
+    <final>true</final>
+  </property>
+
+  <property>
+    <name>mapred.reduce.parallel.copies</name>
+    <value>30</value>
+    <description>No description</description>
+  </property>
+
+  <property>
+    <name>mapred.tasktracker.map.tasks.maximum</name>
+    <value></value>
+    <description>No description</description>
+  </property>
+
+  <property>
+    <name>mapred.map.tasks.speculative.execution</name>
+    <value>false</value>
+    <description>If true, then multiple instances of some map tasks
+               may be executed in parallel.</description>
+  </property>
+
+  <property>
+    <name>mapred.reduce.tasks.speculative.execution</name>
+    <value>false</value>
+    <description>If true, then multiple instances of some reduce tasks
+               may be executed in parallel.</description>
+  </property>
+
+  <property>
+    <name>mapred.reduce.slowstart.completed.maps</name>
+    <value>0.05</value>
+  </property>
+
+  <property>
+    <name>mapred.inmem.merge.threshold</name>
+    <value>1000</value>
+    <description>The threshold, in terms of the number of files
+  for the in-memory merge process. When we accumulate threshold number of files
+  we initiate the in-memory merge and spill to disk. A value of 0 or less than
+  0 indicates we want to DON'T have any threshold and instead depend only on
+  the ramfs's memory consumption to trigger the merge.
+  </description>
+  </property>
+
+  <property>
+    <name>mapred.job.shuffle.merge.percent</name>
+    <value>0.66</value>
+    <description>The usage threshold at which an in-memory merge will be
+  initiated, expressed as a percentage of the total memory allocated to
+  storing in-memory map outputs, as defined by
+  mapred.job.shuffle.input.buffer.percent.
+  </description>
+  </property>
+
+  <property>
+    <name>mapred.job.shuffle.input.buffer.percent</name>
+    <value>0.7</value>
+    <description>The percentage of memory to be allocated from the maximum heap
+  size to storing map outputs during the shuffle.
+  </description>
+  </property>
+
+  <property>
+    <name>mapred.map.output.compression.codec</name>
+    <value></value>
+    <description>If the map outputs are compressed, how should they be
+      compressed
+    </description>
+  </property>
+
+<property>
+  <name>mapred.output.compression.type</name>
+  <value>BLOCK</value>
+  <description>If the job outputs are to compressed as SequenceFiles, how should
+               they be compressed? Should be one of NONE, RECORD or BLOCK.
+  </description>
+</property>
+
+  <property>
+    <name>mapred.job.reduce.input.buffer.percent</name>
+    <value>0.0</value>
+    <description>The percentage of memory- relative to the maximum heap size- to
+  retain map outputs during the reduce. When the shuffle is concluded, any
+  remaining map outputs in memory must consume less than this threshold before
+  the reduce can begin.
+  </description>
+  </property>
+
+ <property>
+  <name>mapreduce.reduce.input.limit</name>
+  <value>10737418240</value>
+  <description>The limit on the input size of the reduce. (This value
+  is 10 Gb.)  If the estimated input size of the reduce is greater than
+  this value, job is failed. A value of -1 means that there is no limit
+  set. </description>
+</property>
+
+
+  <!-- copied from kryptonite configuration -->
+  <property>
+    <name>mapred.compress.map.output</name>
+    <value></value>
+  </property>
+
+
+  <property>
+    <name>mapred.task.timeout</name>
+    <value>600000</value>
+    <description>The number of milliseconds before a task will be
+  terminated if it neither reads an input, writes an output, nor
+  updates its status string.
+  </description>
+  </property>
+
+  <property>
+    <name>jetty.connector</name>
+    <value>org.mortbay.jetty.nio.SelectChannelConnector</value>
+    <description>No description</description>
+  </property>
+
+  <property>
+    <name>mapred.child.root.logger</name>
+    <value>INFO,TLA</value>
+  </property>
+
+  <property>
+    <name>mapred.child.java.opts</name>
+    <value>-Xmx512m</value>
+    <description>No description</description>
+  </property>
+
+  <property>
+    <name>mapred.cluster.reduce.memory.mb</name>
+    <value>2048</value>
+  </property>
+
+  <property>
+    <name>mapred.job.map.memory.mb</name>
+    <value>1536</value>
+  </property>
+
+  <property>
+    <name>mapred.job.reduce.memory.mb</name>
+    <value>1024</value>
+  </property>
+
+  <property>
+    <name>mapred.max.tracker.blacklists</name>
+    <value>16</value>
+    <description>
+      if node is reported blacklisted by 16 successful jobs within timeout-window, it will be graylisted
+    </description>
+  </property>
+
+  <property>
+    <name>mapred.healthChecker.script.path</name>
+    <value></value>
+  </property>
+
+  <property>
+    <name>mapred.healthChecker.script.timeout</name>
+    <value>60000</value>
+  </property>
+
+  <property>
+    <name>mapred.task.maxvmem</name>
+    <value></value>
+    <final>true</final>
+    <description>No description</description>
+  </property>
+
+  <property>
+    <name>mapreduce.fileoutputcommitter.marksuccessfuljobs</name>
+    <value>false</value>
+  </property>
+
+  <property>
+    <name>mapreduce.tasktracker.keytab.file</name>
+    <value></value>
+    <description>The filename of the keytab for the task tracker</description>
+  </property>
+
+  <property>
+    <name>mapreduce.jobtracker.split.metainfo.maxsize</name>
+    <value>50000000</value>
+    <final>true</final>
+     <description>If the size of the split metainfo file is larger than this, the JobTracker will fail the job during
+    initialize.
+   </description>
+  </property>
+
+ <property>
+   <name>mapreduce.jobhistory.keytab.file</name>
+    <!-- cluster variant -->
+   <value></value>
+   <description>The keytab for the job history server principal.</description>
+ </property>
+
+<property>
+  <name>mapreduce.shuffle.port</name>
+  <value>8081</value>
+  <description>Default port that the ShuffleHandler will run on. ShuffleHandler is a service run at the NodeManager to facilitate transfers of intermediate Map outputs to requesting Reducers.</description>
+</property>
+
+<property>
+  <name>mapreduce.jobhistory.intermediate-done-dir</name>
+  <value>/mr-history/tmp</value>
+  <description>Directory where history files are written by MapReduce jobs.</description>
+</property>
+
+<property>
+  <name>mapreduce.jobhistory.done-dir</name>
+  <value>/mr-history/done</value>
+  <description>Directory where history files are managed by the MR JobHistory Server.</description>
+</property>
+
+<property>       
+  <name>mapreduce.jobhistory.address</name>       
+  <value>localhost:10020</value>  
+  <description>Enter your JobHistoryServer hostname.</description>
+</property>
+
+<property>       
+  <name>mapreduce.jobhistory.webapp.address</name>       
+  <value>localhost:19888</value>  
+  <description>Enter your JobHistoryServer hostname.</description>
+</property>
+
+<property>
+  <name>mapreduce.framework.name</name>
+  <value>yarn</value>
+  <description>No description</description>
+</property>
+
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/MAPREDUCE2/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/MAPREDUCE2/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/MAPREDUCE2/metainfo.xml
new file mode 100644
index 0000000..e81b8a5
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/MAPREDUCE2/metainfo.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <user>mapred</user>
+    <comment>Apache Hadoop NextGen MapReduce (client libraries)</comment>
+    <version>2.1.0.2.0.3.0</version>
+    <components>
+        <component>
+            <name>HISTORYSERVER</name>
+            <category>MASTER</category>
+        </component>
+        <component>
+            <name>MAPREDUCE2_CLIENT</name>
+            <category>CLIENT</category>
+        </component>
+    </components>
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/NAGIOS/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/NAGIOS/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/NAGIOS/metainfo.xml
new file mode 100644
index 0000000..bd7de07
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/NAGIOS/metainfo.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <user>root</user>
+    <comment>Nagios Monitoring and Alerting system</comment>
+    <version>3.2.3</version>
+
+    <components>
+        <component>
+            <name>NAGIOS_SERVER</name>
+            <category>MASTER</category>
+        </component>
+    </components>
+
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/OOZIE/configuration/oozie-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/OOZIE/configuration/oozie-site.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/OOZIE/configuration/oozie-site.xml
new file mode 100644
index 0000000..1665ba8
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/OOZIE/configuration/oozie-site.xml
@@ -0,0 +1,245 @@
+<?xml version="1.0"?>
+<!--
+  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.
+-->     
+
+<configuration>
+
+<!--
+    Refer to the oozie-default.xml file for the complete list of
+    Oozie configuration properties and their default values.
+-->
+  <property>
+    <name>oozie.base.url</name>
+    <value>http://localhost:11000/oozie</value>
+    <description>Base Oozie URL.</description>
+   </property>
+
+  <property>
+    <name>oozie.system.id</name>
+    <value>oozie-${user.name}</value>
+    <description>
+    The Oozie system ID.
+    </description>
+   </property>
+
+   <property>
+     <name>oozie.systemmode</name>
+     <value>NORMAL</value>
+     <description>
+     System mode for  Oozie at startup.
+     </description>
+   </property>
+
+   <property>
+     <name>oozie.service.AuthorizationService.security.enabled</name>
+     <value>true</value>
+     <description>
+     Specifies whether security (user name/admin role) is enabled or not.
+     If disabled any user can manage Oozie system and manage any job.
+     </description>
+   </property>
+
+   <property>
+     <name>oozie.service.PurgeService.older.than</name>
+     <value>30</value>
+     <description>
+     Jobs older than this value, in days, will be purged by the PurgeService.
+     </description>
+   </property>
+
+   <property>
+     <name>oozie.service.PurgeService.purge.interval</name>
+     <value>3600</value>
+     <description>
+     Interval at which the purge service will run, in seconds.
+     </description>
+   </property>
+
+   <property>
+     <name>oozie.service.CallableQueueService.queue.size</name>
+     <value>1000</value>
+     <description>Max callable queue size</description>
+   </property>
+
+   <property>
+     <name>oozie.service.CallableQueueService.threads</name>
+     <value>10</value>
+     <description>Number of threads used for executing callables</description>
+   </property>
+
+   <property>
+     <name>oozie.service.CallableQueueService.callable.concurrency</name>
+     <value>3</value>
+     <description>
+     Maximum concurrency for a given callable type.
+     Each command is a callable type (submit, start, run, signal, job, jobs, suspend,resume, etc).
+     Each action type is a callable type (Map-Reduce, Pig, SSH, FS, sub-workflow, etc).
+     All commands that use action executors (action-start, action-end, action-kill and action-check) use
+     the action type as the callable type.
+     </description>
+   </property>
+
+   <property>
+     <name>oozie.service.coord.normal.default.timeout</name>
+     <value>120</value>
+     <description>Default timeout for a coordinator action input check (in minutes) for normal job.
+      -1 means infinite timeout</description>
+   </property>
+
+   <property>
+     <name>oozie.db.schema.name</name>
+     <value>oozie</value>
+     <description>
+      Oozie DataBase Name
+     </description>
+   </property>
+
+    <property>
+      <name>oozie.service.HadoopAccessorService.jobTracker.whitelist</name>
+      <value> </value>
+      <description>
+      Whitelisted job tracker for Oozie service.
+      </description>
+    </property>
+   
+    <property>
+      <name>oozie.authentication.type</name>
+      <value>simple</value>
+      <description>
+      </description>
+    </property>
+   
+    <property>
+      <name>oozie.service.HadoopAccessorService.nameNode.whitelist</name>
+      <value> </value>
+      <description>
+      </description>
+    </property>
+
+    <property>
+      <name>oozie.service.WorkflowAppService.system.libpath</name>
+      <value>/user/${user.name}/share/lib</value>
+      <description>
+      System library path to use for workflow applications.
+      This path is added to workflow application if their job properties sets
+      the property 'oozie.use.system.libpath' to true.
+      </description>
+    </property>
+
+    <property>
+      <name>use.system.libpath.for.mapreduce.and.pig.jobs</name>
+      <value>false</value>
+      <description>
+      If set to true, submissions of MapReduce and Pig jobs will include
+      automatically the system library path, thus not requiring users to
+      specify where the Pig JAR files are. Instead, the ones from the system
+      library path are used.
+      </description>
+    </property>
+    <property>
+      <name>oozie.authentication.kerberos.name.rules</name>
+      <value>
+        RULE:[2:$1@$0]([jt]t@.*TODO-KERBEROS-DOMAIN)s/.*/TODO-MAPREDUSER/
+        RULE:[2:$1@$0]([nd]n@.*TODO-KERBEROS-DOMAIN)s/.*/TODO-HDFSUSER/
+        RULE:[2:$1@$0](hm@.*TODO-KERBEROS-DOMAIN)s/.*/TODO-HBASE-USER/
+        RULE:[2:$1@$0](rs@.*TODO-KERBEROS-DOMAIN)s/.*/TODO-HBASE-USER/
+        DEFAULT
+        </value>
+      <description>The mapping from kerberos principal names to local OS user names.</description>
+    </property>
+    <property>
+      <name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
+      <value>*=/etc/hadoop/conf</value>
+      <description>
+          Comma separated AUTHORITY=HADOOP_CONF_DIR, where AUTHORITY is the HOST:PORT of
+          the Hadoop service (JobTracker, HDFS). The wildcard '*' configuration is
+          used when there is no exact match for an authority. The HADOOP_CONF_DIR contains
+          the relevant Hadoop *-site.xml files. If the path is relative is looked within
+          the Oozie configuration directory; though the path can be absolute (i.e. to point
+          to Hadoop client conf/ directories in the local filesystem.
+      </description>
+    </property>
+    <property>
+        <name>oozie.service.ActionService.executor.ext.classes</name>
+        <value>
+            org.apache.oozie.action.email.EmailActionExecutor,
+            org.apache.oozie.action.hadoop.HiveActionExecutor,
+            org.apache.oozie.action.hadoop.ShellActionExecutor,
+            org.apache.oozie.action.hadoop.SqoopActionExecutor,
+            org.apache.oozie.action.hadoop.DistcpActionExecutor
+        </value>
+    </property>
+
+    <property>
+        <name>oozie.service.SchemaService.wf.ext.schemas</name>
+        <value>shell-action-0.1.xsd,email-action-0.1.xsd,hive-action-0.2.xsd,sqoop-action-0.2.xsd,ssh-action-0.1.xsd,distcp-action-0.1.xsd</value>
+    </property>
+    <property>
+        <name>oozie.service.JPAService.create.db.schema</name>
+        <value>false</value>
+        <description>
+            Creates Oozie DB.
+
+            If set to true, it creates the DB schema if it does not exist. If the DB schema exists is a NOP.
+            If set to false, it does not create the DB schema. If the DB schema does not exist it fails start up.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.JPAService.jdbc.driver</name>
+        <value>org.apache.derby.jdbc.EmbeddedDriver</value>
+        <description>
+            JDBC driver class.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.JPAService.jdbc.url</name>
+        <value>jdbc:derby:${oozie.data.dir}/${oozie.db.schema.name}-db;create=true</value>
+        <description>
+            JDBC URL.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.JPAService.jdbc.username</name>
+        <value>sa</value>
+        <description>
+            DB user name.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.JPAService.jdbc.password</name>
+        <value> </value>
+        <description>
+            DB user password.
+
+            IMPORTANT: if password is emtpy leave a 1 space string, the service trims the value,
+                       if empty Configuration assumes it is NULL.
+        </description>
+    </property>
+
+    <property>
+        <name>oozie.service.JPAService.pool.max.active.conn</name>
+        <value>10</value>
+        <description>
+             Max number of connections.
+        </description>
+    </property>
+</configuration>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/OOZIE/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/OOZIE/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/OOZIE/metainfo.xml
new file mode 100644
index 0000000..51c71c1
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/OOZIE/metainfo.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <user>root</user>
+    <comment>System for workflow coordination and execution of Apache Hadoop jobs</comment>
+    <version>3.3.2.2.0.3.0</version>
+
+    <components>
+        <component>
+            <name>OOZIE_SERVER</name>
+            <category>MASTER</category>
+        </component>
+
+        <component>
+            <name>OOZIE_CLIENT</name>
+            <category>CLIENT</category>
+        </component>
+    </components>
+
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/PIG/configuration/pig.properties
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/PIG/configuration/pig.properties b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/PIG/configuration/pig.properties
new file mode 100644
index 0000000..01000b5
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/PIG/configuration/pig.properties
@@ -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.
+
+# Pig default configuration file. All values can be overwritten by pig.properties and command line arguments.
+# see bin/pig -help
+
+# brief logging (no timestamps)
+brief=false
+
+#debug level, INFO is default
+debug=INFO
+
+#verbose print all log messages to screen (default to print only INFO and above to screen)
+verbose=false
+
+#exectype local|mapreduce, mapreduce is default
+exectype=mapreduce
+
+#Enable insertion of information about script into hadoop job conf 
+pig.script.info.enabled=true
+
+#Do not spill temp files smaller than this size (bytes)
+pig.spill.size.threshold=5000000
+#EXPERIMENT: Activate garbage collection when spilling a file bigger than this size (bytes)
+#This should help reduce the number of files being spilled.
+pig.spill.gc.activation.size=40000000
+
+#the following two parameters are to help estimate the reducer number
+pig.exec.reducers.bytes.per.reducer=1000000000
+pig.exec.reducers.max=999
+
+#Temporary location to store the intermediate data.
+pig.temp.dir=/tmp/
+
+#Threshold for merging FRJoin fragment files
+pig.files.concatenation.threshold=100
+pig.optimistic.files.concatenation=false;
+
+pig.disable.counter=false

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/PIG/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/PIG/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/PIG/metainfo.xml
new file mode 100644
index 0000000..9b30ddb
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/PIG/metainfo.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <user>root</user>
+    <comment>Scripting platform for analyzing large datasets</comment>
+    <version>0.11.2.0.3.0</version>
+
+    <components>
+        <component>
+            <name>PIG</name>
+            <category>CLIENT</category>
+        </component>
+    </components>
+
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/TEZ/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/TEZ/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/TEZ/metainfo.xml
new file mode 100644
index 0000000..f891891
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/TEZ/metainfo.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <user>root</user>
+    <comment>Tez is the next generation Hadoop Query Processing framework written on top of YARN</comment>
+    <version>0.1.0.2.0.3.0</version>
+
+    <components>
+        <component>
+            <name>TEZ_CLIENT</name>
+            <category>CLIENT</category>
+        </component>
+    </components>
+
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/WEBHCAT/configuration/webhcat-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/WEBHCAT/configuration/webhcat-site.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/WEBHCAT/configuration/webhcat-site.xml
new file mode 100644
index 0000000..31d0113
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/WEBHCAT/configuration/webhcat-site.xml
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+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.
+-->
+
+<!-- The default settings for Templeton. -->
+<!-- Edit templeton-site.xml to change settings for your local -->
+<!-- install. -->
+
+<configuration>
+
+  <property>
+    <name>templeton.port</name>
+      <value>50111</value>
+    <description>The HTTP port for the main server.</description>
+  </property>
+
+  <property>
+    <name>templeton.hadoop.conf.dir</name>
+    <value>/etc/hadoop/conf</value>
+    <description>The path to the Hadoop configuration.</description>
+  </property>
+
+  <property>
+    <name>templeton.jar</name>
+    <value>/usr/lib/hcatalog/share/webhcat/svr/webhcat.jar</value>
+    <description>The path to the Templeton jar file.</description>
+  </property>
+
+  <property>
+    <name>templeton.libjars</name>
+    <value>/usr/lib/zookeeper/zookeeper.jar</value>
+    <description>Jars to add the the classpath.</description>
+  </property>
+
+
+  <property>
+    <name>templeton.hadoop</name>
+    <value>/usr/bin/hadoop</value>
+    <description>The path to the Hadoop executable.</description>
+  </property>
+
+  <property>
+    <name>templeton.pig.archive</name>
+    <value>hdfs:///apps/webhcat/pig.tar.gz</value>
+    <description>The path to the Pig archive.</description>
+  </property>
+
+  <property>
+    <name>templeton.pig.path</name>
+    <value>pig.tar.gz/pig/bin/pig</value>
+    <description>The path to the Pig executable.</description>
+  </property>
+
+  <property>
+    <name>templeton.hcat</name>
+    <value>/usr/bin/hcat</value>
+    <description>The path to the hcatalog executable.</description>
+  </property>
+
+  <property>
+    <name>templeton.hive.archive</name>
+    <value>hdfs:///apps/webhcat/hive.tar.gz</value>
+    <description>The path to the Hive archive.</description>
+  </property>
+
+  <property>
+    <name>templeton.hive.path</name>
+    <value>hive.tar.gz/hive/bin/hive</value>
+    <description>The path to the Hive executable.</description>
+  </property>
+
+  <property>
+    <name>templeton.hive.properties</name>
+    <value></value>
+    <description>Properties to set when running hive.</description>
+  </property>
+
+
+  <property>
+    <name>templeton.zookeeper.hosts</name>
+    <value></value>
+    <description>ZooKeeper servers, as comma separated host:port pairs</description>
+  </property>
+
+  <property>
+    <name>templeton.storage.class</name>
+    <value>org.apache.hcatalog.templeton.tool.ZooKeeperStorage</value>
+    <description>The class to use as storage</description>
+  </property>
+
+  <property>
+   <name>templeton.override.enabled</name>
+   <value>false</value>
+   <description>
+     Enable the override path in templeton.override.jars
+   </description>
+ </property>
+
+ <property>
+    <name>templeton.streaming.jar</name>
+    <value>hdfs:///apps/webhcat/hadoop-streaming.jar</value>
+    <description>The hdfs path to the Hadoop streaming jar file.</description>
+  </property> 
+
+  <property>
+    <name>templeton.exec.timeout</name>
+    <value>60000</value>
+    <description>Time out for templeton api</description>
+  </property>
+
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/WEBHCAT/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/WEBHCAT/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/WEBHCAT/metainfo.xml
new file mode 100644
index 0000000..58a9fb8
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/WEBHCAT/metainfo.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <user>root</user>
+    <comment>This is comment for WEBHCAT service</comment>
+    <version>0.11.0.2.0.3.0</version>
+
+    <components>
+        <component>
+            <name>WEBHCAT_SERVER</name>
+            <category>MASTER</category>
+        </component>
+    </components>
+
+
+</metainfo>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/YARN/configuration/capacity-scheduler.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/YARN/configuration/capacity-scheduler.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/YARN/configuration/capacity-scheduler.xml
new file mode 100644
index 0000000..3f78292
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/YARN/configuration/capacity-scheduler.xml
@@ -0,0 +1,120 @@
+<!--
+   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.
+-->
+
+<configuration>
+
+  <property>
+    <name>yarn.scheduler.capacity.maximum-applications</name>
+    <value>10000</value>
+    <description>
+      Maximum number of applications that can be pending and running.
+    </description>
+  </property>
+
+  <property>
+    <name>yarn.scheduler.capacity.maximum-am-resource-percent</name>
+    <value>0.1</value>
+    <description>
+      Maximum percent of resources in the cluster which can be used to run 
+      application masters i.e. controls number of concurrent running
+      applications.
+    </description>
+  </property>
+
+  <property>
+    <name>yarn.scheduler.capacity.root.queues</name>
+    <value>default</value>
+    <description>
+      The queues at the this level (root is the root queue).
+    </description>
+  </property>
+
+  <property>
+    <name>yarn.scheduler.capacity.root.capacity</name>
+    <value>100</value>
+    <description>
+      The total capacity as a percentage out of 100 for this queue.
+      If it has child queues then this includes their capacity as well.
+      The child queues capacity should add up to their parent queue's capacity
+      or less.
+    </description>
+  </property>
+
+  <property>
+    <name>yarn.scheduler.capacity.root.default.capacity</name>
+    <value>100</value>
+    <description>Default queue target capacity.</description>
+  </property>
+
+  <property>
+    <name>yarn.scheduler.capacity.root.default.user-limit-factor</name>
+    <value>1</value>
+    <description>
+      Default queue user limit a percentage from 0.0 to 1.0.
+    </description>
+  </property>
+
+  <property>
+    <name>yarn.scheduler.capacity.root.default.maximum-capacity</name>
+    <value>100</value>
+    <description>
+      The maximum capacity of the default queue. 
+    </description>
+  </property>
+
+  <property>
+    <name>yarn.scheduler.capacity.root.default.state</name>
+    <value>RUNNING</value>
+    <description>
+      The state of the default queue. State can be one of RUNNING or STOPPED.
+    </description>
+  </property>
+
+  <property>
+    <name>yarn.scheduler.capacity.root.default.acl_submit_jobs</name>
+    <value>*</value>
+    <description>
+      The ACL of who can submit jobs to the default queue.
+    </description>
+  </property>
+
+  <property>
+    <name>yarn.scheduler.capacity.root.default.acl_administer_jobs</name>
+    <value>*</value>
+    <description>
+      The ACL of who can administer jobs on the default queue.
+    </description>
+  </property>
+
+  <property>
+    <name>yarn.scheduler.capacity.root.acl_administer_queues</name>
+    <value>*</value>
+    <description>
+      The ACL for who can administer this queue i.e. change sub-queue 
+      allocations.
+    </description>
+  </property>
+  
+  <property>
+    <name>yarn.scheduler.capacity.root.unfunded.capacity</name>
+    <value>50</value>
+    <description>
+      No description
+    </description>
+  </property>
+
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/YARN/configuration/container-executor.cfg
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/YARN/configuration/container-executor.cfg b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/YARN/configuration/container-executor.cfg
new file mode 100644
index 0000000..502ddaa
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/YARN/configuration/container-executor.cfg
@@ -0,0 +1,20 @@
+#
+# 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.
+#
+yarn.nodemanager.local-dirs=TODO-YARN-LOCAL-DIR
+yarn.nodemanager.linux-container-executor.group=hadoop
+yarn.nodemanager.log-dirs=TODO-YARN-LOG-DIR
+banned.users=hfds,bin,0

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/YARN/configuration/core-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/YARN/configuration/core-site.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/YARN/configuration/core-site.xml
new file mode 100644
index 0000000..3a2af49
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/YARN/configuration/core-site.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+   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.
+-->
+<configuration>
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/a718fc45/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/YARN/configuration/global.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/YARN/configuration/global.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/YARN/configuration/global.xml
new file mode 100644
index 0000000..68fb257
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.3/services/YARN/configuration/global.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+/**
+ * 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.
+ */
+-->
+
+<configuration>
+  <property>
+    <name>rm_host</name>
+    <value></value>
+    <description>Resource Manager.</description>
+  </property>
+  <property>
+    <name>nm_hosts</name>
+    <value></value>
+    <description>List of Node Manager Hosts.</description>
+  </property>
+  <property>
+    <name>yarn_log_dir_prefix</name>
+    <value>/var/log/hadoop-yarn</value>
+    <description>YARN Log Dir Prefix</description>
+  </property>
+  <property>
+    <name>yarn_pid_dir_prefix</name>
+    <value>/var/run/hadoop-yarn</value>
+    <description>YARN PID Dir Prefix</description>
+  </property>
+  <property>
+    <name>yarn_user</name>
+    <value>yarn</value>
+    <description>YARN User</description>
+  </property>
+</configuration>