Browse Source

AMBARI-18928. Perf: Add Hadoop Core services to PERF stack (alejandro)

Alejandro Fernandez 8 years ago
parent
commit
6e8d34587f
96 changed files with 35158 additions and 0 deletions
  1. 36 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/GRUMPY/configuration/grumpy-site.xml
  2. 57 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/GRUMPY/metainfo.xml
  3. 38 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/GRUMPY/package/scripts/dwarf.py
  4. 30 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/GRUMPY/package/scripts/service_check.py
  5. 65 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/GRUMPY/themes/theme.json
  6. 127 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/alerts.json
  7. 292 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/configuration/hbase-env.xml
  8. 146 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/configuration/hbase-log4j.xml
  9. 111 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/configuration/hbase-logsearch-conf.xml
  10. 53 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/configuration/hbase-policy.xml
  11. 573 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/configuration/hbase-site.xml
  12. 122 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/configuration/ranger-hbase-audit.xml
  13. 66 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/configuration/ranger-hbase-policymgr-ssl.xml
  14. 68 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/configuration/ranger-hbase-security.xml
  15. 159 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/kerberos.json
  16. 196 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/metainfo.xml
  17. 9374 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/metrics.json
  18. 38 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/package/scripts/hbase_client.py
  19. 41 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/package/scripts/hbase_master.py
  20. 41 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/package/scripts/hbase_regionserver.py
  21. 38 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/package/scripts/phoenix_queryserver.py
  22. 30 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/package/scripts/service_check.py
  23. 97 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/quicklinks/quicklinks.json
  24. 411 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/themes/theme.json
  25. 510 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/widgets.json
  26. 1786 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/alerts.json
  27. 225 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/core-site.xml
  28. 419 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/hadoop-env.xml
  29. 125 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/hadoop-metrics2.properties.xml
  30. 130 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/hadoop-policy.xml
  31. 225 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/hdfs-log4j.xml
  32. 248 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/hdfs-logsearch-conf.xml
  33. 633 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/hdfs-site.xml
  34. 124 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/ranger-hdfs-audit.xml
  35. 88 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/ranger-hdfs-plugin-properties.xml
  36. 67 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/ranger-hdfs-policymgr-ssl.xml
  37. 65 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/ranger-hdfs-security.xml
  38. 70 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/ssl-client.xml
  39. 80 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/ssl-server.xml
  40. 246 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/kerberos.json
  41. 265 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/metainfo.xml
  42. 7905 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/metrics.json
  43. 69 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/alerts/alert_checkpoint_time.py
  44. 74 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/alerts/alert_datanode_unmounted_data_dir.py
  45. 75 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/alerts/alert_ha_namenode_health.py
  46. 85 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/alerts/alert_metrics_deviation.py
  47. 74 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/alerts/alert_upgrade_finalized.py
  48. 38 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/scripts/datanode.py
  49. 38 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/scripts/hdfs_client.py
  50. 38 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/scripts/journalnode.py
  51. 54 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/scripts/namenode.py
  52. 38 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/scripts/nfsgateway.py
  53. 30 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/scripts/service_check.py
  54. 38 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/scripts/snamenode.py
  55. 38 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/scripts/zkfc_slave.py
  56. 76 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/quicklinks/quicklinks.json
  57. 179 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/themes/theme.json
  58. 649 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/widgets.json
  59. 36 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/SLEEPY/configuration/sleepy-site.xml
  60. 57 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/SLEEPY/metainfo.xml
  61. 38 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/SLEEPY/package/scripts/dwarf.py
  62. 30 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/SLEEPY/package/scripts/service_check.py
  63. 65 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/SLEEPY/themes/theme.json
  64. 3486 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/YARN_metrics.json
  65. 611 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/YARN_widgets.json
  66. 392 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/alerts.json
  67. 50 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/configuration-mapred/mapred-env.xml
  68. 134 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/configuration-mapred/mapred-site.xml
  69. 69 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/configuration/capacity-scheduler.xml
  70. 121 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/configuration/ranger-yarn-audit.xml
  71. 82 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/configuration/ranger-yarn-plugin-properties.xml
  72. 66 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/configuration/ranger-yarn-policymgr-ssl.xml
  73. 58 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/configuration/ranger-yarn-security.xml
  74. 201 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/configuration/yarn-env.xml
  75. 103 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/configuration/yarn-log4j.xml
  76. 796 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/configuration/yarn-site.xml
  77. 279 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/kerberos.json
  78. 352 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/metainfo.xml
  79. 67 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/package/alerts/alert_nodemanager_health.py
  80. 68 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/package/alerts/alert_nodemanagers_summary.py
  81. 38 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/package/scripts/application_timeline_server.py
  82. 38 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/package/scripts/historyserver.py
  83. 30 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/package/scripts/mapred_service_check.py
  84. 38 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/package/scripts/mapreduce2_client.py
  85. 38 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/package/scripts/nodemanager.py
  86. 44 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/package/scripts/resourcemanager.py
  87. 30 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/package/scripts/service_check.py
  88. 38 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/package/scripts/yarn_client.py
  89. 76 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/quicklinks-mapred/quicklinks.json
  90. 76 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/quicklinks/quicklinks.json
  91. 132 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/themes-mapred/theme.json
  92. 250 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/themes/theme.json
  93. 50 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/ZOOKEEPER/metainfo.xml
  94. 30 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/ZOOKEEPER/package/scripts/service_check.py
  95. 38 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/ZOOKEEPER/package/scripts/zookeeper_client.py
  96. 38 0
      ambari-server/src/main/resources/stacks/PERF/1.0/services/ZOOKEEPER/package/scripts/zookeeper_server.py

+ 36 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/GRUMPY/configuration/grumpy-site.xml

@@ -0,0 +1,36 @@
+<?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>success.percentage</name>
+    <value>50</value>
+    <description>The success percentage of any operation.</description>
+    <display-name>Success percentage</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>0</minimum>
+      <maximum>100</maximum>
+      <increment-step>10</increment-step>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+</configuration>

+ 57 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/GRUMPY/metainfo.xml

@@ -0,0 +1,57 @@
+<?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>
+  <schemaVersion>2.0</schemaVersion>
+  <services>
+    <service>
+      <name>GRUMPY</name>
+      <displayName>Grumpy</displayName>
+      <comment>Fails with a high percentage</comment>
+      <version>1.0</version>
+      <components>
+
+        <component>
+          <name>GRUMPY</name>
+          <displayName>Grumpy</displayName>
+          <category>SLAVE</category>
+          <cardinality>0+</cardinality>
+          <commandScript>
+            <script>scripts/dwarf.py</script>
+            <scriptType>PYTHON</scriptType>
+            <timeout>600</timeout>
+          </commandScript>
+        </component>
+      </components>
+
+      <commandScript>
+        <script>scripts/service_check.py</script>
+        <scriptType>PYTHON</scriptType>
+        <timeout>300</timeout>
+      </commandScript>
+
+      <restartRequiredAfterChange>true</restartRequiredAfterChange>
+
+      <themes>
+        <theme>
+          <fileName>theme.json</fileName>
+          <default>true</default>
+        </theme>
+      </themes>
+    </service>
+  </services>
+</metainfo>

+ 38 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/GRUMPY/package/scripts/dwarf.py

@@ -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.
+
+Ambari Agent
+
+"""
+
+# Python Imports
+
+# Local Imports
+from resource_management.libraries.script.dummy import Dummy
+
+
+class Grumpy(Dummy):
+  """
+  Dummy script that simulates a slave component.
+  """
+
+  def __init__(self):
+    super(Grumpy, self).__init__()
+    self.component_name = "GRUMPY"
+
+if __name__ == "__main__":
+  Grumpy().execute()

+ 30 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/GRUMPY/package/scripts/service_check.py

@@ -0,0 +1,30 @@
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Ambari Agent
+
+"""
+
+from resource_management.libraries.script.script import Script
+
+class ServiceCheck(Script):
+
+  def service_check(self, env):
+    print "Service Check"
+
+if __name__ == "__main__":
+  ServiceCheck().execute()

+ 65 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/GRUMPY/themes/theme.json

@@ -0,0 +1,65 @@
+{
+  "name": "default",
+  "description": "Default theme",
+  "configuration": {
+    "layouts": [
+      {
+        "name": "default",
+        "tabs": [
+          {
+            "name": "settings",
+            "display-name": "Settings",
+            "layout": {
+              "tab-columns": "1",
+              "tab-rows": "1",
+              "sections": [
+                {
+                  "name": "section-general",
+                  "display-name": "General",
+                  "row-index": "0",
+                  "column-index": "0",
+                  "row-span": "1",
+                  "column-span": "1",
+                  "section-columns": "1",
+                  "section-rows": "1",
+                  "subsections": [
+                    {
+                      "name": "subsection-general",
+                      "display-name": "Features",
+                      "row-index": "0",
+                      "column-index": "0",
+                      "row-span": "1",
+                      "column-span": "1"
+                    }
+                  ]
+                }
+              ]
+            }
+          }
+        ]
+      }
+    ],
+    "placement": {
+      "configuration-layout": "default",
+      "configs": [
+        {
+          "config": "grumpy-site/success.percentage",
+          "subsection-name": "subsection-general"
+        }
+      ]
+    },
+    "widgets": [
+      {
+        "config": "grumpy-site/success.percentage",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "percent"
+            }
+          ]
+        }
+      }
+    ]
+  }
+}

+ 127 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/alerts.json

@@ -0,0 +1,127 @@
+{
+  "HBASE": {
+    "service": [
+      {
+        "name": "hbase_regionserver_process_percent",
+        "label": "Percent RegionServers Available",
+        "description": "This service-level alert is triggered if the configured percentage of RegionServer processes cannot be determined to be up and listening on the network for the configured warning and critical thresholds. It aggregates the results of RegionServer process down checks.",
+        "interval": 1,
+        "scope": "SERVICE",
+        "enabled": true,
+        "source": {
+          "type": "AGGREGATE",
+          "alert_name": "hbase_regionserver_process",
+          "reporting": {
+            "ok": {
+              "text": "affected: [{1}], total: [{0}]"
+            },
+            "warning": {
+              "text": "affected: [{1}], total: [{0}]",
+              "value": 10
+            },
+            "critical": {
+              "text": "affected: [{1}], total: [{0}]",
+              "value": 30
+            },
+            "units" : "%",
+            "type": "PERCENT"
+          }
+        }
+      }    
+    ],
+    "HBASE_MASTER": [
+      {
+        "name": "hbase_master_process",
+        "label": "HBase Master Process",
+        "description": "This alert is triggered if the HBase master processes cannot be confirmed to be up and listening on the network for the configured critical threshold, given in seconds.",
+        "interval": 1,
+        "scope": "ANY",
+        "source": {
+          "type": "PORT",
+          "uri": "{{hbase-site/hbase.master.port}}",
+          "default_port": 60000,
+          "reporting": {
+            "ok": {
+              "text": "TCP OK - {0:.3f}s response on port {1}"
+            },
+            "warning": {
+              "text": "TCP OK - {0:.3f}s response on port {1}",
+              "value": 1.5
+            },
+            "critical": {
+              "text": "Connection failed: {0} to {1}:{2}",
+              "value": 5.0
+            }
+          }
+        }
+      },
+      {
+        "name": "hbase_master_cpu",
+        "label": "HBase Master CPU Utilization",
+        "description": "This host-level alert is triggered if CPU utilization of the HBase Master exceeds certain warning and critical thresholds. It checks the HBase Master JMX Servlet for the SystemCPULoad property. The threshold values are in percent.",
+        "interval": 5,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "METRIC",
+          "uri": {
+            "http": "{{hbase-site/hbase.master.info.port}}",
+            "default_port": 60010,
+            "connection_timeout": 5.0,
+            "kerberos_keytab": "{{hbase-site/hbase.security.authentication.spnego.kerberos.principal}}",
+            "kerberos_principal": "{{hbase-site/hbase.security.authentication.spnego.kerberos.keytab}}"
+          },
+          "reporting": {
+            "ok": {
+              "text": "{1} CPU, load {0:.1%}"
+            },
+            "warning": {
+              "text": "{1} CPU, load {0:.1%}",
+              "value": 200
+            },
+            "critical": {
+              "text": "{1} CPU, load {0:.1%}",
+              "value": 250
+            },
+            "units" : "%",
+            "type": "PERCENT"
+          },
+          "jmx": {
+            "property_list": [
+              "java.lang:type=OperatingSystem/SystemCpuLoad",
+              "java.lang:type=OperatingSystem/AvailableProcessors"
+            ],
+            "value": "{0} * 100"
+          }
+        }
+      }
+    ],
+    "HBASE_REGIONSERVER": [
+      {
+        "name": "hbase_regionserver_process",
+        "label": "HBase RegionServer Process",
+        "description": "This host-level alert is triggered if the RegionServer processes cannot be confirmed to be up and listening on the network for the configured critical threshold, given in seconds.",
+        "interval": 1,
+        "scope": "HOST",
+        "source": {
+          "type": "PORT",
+          "uri": "{{hbase-site/hbase.regionserver.info.port}}",
+          "default_port": 60030,
+          "reporting": {
+            "ok": {
+              "text": "TCP OK - {0:.3f}s response on port {1}"
+            },
+            "warning": {
+              "text": "TCP OK - {0:.3f}s response on port {1}",
+              "value": 1.5
+            },
+            "critical": {
+              "text": "Connection failed: {0} to {1}:{2}",
+              "value": 5.0
+            }
+          }
+        }
+      }
+    ]
+  }
+}

+ 292 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/configuration/hbase-env.xml

@@ -0,0 +1,292 @@
+<?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 supports_adding_forbidden="true">
+  <!-- These properties exist in common services. -->
+  <property>
+    <name>hbase_log_dir</name>
+    <value>/var/log/hbase</value>
+    <display-name>HBase Log Dir Prefix</display-name>
+    <description>Log Directories for HBase.</description>
+    <value-attributes>
+      <type>directory</type>
+      <overridable>false</overridable>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase_regionserver_heapsize</name>
+    <value>4096</value>
+    <description>Maximum amount of memory each HBase RegionServer can use.</description>
+    <display-name>HBase RegionServer Maximum Memory</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>0</minimum>
+      <maximum>6554</maximum>
+      <unit>MB</unit>
+      <increment-step>256</increment-step>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase_master_heapsize</name>
+    <value>4096</value>
+    <description>Maximum amount of memory each HBase Master can use.</description>
+    <display-name>HBase Master Maximum Memory</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>0</minimum>
+      <maximum>16384</maximum>
+      <unit>MB</unit>
+      <increment-step>256</increment-step>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase_user_nofile_limit</name>
+    <value>32000</value>
+    <description>Max open files limit setting for HBASE user.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase_user_nproc_limit</name>
+    <value>16000</value>
+    <description>Max number of processes limit setting for HBASE user.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase_java_io_tmpdir</name>
+    <value>/tmp</value>
+    <description>Used in hbase-env.sh as HBASE_OPTS=-Djava.io.tmpdir=java_io_tmpdir</description>
+    <value-attributes>
+      <type>directory</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase_principal_name</name>
+    <description>HBase principal name</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase_user_keytab</name>
+    <description>HBase keytab path</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase_regionserver_shutdown_timeout</name>
+    <value>30</value>
+    <display-name>HBase RegionServer shutdown timeout</display-name>
+    <description>
+      After this number of seconds waiting for graceful stop of HBase Master it will be forced to exit with SIGKILL.
+      The timeout is introduced because there is a known bug when from time to time HBase RegionServer hangs forever on stop if NN safemode is on.
+    </description>
+    <value-attributes>
+      <type>int</type>
+      <overridable>false</overridable>
+      <editable-only-at-install>true</editable-only-at-install>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+
+  <!-- These properties exist in HDP 2.2 and higher. -->
+  <property>
+    <name>hbase_log_dir</name>
+    <value>/var/log/hbase</value>
+    <display-name>HBase Log Dir Prefix</display-name>
+    <description>Log Directories for HBase.</description>
+    <value-attributes>
+      <type>directory</type>
+      <overridable>false</overridable>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase_pid_dir</name>
+    <value>/var/run/hbase</value>
+    <display-name>HBase PID Dir</display-name>
+    <description>Pid Directory for HBase.</description>
+    <value-attributes>
+      <type>directory</type>
+      <overridable>false</overridable>
+      <editable-only-at-install>true</editable-only-at-install>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase_regionserver_xmn_max</name>
+    <value>512</value>
+    <description>
+      Sets the upper bound on HBase RegionServers' young generation size.
+      This value is used in case the young generation size (-Xmn) calculated based on the max heapsize (hbase_regionserver_heapsize)
+      and the -Xmn ratio (hbase_regionserver_xmn_ratio) exceeds this value.
+    </description>
+    <display-name>RegionServers maximum value for -Xmn</display-name>
+    <value-attributes>
+      <type>int</type>
+      <unit>MB</unit>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase_regionserver_xmn_ratio</name>
+    <value>0.2</value>
+    <display-name>RegionServers -Xmn in -Xmx ratio</display-name>
+    <description>Percentage of max heap size (-Xmx) which used for young generation heap (-Xmn).</description>
+    <value-attributes>
+      <type>float</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase_user</name>
+    <display-name>HBase User</display-name>
+    <value>hbase</value>
+    <property-type>USER</property-type>
+    <description>HBase User Name.</description>
+    <value-attributes>
+      <type>user</type>
+      <overridable>false</overridable>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase_max_direct_memory_size</name>
+    <value/>
+    <display-name>HBase off-heap MaxDirectMemorySize</display-name>
+    <description>If not empty, adds '-XX:MaxDirectMemorySize={{hbase_max_direct_memory_size}}m' to HBASE_REGIONSERVER_OPTS.</description>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>phoenix_sql_enabled</name>
+    <value>false</value>
+    <description>Enable Phoenix SQL</description>
+    <display-name>Enable Phoenix</display-name>
+    <value-attributes>
+      <type>value-list</type>
+      <entries>
+        <entry>
+          <value>true</value>
+          <label>Enabled</label>
+        </entry>
+        <entry>
+          <value>false</value>
+          <label>Disabled</label>
+        </entry>
+      </entries>
+      <selection-cardinality>1</selection-cardinality>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+
+  <!-- These properties exist in HDP 2.3 and higher. -->
+  <!-- hbase-env.sh -->
+  <property>
+    <name>content</name>
+    <display-name>hbase-env template</display-name>
+    <description>This is the jinja template for hbase-env.sh file</description>
+    <value>
+# Set environment variables here.
+
+# The java implementation to use. Java 1.6 required.
+export JAVA_HOME={{java64_home}}
+
+# HBase Configuration directory
+export HBASE_CONF_DIR=${HBASE_CONF_DIR:-{{hbase_conf_dir}}}
+
+# Extra Java CLASSPATH elements. Optional.
+export HBASE_CLASSPATH=${HBASE_CLASSPATH}
+
+
+# The maximum amount of heap to use, in MB. Default is 1000.
+# export HBASE_HEAPSIZE=1000
+
+# Extra Java runtime options.
+# Below are what we set by default. May only work with SUN JVM.
+# For more on why as well as other possible settings,
+# see http://wiki.apache.org/hadoop/PerformanceTuning
+export SERVER_GC_OPTS="-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:{{log_dir}}/gc.log-`date +'%Y%m%d%H%M'`"
+# Uncomment below to enable java garbage collection logging.
+# export HBASE_OPTS="$HBASE_OPTS -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:$HBASE_HOME/logs/gc-hbase.log"
+
+# Uncomment and adjust to enable JMX exporting
+# See jmxremote.password and jmxremote.access in $JRE_HOME/lib/management to configure remote password access.
+# More details at: http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html
+#
+# export HBASE_JMX_BASE="-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
+# If you want to configure BucketCache, specify '-XX: MaxDirectMemorySize=' with proper direct memory size
+# export HBASE_THRIFT_OPTS="$HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10103"
+# export HBASE_ZOOKEEPER_OPTS="$HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10104"
+
+# File naming hosts on which HRegionServers will run. $HBASE_HOME/conf/regionservers by default.
+export HBASE_REGIONSERVERS=${HBASE_CONF_DIR}/regionservers
+
+# Extra ssh options. Empty by default.
+# export HBASE_SSH_OPTS="-o ConnectTimeout=1 -o SendEnv=HBASE_CONF_DIR"
+
+# Where log files are stored. $HBASE_HOME/logs by default.
+export HBASE_LOG_DIR={{log_dir}}
+
+# A string representing this instance of hbase. $USER by default.
+# export HBASE_IDENT_STRING=$USER
+
+# The scheduling priority for daemon processes. See 'man nice'.
+# export HBASE_NICENESS=10
+
+# The directory where pid files are stored. /tmp by default.
+export HBASE_PID_DIR={{pid_dir}}
+
+# Seconds to sleep between slave commands. Unset by default. This
+# can be useful in large clusters, where, e.g., slave rsyncs can
+# otherwise arrive faster than the master can service them.
+# export HBASE_SLAVE_SLEEP=0.1
+
+# Tell HBase whether it should manage it's own instance of Zookeeper or not.
+export HBASE_MANAGES_ZK=false
+
+{% if java_version &lt; 8 %}
+JDK_DEPENDED_OPTS="-XX:PermSize=128m -XX:MaxPermSize=128m"
+{% endif %}
+      
+{% if security_enabled %}
+export HBASE_OPTS="$HBASE_OPTS -XX:+UseConcMarkSweepGC -XX:ErrorFile={{log_dir}}/hs_err_pid%p.log -Djava.security.auth.login.config={{client_jaas_config_file}} -Djava.io.tmpdir={{java_io_tmpdir}}"
+export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -Xmx{{master_heapsize}} -Djava.security.auth.login.config={{master_jaas_config_file}} $JDK_DEPENDED_OPTS"
+export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -Xmn{{regionserver_xmn_size}} -XX:CMSInitiatingOccupancyFraction=70  -Xms{{regionserver_heapsize}} -Xmx{{regionserver_heapsize}} -Djava.security.auth.login.config={{regionserver_jaas_config_file}} $JDK_DEPENDED_OPTS"
+export PHOENIX_QUERYSERVER_OPTS="$PHOENIX_QUERYSERVER_OPTS -Djava.security.auth.login.config={{queryserver_jaas_config_file}}"
+{% else %}
+export HBASE_OPTS="$HBASE_OPTS -XX:+UseConcMarkSweepGC -XX:ErrorFile={{log_dir}}/hs_err_pid%p.log -Djava.io.tmpdir={{java_io_tmpdir}}"
+export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -Xmx{{master_heapsize}} $JDK_DEPENDED_OPTS"
+export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -Xmn{{regionserver_xmn_size}} -XX:CMSInitiatingOccupancyFraction=70  -Xms{{regionserver_heapsize}} -Xmx{{regionserver_heapsize}} $JDK_DEPENDED_OPTS"
+{% endif %}
+
+# HBase off-heap MaxDirectMemorySize
+export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS {% if hbase_max_direct_memory_size %} -XX:MaxDirectMemorySize={{hbase_max_direct_memory_size}}m {% endif %}"
+export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS {% if hbase_max_direct_memory_size %} -XX:MaxDirectMemorySize={{hbase_max_direct_memory_size}}m {% endif %}"
+    </value>
+    <value-attributes>
+      <type>content</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+</configuration>

+ 146 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/configuration/hbase-log4j.xml

@@ -0,0 +1,146 @@
+<?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 supports_final="false" supports_adding_forbidden="true">
+  <property>
+    <name>content</name>
+    <display-name>hbase-log4j template</display-name>
+    <description>Custom log4j.properties</description>
+    <value>
+# 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.
+
+
+# Define some default values that can be overridden by system properties
+hbase.root.logger=INFO,console
+hbase.security.logger=INFO,console
+hbase.log.dir=.
+hbase.log.file=hbase.log
+
+# Define the root logger to the system property "hbase.root.logger".
+log4j.rootLogger=${hbase.root.logger}
+
+# Logging Threshold
+log4j.threshold=ALL
+
+#
+# Daily Rolling File Appender
+#
+log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.DRFA.File=${hbase.log.dir}/${hbase.log.file}
+
+# Rollver at midnight
+log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
+
+# 30-day backup
+#log4j.appender.DRFA.MaxBackupIndex=30
+log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout
+
+# Pattern format: Date LogLevel LoggerName LogMessage
+log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %m%n
+
+# Rolling File Appender properties
+hbase.log.maxfilesize=256MB
+hbase.log.maxbackupindex=20
+
+# Rolling File Appender
+log4j.appender.RFA=org.apache.log4j.RollingFileAppender
+log4j.appender.RFA.File=${hbase.log.dir}/${hbase.log.file}
+
+log4j.appender.RFA.MaxFileSize=${hbase.log.maxfilesize}
+log4j.appender.RFA.MaxBackupIndex=${hbase.log.maxbackupindex}
+
+log4j.appender.RFA.layout=org.apache.log4j.PatternLayout
+log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %m%n
+
+#
+# Security audit appender
+#
+hbase.security.log.file=SecurityAuth.audit
+hbase.security.log.maxfilesize=256MB
+hbase.security.log.maxbackupindex=20
+log4j.appender.RFAS=org.apache.log4j.RollingFileAppender
+log4j.appender.RFAS.File=${hbase.log.dir}/${hbase.security.log.file}
+log4j.appender.RFAS.MaxFileSize=${hbase.security.log.maxfilesize}
+log4j.appender.RFAS.MaxBackupIndex=${hbase.security.log.maxbackupindex}
+log4j.appender.RFAS.layout=org.apache.log4j.PatternLayout
+log4j.appender.RFAS.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
+log4j.category.SecurityLogger=${hbase.security.logger}
+log4j.additivity.SecurityLogger=false
+#log4j.logger.SecurityLogger.org.apache.hadoop.hbase.security.access.AccessController=TRACE
+
+#
+# Null Appender
+#
+log4j.appender.NullAppender=org.apache.log4j.varia.NullAppender
+
+#
+# console
+# Add "console" to rootlogger above if you want to use this
+#
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.target=System.err
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %m%n
+
+# Custom Logging levels
+
+log4j.logger.org.apache.zookeeper=INFO
+#log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG
+log4j.logger.org.apache.hadoop.hbase=INFO
+# Make these two classes INFO-level. Make them DEBUG to see more zk debug.
+log4j.logger.org.apache.hadoop.hbase.zookeeper.ZKUtil=INFO
+log4j.logger.org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher=INFO
+#log4j.logger.org.apache.hadoop.dfs=DEBUG
+# Set this class to log INFO only otherwise its OTT
+# Enable this to get detailed connection error/retry logging.
+# log4j.logger.org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation=TRACE
+
+
+# Uncomment this line to enable tracing on _every_ RPC call (this can be a lot of output)
+#log4j.logger.org.apache.hadoop.ipc.HBaseServer.trace=DEBUG
+
+# Uncomment the below if you want to remove logging of client region caching'
+# and scan of .META. messages
+# log4j.logger.org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation=INFO
+# log4j.logger.org.apache.hadoop.hbase.client.MetaScanner=INFO
+
+    </value>
+    <value-attributes>
+      <type>content</type>
+      <show-property-name>false</show-property-name>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+</configuration>

+ 111 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/configuration/hbase-logsearch-conf.xml

@@ -0,0 +1,111 @@
+<?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 supports_final="false" supports_adding_forbidden="true">
+  <property>
+    <name>service_name</name>
+    <display-name>Service name</display-name>
+    <description>Service name for Logsearch Portal (label)</description>
+    <value>HBase</value>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>component_mappings</name>
+    <display-name>Component mapping</display-name>
+    <description>Logsearch component logid mapping list (e.g.: COMPONENT1:logid1,logid2;COMPONENT2:logid3)</description>
+    <value>HBASE_MASTER:hbase_master;HBASE_REGIONSERVER:hbase_regionserver;PHOENIX_QUERY_SERVER:hbase_phoenix_server</value>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>content</name>
+    <display-name>Logfeeder Config</display-name>
+    <description>Metadata jinja template for Logfeeder which contains grok patterns for reading service specific logs.</description>
+    <value>
+{
+  "input":[
+    {
+      "type":"hbase_master",
+      "rowtype":"service",
+      "path":"{{default('/configurations/hbase-env/hbase_log_dir', '/var/log/hbase')}}/hbase-*-master-*.log"
+    },
+    {
+      "type":"hbase_regionserver",
+      "rowtype":"service",
+      "path":"{{default('/configurations/hbase-env/hbase_log_dir', '/var/log/hbase')}}/hbase-*-regionserver-*.log"
+    },
+    {
+      "type":"hbase_phoenix_server",
+      "rowtype":"service",
+      "path":"{{default('/configurations/hbase-env/hbase_log_dir', '/var/log/hbase')}}/phoenix-*-server.log"
+    }
+   ],
+  "filter":[
+    {
+      "filter":"grok",
+      "conditions":{
+        "fields":{
+          "type":[
+            "hbase_master",
+            "hbase_regionserver"
+          ]
+         }
+       },
+      "log4j_format":"%d{ISO8601} %-5p [%t] %c{2}: %m%n",
+      "multiline_pattern":"^(%{TIMESTAMP_ISO8601:logtime})",
+      "message_pattern":"(?m)^%{TIMESTAMP_ISO8601:logtime}%{SPACE}%{LOGLEVEL:level}%{SPACE}\\[%{DATA:thread_name}\\]%{SPACE}%{JAVACLASS:logger_name}:%{SPACE}%{GREEDYDATA:log_message}",
+      "post_map_values":{
+        "logtime":{
+          "map_date":{
+            "target_date_pattern":"yyyy-MM-dd HH:mm:ss,SSS"
+          }
+         }
+       }
+     },
+    {
+      "filter":"grok",
+      "conditions":{
+        "fields":{
+          "type":[
+            "hbase_phoenix_server"
+          ]
+         }
+      },
+      "log4j_format":"%d{ISO8601} %-5p [%t] %c{2}: %m%n",
+      "multiline_pattern":"^(%{TIMESTAMP_ISO8601:logtime})",
+      "message_pattern":"(?m)^%{TIMESTAMP_ISO8601:logtime}%{SPACE}%{LOGLEVEL:level}%{SPACE}%{JAVACLASS:logger_name}:%{SPACE}%{GREEDYDATA:log_message}",
+      "post_map_values":{
+        "logtime":{
+          "map_date":{
+            "target_date_pattern":"yyyy-MM-dd HH:mm:ss,SSS"
+          }
+         }
+       }
+     }
+   ]
+ }
+    </value>
+    <value-attributes>
+      <type>content</type>
+      <show-property-name>false</show-property-name>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+</configuration>

+ 53 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/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 supports_final="true">
+  <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>
+    <on-ambari-upgrade add="true"/>
+  </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>
+    <on-ambari-upgrade add="true"/>
+  </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>
+    <on-ambari-upgrade add="true"/>
+  </property>
+</configuration>

+ 573 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/configuration/hbase-site.xml

@@ -0,0 +1,573 @@
+<?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.
+ */
+-->
+<configuration>
+  <!-- These properties exist in common services. -->
+  <property>
+    <name>hbase.rootdir</name>
+    <value>hdfs://localhost:8020/apps/hbase/data</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>
+    <on-ambari-upgrade add="false"/>
+  </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>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase.tmp.dir</name>
+    <value>/tmp/hbase-${user.name}</value>
+    <display-name>HBase tmp directory</display-name>
+    <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>
+    <value-attributes>
+      <type>directory</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase.local.dir</name>
+    <value>${hbase.tmp.dir}/local</value>
+    <description>Directory on the local filesystem to be used as a local storage
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase.master.info.bindAddress</name>
+    <value>0.0.0.0</value>
+    <description>The bind address for the HBase Master web UI
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase.regionserver.handler.count</name>
+    <value>30</value>
+    <description>
+      Count of RPC Listener instances spun up on RegionServers.
+      Same property is used by the Master for count of master handlers.
+    </description>
+    <display-name>Number of Handlers per RegionServer</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>5</minimum>
+      <maximum>240</maximum>
+      <increment-step>1</increment-step>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase.hregion.majorcompaction</name>
+    <value>604800000</value>
+    <description>
+      Time between major compactions. Set to 0 to disable automatic major compactions.
+    </description>
+    <display-name>Major Compaction Interval</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>0</minimum>
+      <maximum>2592000000</maximum>
+      <unit>milliseconds</unit>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+
+  <property>
+    <name>hbase.hregion.memstore.block.multiplier</name>
+    <value>4</value>
+    <description>
+      Block updates if a memstore's size spikes this many times above the size that would cause it to be flushed.
+      Useful to prevent runaway memstores during a sudden spike in update traffic.
+    </description>
+    <display-name>Per-Column Family Memstore Block Multiplier</display-name>
+    <value-attributes>
+      <type>value-list</type>
+      <entries>
+        <entry>
+          <value>2</value>
+        </entry>
+        <entry>
+          <value>4</value>
+        </entry>
+        <entry>
+          <value>8</value>
+        </entry>
+      </entries>
+      <selection-cardinality>1</selection-cardinality>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase.hregion.memstore.flush.size</name>
+    <value>134217728</value>
+    <description>
+      The size of an individual memstore. Each column familiy within each region is allocated its own memstore.
+    </description>
+    <display-name>Memstore Flush Size</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>33554432</minimum>
+      <maximum>268435456</maximum>
+      <increment-step>1048576</increment-step>
+      <unit>B</unit>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase.hregion.memstore.mslab.enabled</name>
+    <value>true</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>
+    <value-attributes>
+      <type>boolean</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase.hregion.max.filesize</name>
+    <value>10737418240</value>
+    <description>
+      Maximum HFile size. If the sum of the sizes of a region's HFiles has grown to exceed this
+      value, the region is split in two.
+    </description>
+    <display-name>Maximum Region File Size</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>1073741824</minimum>
+      <maximum>107374182400</maximum>
+      <unit>B</unit>
+      <increment-step>1073741824</increment-step>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase.client.scanner.caching</name>
+    <value>100</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>
+    <display-name>Number of Fetched Rows when Scanning from Disk</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>100</minimum>
+      <maximum>10000</maximum>
+      <increment-step>100</increment-step>
+      <unit>rows</unit>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>zookeeper.session.timeout</name>
+    <value>90000</value>
+    <description>ZooKeeper session timeout.
+      ZooKeeper session timeout in milliseconds. It is used in two different ways.
+      First, this value is used in the ZK client that HBase uses to connect to the ensemble.
+      It is also used by HBase when it starts a ZK server and it is passed as the 'maxSessionTimeout'. See
+      http://hadoop.apache.org/zookeeper/docs/current/zookeeperProgrammers.html#ch_zkSessions.
+      For example, if a HBase region server connects to a ZK ensemble that's also managed by HBase, then the
+      session timeout will be the one specified by this configuration. But, a region server that connects
+      to an ensemble managed with a different configuration will be subjected that ensemble's maxSessionTimeout. So,
+      even though HBase might propose using 90 seconds, the ensemble can have a max timeout lower than this and
+      it will take precedence.
+    </description>
+    <display-name>Zookeeper Session Timeout</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>10000</minimum>
+      <maximum>180000</maximum>
+      <unit>milliseconds</unit>
+      <increment-step>10000</increment-step>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase.client.keyvalue.maxsize</name>
+    <value>1048576</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>
+    <display-name>Maximum Record Size</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>1048576</minimum>
+      <maximum>31457280</maximum>
+      <unit>B</unit>
+      <increment-step>262144</increment-step>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase.hstore.compactionThreshold</name>
+    <value>3</value>
+    <description>
+      The maximum number of StoreFiles which will be selected for a single minor
+      compaction, regardless of the number of eligible StoreFiles. Effectively, the value of
+      hbase.hstore.compaction.max controls the length of time it takes a single compaction to
+      complete. Setting it larger means that more StoreFiles are included in a compaction. For most
+      cases, the default value is appropriate.
+    </description>
+    <display-name>Maximum Store Files before Minor Compaction</display-name>
+    <value-attributes>
+      <type>int</type>
+      <entries>
+        <entry>
+          <value>2</value>
+        </entry>
+        <entry>
+          <value>3</value>
+        </entry>
+        <entry>
+          <value>4</value>
+        </entry>
+      </entries>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase.hstore.flush.retries.number</name>
+    <value>120</value>
+    <description>
+      The number of times the region flush operation will be retried.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase.hstore.blockingStoreFiles</name>
+    <display-name>hstore blocking storefiles</display-name>
+    <value>10</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>
+    <value-attributes>
+      <type>int</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hfile.block.cache.size</name>
+    <value>0.40</value>
+    <description>Percentage of RegionServer memory to allocate to read buffers.</description>
+    <display-name>% of RegionServer Allocated to Read Buffers</display-name>
+    <value-attributes>
+      <type>float</type>
+      <minimum>0</minimum>
+      <maximum>0.8</maximum>
+      <increment-step>0.01</increment-step>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </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>
+    <depends-on>
+      <property>
+        <type>hbase-env</type>
+        <name>hbase_user</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase.security.authentication</name>
+    <value>simple</value>
+    <description>
+      Select Simple or Kerberos authentication. Note: Kerberos must be set up before the Kerberos option will take effect.
+    </description>
+    <display-name>Enable Authentication</display-name>
+    <value-attributes>
+      <type>value-list</type>
+      <entries>
+        <entry>
+          <label>Simple</label>
+          <value>simple</value>
+        </entry>
+        <entry>
+          <label>Kerberos</label>
+          <value>kerberos</value>
+        </entry>
+      </entries>
+      <selection-cardinality>1</selection-cardinality>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase.security.authorization</name>
+    <value>false</value>
+    <description> Set Authorization Method.</description>
+    <display-name>Enable Authorization</display-name>
+    <value-attributes>
+      <type>value-list</type>
+      <entries>
+        <entry>
+          <value>true</value>
+          <label>Native</label>
+        </entry>
+        <entry>
+          <value>false</value>
+          <label>Off</label>
+        </entry>
+      </entries>
+      <selection-cardinality>1</selection-cardinality>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase.coprocessor.region.classes</name>
+    <value>org.apache.hadoop.hbase.security.access.SecureBulkLoadEndpoint</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>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <depends-on>
+      <property>
+        <type>hbase-site</type>
+        <name>hbase.security.authorization</name>
+      </property>
+      <property>
+        <type>hbase-site</type>
+        <name>hbase.security.authentication</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase.coprocessor.master.classes</name>
+    <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>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <depends-on>
+      <property>
+        <type>hbase-site</type>
+        <name>hbase.security.authorization</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="true"/>
+  </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>
+    <on-ambari-upgrade add="true"/>
+  </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>localhost</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>
+    <value-attributes>
+      <type>multiLine</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <!-- End of properties used to generate ZooKeeper host:port quorum list. -->
+  <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).&#xB7;
+      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>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>zookeeper.znode.parent</name>
+    <value>/hbase-unsecure</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>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase.client.retries.number</name>
+    <value>35</value>
+    <description>Maximum retries.  Used as maximum for all retryable
+      operations such as the getting of a cell's value, starting a row update,
+      etc.  Retry interval is a rough function based on hbase.client.pause.  At
+      first we retry at this interval but then with backoff, we pretty quickly reach
+      retrying every ten seconds.  See HConstants#RETRY_BACKOFF for how the backup
+      ramps up.  Change this setting and hbase.client.pause to suit your workload.</description>
+    <display-name>Maximum Client Retries</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>5</minimum>
+      <maximum>50</maximum>
+      <increment-step>1</increment-step>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase.rpc.timeout</name>
+    <value>90000</value>
+    <description>
+      This is for the RPC layer to define how long HBase client applications
+      take for a remote call to time out. It uses pings to check connections
+      but will eventually throw a TimeoutException.
+    </description>
+    <display-name>HBase RPC Timeout</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>10000</minimum>
+      <maximum>180000</maximum>
+      <unit>milliseconds</unit>
+      <increment-step>10000</increment-step>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase.defaults.for.version.skip</name>
+    <value>true</value>
+    <description>Disables version verification.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>phoenix.query.timeoutMs</name>
+    <value>60000</value>
+    <description>Number of milliseconds after which a Phoenix query will timeout on the client.</description>
+    <display-name>Phoenix Query Timeout</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>30000</minimum>
+      <maximum>180000</maximum>
+      <unit>milliseconds</unit>
+      <increment-step>10000</increment-step>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.domain.socket.path</name>
+    <value>/var/lib/hadoop-hdfs/dn_socket</value>
+    <description>Path to domain socket.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase.rpc.protection</name>
+    <value>authentication</value>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  
+  <!-- These properties exist in HDP 2.3 and higher. -->
+  <property>
+    <name>hbase.master.port</name>
+    <value>16000</value>
+    <display-name>HBase Master Port</display-name>
+    <description>The port the HBase Master should bind to.</description>
+    <value-attributes>
+      <overridable>false</overridable>
+      <type>int</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase.master.info.port</name>
+    <value>16010</value>
+    <description>The port for the HBase Master web UI.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase.regionserver.port</name>
+    <value>16020</value>
+    <description>The port the HBase RegionServer binds to.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hbase.regionserver.info.port</name>
+    <value>16030</value>
+    <description>The port for the HBase RegionServer web UI.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+
+
+  <!-- These properties exist in HDP 2.5 and higher. -->
+  <property>
+    <name>hbase.master.ui.readonly</name>
+    <value>false</value>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>zookeeper.recovery.retry</name>
+    <value>6</value>
+    <on-ambari-upgrade add="false"/>
+  </property>
+</configuration>

+ 122 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/configuration/ranger-hbase-audit.xml

@@ -0,0 +1,122 @@
+<?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>
+  <!-- These properties exist in HDP 2.5 and higher. -->
+  <property>
+    <name>xasecure.audit.is.enabled</name>
+    <value>true</value>
+    <description>Is Audit enabled?</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.hdfs</name>
+    <value>true</value>
+    <display-name>Audit to HDFS</display-name>
+    <description>Is Audit to HDFS enabled?</description>
+    <value-attributes>
+      <type>boolean</type>
+    </value-attributes>
+    <depends-on>
+      <property>
+        <type>ranger-env</type>
+        <name>xasecure.audit.destination.hdfs</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.hdfs.dir</name>
+    <value>hdfs://NAMENODE_HOSTNAME:8020/ranger/audit</value>
+    <description>HDFS folder to write audit to, make sure the service user has requried permissions</description>
+    <depends-on>
+      <property>
+        <type>ranger-env</type>
+        <name>xasecure.audit.destination.hdfs.dir</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.hdfs.batch.filespool.dir</name>
+    <value>/var/log/hbase/audit/hdfs/spool</value>
+    <description>/var/log/hbase/audit/hdfs/spool</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.solr</name>
+    <value>false</value>
+    <display-name>Audit to SOLR</display-name>
+    <description>Is Solr audit enabled?</description>
+    <value-attributes>
+      <type>boolean</type>
+    </value-attributes>
+    <depends-on>
+      <property>
+        <type>ranger-env</type>
+        <name>xasecure.audit.destination.solr</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.solr.urls</name>
+    <value/>
+    <description>Solr URL</description>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <depends-on>
+      <property>
+        <type>ranger-admin-site</type>
+        <name>ranger.audit.solr.urls</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.solr.zookeepers</name>
+    <value>NONE</value>
+    <description>Solr Zookeeper string</description>
+    <depends-on>
+      <property>
+        <type>ranger-admin-site</type>
+        <name>ranger.audit.solr.zookeepers</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.solr.batch.filespool.dir</name>
+    <value>/var/log/hbase/audit/solr/spool</value>
+    <description>/var/log/hbase/audit/solr/spool</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.provider.summary.enabled</name>
+    <value>true</value>
+    <display-name>Audit provider summary enabled</display-name>
+    <description>Enable Summary audit?</description>
+    <value-attributes>
+      <type>boolean</type>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+</configuration>

+ 66 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/configuration/ranger-hbase-policymgr-ssl.xml

@@ -0,0 +1,66 @@
+<?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>
+  <property>
+    <name>xasecure.policymgr.clientssl.keystore</name>
+    <value>/usr/hdp/current/hbase-client/conf/ranger-plugin-keystore.jks</value>
+    <description>Java Keystore files</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.policymgr.clientssl.keystore.password</name>
+    <value>myKeyFilePassword</value>
+    <property-type>PASSWORD</property-type>
+    <description>password for keystore</description>
+    <value-attributes>
+      <type>password</type>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.policymgr.clientssl.truststore</name>
+    <value>/usr/hdp/current/hbase-client/conf/ranger-plugin-truststore.jks</value>
+    <description>java truststore file</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.policymgr.clientssl.truststore.password</name>
+    <value>changeit</value>
+    <property-type>PASSWORD</property-type>
+    <description>java truststore password</description>
+    <value-attributes>
+      <type>password</type>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.policymgr.clientssl.keystore.credential.file</name>
+    <value>jceks://file{{credential_file}}</value>
+    <description>java keystore credential file</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.policymgr.clientssl.truststore.credential.file</name>
+    <value>jceks://file{{credential_file}}</value>
+    <description>java truststore credential file</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+</configuration>

+ 68 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/configuration/ranger-hbase-security.xml

@@ -0,0 +1,68 @@
+<?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>
+  <property>
+    <name>ranger.plugin.hbase.service.name</name>
+    <value>{{repo_name}}</value>
+    <description>Name of the Ranger service containing HBase policies</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>ranger.plugin.hbase.policy.source.impl</name>
+    <value>org.apache.ranger.admin.client.RangerAdminRESTClient</value>
+    <description>Class to retrieve policies from the source</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>ranger.plugin.hbase.policy.rest.url</name>
+    <value>{{policymgr_mgr_url}}</value>
+    <description>URL to Ranger Admin</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>ranger.plugin.hbase.policy.rest.ssl.config.file</name>
+    <value>/etc/hbase/conf/ranger-policymgr-ssl.xml</value>
+    <description>Path to the file containing SSL details to contact Ranger Admin</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>ranger.plugin.hbase.policy.pollIntervalMs</name>
+    <value>30000</value>
+    <description>How often to poll for changes in policies?</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>ranger.plugin.hbase.policy.cache.dir</name>
+    <value>/etc/ranger/{{repo_name}}/policycache</value>
+    <description>Directory where Ranger policies are cached after successful retrieval from the source</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.hbase.update.xapolicies.on.grant.revoke</name>
+    <value>true</value>
+    <display-name>Should HBase GRANT/REVOKE update XA policies</display-name>
+    <description>Should HBase plugin update Ranger policies for updates to permissions done using GRANT/REVOKE?</description>
+    <value-attributes>
+      <type>boolean</type>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+</configuration>

+ 159 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/kerberos.json

@@ -0,0 +1,159 @@
+{
+  "services": [
+    {
+      "name": "HBASE",
+      "identities": [
+        {
+          "name": "/spnego"
+        },
+        {
+          "name": "hbase",
+          "principal": {
+            "value": "${hbase-env/hbase_user}-${cluster_name|toLower()}@${realm}",
+            "type" : "user",
+            "configuration": "hbase-env/hbase_principal_name",
+            "local_username": "${hbase-env/hbase_user}"
+          },
+          "keytab": {
+            "file": "${keytab_dir}/hbase.headless.keytab",
+            "owner": {
+              "name": "${hbase-env/hbase_user}",
+              "access": "r"
+            },
+            "group": {
+              "name": "${cluster-env/user_group}",
+              "access": "r"
+            },
+            "configuration": "hbase-env/hbase_user_keytab"
+          }
+        },
+        {
+          "name": "/smokeuser"
+        }
+      ],
+      "configurations": [
+        {
+          "hbase-site": {
+            "hbase.security.authentication": "kerberos",
+            "hbase.security.authorization": "true",
+            "zookeeper.znode.parent": "/hbase-secure",
+            "hbase.coprocessor.master.classes": "{{hbase_coprocessor_master_classes}}",
+            "hbase.coprocessor.region.classes": "{{hbase_coprocessor_region_classes}}",
+            "hbase.coprocessor.regionserver.classes": "{{hbase_coprocessor_regionserver_classes}}",
+            "hbase.bulkload.staging.dir": "/apps/hbase/staging",
+            "hbase.master.ui.readonly": "true"
+          }
+        },
+        {
+          "ranger-hbase-audit": {
+            "xasecure.audit.jaas.Client.loginModuleName": "com.sun.security.auth.module.Krb5LoginModule",
+            "xasecure.audit.jaas.Client.loginModuleControlFlag": "required",
+            "xasecure.audit.jaas.Client.option.useKeyTab": "true",
+            "xasecure.audit.jaas.Client.option.storeKey": "false",
+            "xasecure.audit.jaas.Client.option.serviceName": "solr",
+            "xasecure.audit.destination.solr.force.use.inmemory.jaas.config": "true"
+          }
+        }
+      ],
+      "components": [
+        {
+          "name": "HBASE_MASTER",
+          "identities": [
+            {
+              "name": "/HDFS/NAMENODE/hdfs"
+            },
+            {
+              "name": "hbase_master_hbase",
+              "principal": {
+                "value": "hbase/_HOST@${realm}",
+                "type" : "service",
+                "configuration": "hbase-site/hbase.master.kerberos.principal",
+                "local_username": "${hbase-env/hbase_user}"
+              },
+              "keytab": {
+                "file": "${keytab_dir}/hbase.service.keytab",
+                "owner": {
+                  "name": "${hbase-env/hbase_user}",
+                  "access": "r"
+                },
+                "group": {
+                  "name": "${cluster-env/user_group}",
+                  "access": ""
+                },
+                "configuration": "hbase-site/hbase.master.keytab.file"
+              }
+            },
+            {
+              "name": "/spnego",
+              "principal": {
+                "configuration": "hbase-site/hbase.security.authentication.spnego.kerberos.principal"
+              },
+              "keytab": {
+                "configuration": "hbase-site/hbase.security.authentication.spnego.kerberos.keytab"
+              }
+            },
+            {
+              "name": "/HBASE/HBASE_MASTER/hbase_master_hbase",
+              "principal": {
+                "configuration": "ranger-hbase-audit/xasecure.audit.jaas.Client.option.principal"
+              },
+              "keytab": {
+                "configuration": "ranger-hbase-audit/xasecure.audit.jaas.Client.option.keyTab"
+              }
+            }
+          ]
+        },
+        {
+          "name": "HBASE_REGIONSERVER",
+          "identities": [
+            {
+              "name": "hbase_regionserver_hbase",
+              "principal": {
+                "value": "hbase/_HOST@${realm}",
+                "type" : "service",
+                "configuration": "hbase-site/hbase.regionserver.kerberos.principal",
+                "local_username": "${hbase-env/hbase_user}"
+              },
+              "keytab": {
+                "file": "${keytab_dir}/hbase.service.keytab",
+                "owner": {
+                  "name": "${hbase-env/hbase_user}",
+                  "access": "r"
+                },
+                "group": {
+                  "name": "${cluster-env/user_group}",
+                  "access": ""
+                },
+                "configuration": "hbase-site/hbase.regionserver.keytab.file"
+              }
+            },
+            {
+              "name": "/spnego",
+              "principal": {
+                "configuration": "hbase-site/hbase.security.authentication.spnego.kerberos.principal"
+              },
+              "keytab": {
+                "configuration": "hbase-site/hbase.security.authentication.spnego.kerberos.keytab"
+              }
+            }
+          ]
+        },
+        {
+          "name": "PHOENIX_QUERY_SERVER",
+          "identities": [
+            {
+              "name": "phoenix_spnego",
+              "reference": "/spnego",
+              "principal": {
+                "configuration": "hbase-site/phoenix.queryserver.kerberos.principal"
+              },
+              "keytab": {
+                "configuration": "hbase-site/phoenix.queryserver.keytab.file"
+              }
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}

+ 196 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/metainfo.xml

@@ -0,0 +1,196 @@
+<?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>
+  <schemaVersion>2.0</schemaVersion>
+  <services>
+    <service>
+      <name>HBASE</name>
+      <displayName>HBase</displayName>
+      <version>1.1.1.2.3</version>
+      <comment>A Non-relational distributed database, plus Phoenix, a high performance SQL layer for low latency applications.</comment>
+
+      <components>
+        <component>
+          <name>HBASE_MASTER</name>
+          <displayName>HBase Master</displayName>
+          <category>MASTER</category>
+          <cardinality>1+</cardinality>
+          <versionAdvertised>true</versionAdvertised>
+          <timelineAppid>HBASE</timelineAppid>
+          <dependencies>
+            <dependency>
+              <name>HDFS/HDFS_CLIENT</name>
+              <scope>host</scope>
+              <auto-deploy>
+                <enabled>true</enabled>
+              </auto-deploy>
+            </dependency>
+            <dependency>
+              <name>ZOOKEEPER/ZOOKEEPER_SERVER</name>
+              <scope>cluster</scope>
+              <auto-deploy>
+                <enabled>true</enabled>
+                <co-locate>HBASE/HBASE_MASTER</co-locate>
+              </auto-deploy>
+            </dependency>
+          </dependencies>
+          <commandScript>
+            <script>scripts/hbase_master.py</script>
+            <scriptType>PYTHON</scriptType>
+            <timeout>1200</timeout>
+          </commandScript>
+          <logs>
+            <log>
+              <logId>hbase_master</logId>
+              <primary>true</primary>
+            </log>
+          </logs>
+          <customCommands>
+            <customCommand>
+              <name>DECOMMISSION</name>
+              <commandScript>
+                <script>scripts/hbase_master.py</script>
+                <scriptType>PYTHON</scriptType>
+                <timeout>600</timeout>
+              </commandScript>
+            </customCommand>
+          </customCommands>
+        </component>
+
+        <component>
+          <name>PHOENIX_QUERY_SERVER</name>
+          <displayName>Phoenix Query Server</displayName>
+          <category>SLAVE</category>
+          <cardinality>0+</cardinality>
+          <versionAdvertised>true</versionAdvertised>
+          <commandScript>
+            <script>scripts/phoenix_queryserver.py</script>
+            <scriptType>PYTHON</scriptType>
+          </commandScript>
+          <logs>
+            <log>
+              <logId>hbase_phoenix_server</logId>
+              <primary>true</primary>
+            </log>
+          </logs>
+        </component>
+
+        <component>
+          <name>HBASE_REGIONSERVER</name>
+          <displayName>RegionServer</displayName>
+          <category>SLAVE</category>
+          <cardinality>1+</cardinality>
+          <versionAdvertised>true</versionAdvertised>
+          <decommissionAllowed>true</decommissionAllowed>
+          <timelineAppid>HBASE</timelineAppid>
+          <commandScript>
+            <script>scripts/hbase_regionserver.py</script>
+            <scriptType>PYTHON</scriptType>
+          </commandScript>
+          <bulkCommands>
+            <displayName>RegionServers</displayName>
+            <!-- Used by decommission and recommission -->
+            <masterComponent>HBASE_MASTER</masterComponent>
+          </bulkCommands>
+          <logs>
+            <log>
+              <logId>hbase_regionserver</logId>
+              <primary>true</primary>
+            </log>
+          </logs>
+        </component>
+
+        <component>
+          <name>HBASE_CLIENT</name>
+          <displayName>HBase Client</displayName>
+          <category>CLIENT</category>
+          <cardinality>1+</cardinality>
+          <versionAdvertised>true</versionAdvertised>
+          <commandScript>
+            <script>scripts/hbase_client.py</script>
+            <scriptType>PYTHON</scriptType>
+          </commandScript>
+          <configFiles>
+            <configFile>
+              <type>xml</type>
+              <fileName>hbase-site.xml</fileName>
+              <dictionaryName>hbase-site</dictionaryName>
+            </configFile>
+            <configFile>
+              <type>env</type>
+              <fileName>hbase-env.sh</fileName>
+              <dictionaryName>hbase-env</dictionaryName>
+            </configFile>
+            <configFile>
+              <type>xml</type>
+              <fileName>hbase-policy.xml</fileName>
+              <dictionaryName>hbase-policy</dictionaryName>
+            </configFile>
+            <configFile>
+              <type>env</type>
+              <fileName>log4j.properties</fileName>
+              <dictionaryName>hbase-log4j</dictionaryName>
+            </configFile>
+          </configFiles>
+        </component>
+      </components>
+
+      <themes>
+        <theme>
+          <fileName>theme.json</fileName>
+          <default>true</default>
+        </theme>
+      </themes>
+
+      <quickLinksConfigurations>
+        <quickLinksConfiguration>
+          <fileName>quicklinks.json</fileName>
+          <default>true</default>
+        </quickLinksConfiguration>
+      </quickLinksConfigurations>
+
+      <!-- No packages to install. -->
+      <osSpecifics></osSpecifics>
+
+      <configuration-dependencies>
+        <config-type>core-site</config-type> <!-- hbase puts core-site in it's folder -->
+        <config-type>hbase-policy</config-type>
+        <config-type>hbase-site</config-type>
+        <config-type>hbase-env</config-type>
+        <config-type>hbase-log4j</config-type>
+        <config-type>ranger-hbase-plugin-properties</config-type>
+        <config-type>ranger-hbase-audit</config-type>
+        <config-type>ranger-hbase-policymgr-ssl</config-type>
+        <config-type>ranger-hbase-security</config-type>
+        <config-type>ams-ssl-client</config-type>
+      </configuration-dependencies>
+
+      <commandScript>
+        <script>scripts/service_check.py</script>
+        <scriptType>PYTHON</scriptType>
+        <timeout>300</timeout>
+      </commandScript>
+
+      <requiredServices>
+        <service>ZOOKEEPER</service>
+        <service>HDFS</service>
+      </requiredServices>
+
+    </service>
+  </services>
+</metainfo>

+ 9374 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/metrics.json

@@ -0,0 +1,9374 @@
+{
+  "HBASE_REGIONSERVER": {
+    "Component": [
+      {
+        "type": "ganglia",
+        "metrics": {
+          "default": {
+            "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_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/disk/read_bps":{
+              "metric":"read_bps",
+              "pointInTime":true,
+              "temporal":true
+            },
+            "metrics/disk/write_bps":{
+              "metric":"write_bps",
+              "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/disk/read_count":{
+              "metric":"read_count",
+              "pointInTime":true,
+              "temporal":true
+            },
+            "metrics/disk/write_count":{
+              "metric":"write_count",
+              "pointInTime":true,
+              "temporal":true
+            },
+            "metrics/disk/read_bytes":{
+              "metric":"read_bytes",
+              "pointInTime":true,
+              "temporal":true
+            },
+            "metrics/disk/write_bytes":{
+              "metric":"write_bytes",
+              "pointInTime":true,
+              "temporal":true
+            },
+            "metrics/disk/read_time":{
+              "metric":"read_time",
+              "pointInTime":true,
+              "temporal":true
+            },
+            "metrics/disk/write_time":{
+              "metric":"write_time",
+              "pointInTime":true,
+              "temporal":true
+            },
+            "metrics/hbase/regionserver/mutationsWithoutWALSize": {
+              "metric": "regionserver.Server.mutationsWithoutWALSize",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/slowAppendCount": {
+              "metric": "regionserver.Server.slowAppendCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/disk/part_max_used": {
+              "metric": "part_max_used",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/blockCacheCount": {
+              "metric": "regionserver.Server.blockCacheCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginSuccess_num_ops": {
+              "metric": "ugi.UgiMetrics.LoginSuccessNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemHeapCommittedM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsRunnable": {
+              "metric": "jvm.JvmMetrics.ThreadsRunnable",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_min": {
+              "metric": "regionserver.Server.Delete_min",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsNew": {
+              "metric": "jvm.JvmMetrics.ThreadsNew",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationFailures": {
+              "metric": "regionserver.RegionServer.authorizationFailures",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_avg_time": {
+              "metric": "regionserver.RegionServer.QueueCallTime_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/boottime": {
+              "metric": "boottime",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric":true
+            },
+            "metrics/hbase/regionserver/writeRequestsCount": {
+              "metric": "regionserver.Server.writeRequestCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/getRequestLatency_min": {
+              "metric": "regionserver.Server.Get_min",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_num_ops": {
+              "metric": "regionserver.RegionServer.ProcessCallTime_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logError": {
+              "metric": "jvm.JvmMetrics.LogError",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/putRequestLatency_75th_percentile": {
+              "metric": "regionserver.Server.Mutate_75th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/blockCacheHitCount": {
+              "metric": "regionserver.Server.blockCacheHitCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/slowPutCount": {
+              "metric": "regionserver.Server.slowPutCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/regionServerStartup_avg_time": {
+              "metric": "regionserver.Server.regionServerStartTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/blockCacheSize": {
+              "metric": "regionserver.Server.blockCacheSize",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsBlocked": {
+              "metric": "jvm.JvmMetrics.ThreadsBlocked",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/putRequestLatency_median": {
+              "metric": "regionserver.Server.Mutate_median",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/readRequestsCount": {
+              "metric": "regionserver.Server.readRequestCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/putRequestLatency_min": {
+              "metric": "regionserver.Server.Mutate_min",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/storefileIndexSizeMB": {
+              "metric": "regionserver.Server.storeFileIndexSize",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_median": {
+              "metric": "regionserver.Server.Delete_median",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/Server/Get_num_ops": {
+              "metric": "regionserver.Server.Get_num_ops",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/Server/ScanNext_num_ops": {
+              "metric": "regionserver.Server.ScanNext_num_ops",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/Server/Append_num_ops": {
+              "metric": "regionserver.Server.Append_num_ops",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/Server/Delete_num_ops": {
+              "metric": "regionserver.Server.Delete_num_ops",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/Server/Mutate_num_ops": {
+              "metric": "regionserver.Server.Mutate_num_ops",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/Server/Increment_num_ops": {
+              "metric": "regionserver.Server.Increment_num_ops",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/Server/Get_95th_percentile": {
+              "metric": "regionserver.Server.Get_95th_percentile",
+              "unit": "ms",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/Server/ScanNext_95th_percentile": {
+              "metric": "regionserver.Server.ScanNext_95th_percentile",
+              "unit": "ms",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/Server/Mutate_95th_percentile": {
+              "metric": "regionserver.Server.Mutate_95th_percentile",
+              "unit": "ms",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/Server/Increment_95th_percentile": {
+              "metric": "regionserver.Server.Increment_95th_percentile",
+              "unit": "ms",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/Server/Append_95th_percentile": {
+              "metric": "regionserver.Server.Append_95th_percentile",
+              "unit": "ms",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/Server/Delete_95th_percentile": {
+              "metric": "regionserver.Server.Delete_95th_percentile",
+              "unit": "ms",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/Server/percentFilesLocal": {
+              "metric": "regionserver.Server.percentFilesLocal",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/Server/updatesBlockedTime": {
+              "metric": "regionserver.Server.updatesBlockedTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/ipc/IPC/numOpenConnections": {
+              "metric": "regionserver.RegionServer.numOpenConnections",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/ipc/IPC/numActiveHandler": {
+              "metric": "regionserver.RegionServer.numActiveHandler",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/ipc/IPC/numCallsInGeneralQueue": {
+              "metric": "regionserver.RegionServer.numCallsInGeneralQueue",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/putRequestLatency_mean": {
+              "metric": "regionserver.Server.Mutate_mean",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_avg_time": {
+              "metric": "regionserver.RegionServer.ProcessCallTime_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+           "metrics/rpc/rpcAuthenticationFailures": {
+              "metric": "regionserver.RegionServer.authenticationFailures",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/blockCacheHitRatio": {
+              "metric": "regionserver.Server.blockCacheCountHitPercent",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/blockCacheHitPercent": {
+              "metric": "regionserver.Server.blockCountHitPercent",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/blockCacheEvictedCount": {
+              "metric": "regionserver.Server.blockCacheEvictionCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/putRequestLatency_99th_percentile": {
+              "metric": "regionserver.Server.Mutate_99th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/getRequestLatency_max": {
+              "metric": "regionserver.Server.Get_max",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginFailure_avg_time": {
+              "metric": "ugi.UgiMetrics.LoginFailureAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logFatal": {
+              "metric": "jvm.JvmMetrics.LogFatal",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/getRequestLatency_99th_percentile": {
+              "metric": "regionserver.Server.Get_99th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginSuccess_avg_time": {
+              "metric": "ugi.UgiMetrics.LoginSuccessAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_99th_percentile": {
+              "metric": "regionserver.Server.Delete_99th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapUsedM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/slowIncrementCount": {
+              "metric": "regionserver.Server.slowIncrementCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/compactionQueueSize": {
+              "metric": "regionserver.Server.compactionQueueLength",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/flushTime_num_ops": {
+              "metric": "regionserver.Server.FlushTime_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/getRequestLatency_75th_percentile": {
+              "metric": "regionserver.Server.Get_75th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapCommittedM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/stores": {
+              "metric": "regionserver.Server.storeCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginFailure_num_ops": {
+              "metric": "ugi.UgiMetrics.LoginFailureNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthenticationSuccesses": {
+              "metric": "regionserver.RegionServer.authenticationSuccesses",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/ReceivedBytes": {
+              "metric": "regionserver.RegionServer.receivedBytes",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcTimeMillis": {
+              "metric": "jvm.JvmMetrics.GcTimeMillis",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTerminated": {
+              "metric": "jvm.JvmMetrics.ThreadsTerminated",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/putRequestLatency_max": {
+              "metric": "regionserver.Server.Mutate_max",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/getRequestLatency_mean": {
+              "metric": "regionserver.Server.Get_mean",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/regions": {
+              "metric": "regionserver.Server.regionCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/blockCacheFree": {
+              "metric": "regionserver.Server.blockCacheFreeSize",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/blockCacheMissCount": {
+              "metric": "regionserver.Server.blockCacheMissCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/flushQueueSize": {
+              "metric": "regionserver.Server.flushQueueLength",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_num_ops": {
+              "metric": "regionserver.RegionServer.QueueCallTime_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_mean": {
+              "metric": "regionserver.Server.Delete_mean",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/cpu/cpu_aidle": {
+              "metric": "cpu_aidle",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/totalStaticIndexSizeKB": {
+              "metric": "regionserver.Server.staticIndexSize",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/mutationsWithoutWALCount": {
+              "metric": "regionserver.Server.mutationsWithoutWALCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/getRequestLatency_median": {
+              "metric": "regionserver.Server.Get_median",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/cpu/cpu_speed": {
+              "metric": "cpu_speed",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_max": {
+              "metric": "regionserver.Server.Delete_max",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/SentBytes": {
+              "metric": "regionserver.RegionServer.sentBytes",
+              "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/threadsTimedWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsTimedWaiting",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcCount": {
+              "metric": "jvm.JvmMetrics.GcCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/flushTime_avg_time": {
+              "metric": "regionserver.Server.FlushTime_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemHeapUsedM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsWaiting",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/slowGetCount": {
+              "metric": "regionserver.Server.slowGetCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/requests": {
+              "metric": "regionserver.Server.totalRequestCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/storefiles": {
+              "metric": "regionserver.Server.storeFileCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/slowDeleteCount": {
+              "metric": "regionserver.Server.slowDeleteCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logInfo": {
+              "metric": "jvm.JvmMetrics.LogInfo",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/hlogFileCount": {
+              "metric": "regionserver.Server.hlogFileCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_95th_percentile": {
+              "metric": "regionserver.Server.Delete_95th_percentile",
+              "unit": "ms",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/memstoreSize": {
+              "metric": "regionserver.Server.memStoreSize",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_75th_percentile": {
+              "metric": "regionserver.Server.Delete_75th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationSuccesses": {
+              "metric": "regionserver.RegionServer.authorizationSuccesses",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/totalStaticBloomSizeKB": {
+              "metric": "regionserver.Server.staticBloomSize",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/increment_avg_time": {
+              "metric": "regionserver.Server.Increment_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcCountConcurrentMarkSweep": {
+              "metric": "jvm.JvmMetrics.GcCountConcurrentMarkSweep",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcCountParNew": {
+              "metric": "jvm.JvmMetrics.GcCountParNew",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcTimeMillisConcurrentMarkSweep": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisConcurrentMarkSweep",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcTimeMillisParNew": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisParNew",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemHeapMaxM": {
+              "metric": "jvm.JvmMetrics.MemHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemMaxM": {
+              "metric": "jvm.JvmMetrics.MemMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemNonHeapMaxM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/DroppedPubAll": {
+              "metric": "metricssystem.MetricsSystem.DroppedPubAll",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumActiveSinks": {
+              "metric": "metricssystem.MetricsSystem.NumActiveSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumActiveSources": {
+              "metric": "metricssystem.MetricsSystem.NumActiveSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumAllSinks": {
+              "metric": "metricssystem.MetricsSystem.NumAllSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumAllSources": {
+              "metric": "metricssystem.MetricsSystem.NumAllSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/PublishAvgTime": {
+              "metric": "metricssystem.MetricsSystem.PublishAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/PublishNumOps": {
+              "metric": "metricssystem.MetricsSystem.PublishNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineAvgTime": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineDropped": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineDropped",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineNumOps": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineQsize": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineQsize",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/SnapshotAvgTime": {
+              "metric": "metricssystem.MetricsSystem.SnapshotAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/SnapshotNumOps": {
+              "metric": "metricssystem.MetricsSystem.SnapshotNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/numCallsInPriorityQueue": {
+              "metric": "regionserver.RegionServer.numCallsInPriorityQueue",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/numCallsInReplicationQueue": {
+              "metric": "regionserver.RegionServer.numCallsInReplicationQueue",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/ProcessCallTime_75th_percentile": {
+              "metric": "regionserver.RegionServer.ProcessCallTime_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/ProcessCallTime_95th_percentile": {
+              "metric": "regionserver.RegionServer.ProcessCallTime_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/ProcessCallTime_99th_percentile": {
+              "metric": "regionserver.RegionServer.ProcessCallTime_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/ProcessCallTime_max": {
+              "metric": "regionserver.RegionServer.ProcessCallTime_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/ProcessCallTime_mean": {
+              "metric": "regionserver.RegionServer.ProcessCallTime_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/ProcessCallTime_min": {
+              "metric": "regionserver.RegionServer.ProcessCallTime_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/QueueCallTime_75th_percentile": {
+              "metric": "regionserver.RegionServer.QueueCallTime_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/QueueCallTime_95th_percentile": {
+              "metric": "regionserver.RegionServer.QueueCallTime_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/QueueCallTime_99th_percentile": {
+              "metric": "regionserver.RegionServer.QueueCallTime_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/QueueCallTime_max": {
+              "metric": "regionserver.RegionServer.QueueCallTime_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/QueueCallTime_mean": {
+              "metric": "regionserver.RegionServer.QueueCallTime_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/QueueCallTime_min": {
+              "metric": "regionserver.RegionServer.QueueCallTime_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/queueSize": {
+              "metric": "regionserver.RegionServer.queueSize",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/TotalCallTime_75th_percentile": {
+              "metric": "regionserver.RegionServer.TotalCallTime_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/TotalCallTime_95th_percentile": {
+              "metric": "regionserver.RegionServer.TotalCallTime_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/TotalCallTime_99th_percentile": {
+              "metric": "regionserver.RegionServer.TotalCallTime_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/TotalCallTime_max": {
+              "metric": "regionserver.RegionServer.TotalCallTime_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/TotalCallTime_mean": {
+              "metric": "regionserver.RegionServer.TotalCallTime_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/TotalCallTime_median": {
+              "metric": "regionserver.RegionServer.TotalCallTime_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/TotalCallTime_min": {
+              "metric": "regionserver.RegionServer.TotalCallTime_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/TotalCallTime_num_ops": {
+              "metric": "regionserver.RegionServer.TotalCallTime_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Replication/sink/ageOfLastAppliedOp": {
+              "metric": "regionserver.Replication.sink.ageOfLastAppliedOp",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Replication/sink/appliedBatches": {
+              "metric": "regionserver.Replication.sink.appliedBatches",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Replication/sink/appliedOps": {
+              "metric": "regionserver.Replication.sink.appliedOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Append_75th_percentile": {
+              "metric": "regionserver.Server.Append_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Append_99th_percentile": {
+              "metric": "regionserver.Server.Append_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Append_max": {
+              "metric": "regionserver.Server.Append_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Append_mean": {
+              "metric": "regionserver.Server.Append_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Append_median": {
+              "metric": "regionserver.Server.Append_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Append_min": {
+              "metric": "regionserver.Server.Append_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/blockCacheExpressHitPercent": {
+              "metric": "regionserver.Server.blockCacheExpressHitPercent",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/blockedRequestCount": {
+              "metric": "regionserver.Server.blockedRequestCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/checkMutateFailedCount": {
+              "metric": "regionserver.Server.checkMutateFailedCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/checkMutatePassedCount": {
+              "metric": "regionserver.Server.checkMutatePassedCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/compactedCellsCount": {
+              "metric": "regionserver.Server.compactedCellsCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/compactedCellsSize": {
+              "metric": "regionserver.Server.compactedCellsSize",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/flushedCellsCount": {
+              "metric": "regionserver.Server.flushedCellsCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/flushedCellsSize": {
+              "metric": "regionserver.Server.flushedCellsSize",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/FlushTime_75th_percentile": {
+              "metric": "regionserver.Server.FlushTime_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/FlushTime_95th_percentile": {
+              "metric": "regionserver.Server.FlushTime_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/FlushTime_99th_percentile": {
+              "metric": "regionserver.Server.FlushTime_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/FlushTime_max": {
+              "metric": "regionserver.Server.FlushTime_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/FlushTime_mean": {
+              "metric": "regionserver.Server.FlushTime_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/FlushTime_min": {
+              "metric": "regionserver.Server.FlushTime_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/hlogFileSize": {
+              "metric": "regionserver.Server.hlogFileSize",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Increment_75th_percentile": {
+              "metric": "regionserver.Server.Increment_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Increment_99th_percentile": {
+              "metric": "regionserver.Server.Increment_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Increment_max": {
+              "metric": "regionserver.Server.Increment_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Increment_mean": {
+              "metric": "regionserver.Server.Increment_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Increment_min": {
+              "metric": "regionserver.Server.Increment_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/majorCompactedCellsCount": {
+              "metric": "regionserver.Server.majorCompactedCellsCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/majorCompactedCellsSize": {
+              "metric": "regionserver.Server.majorCompactedCellsSize",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/percentFilesLocalSecondaryRegions": {
+              "metric": "regionserver.Server.percentFilesLocalSecondaryRegions",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Replay_75th_percentile": {
+              "metric": "regionserver.Server.Replay_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Replay_95th_percentile": {
+              "metric": "regionserver.Server.Replay_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Replay_99th_percentile": {
+              "metric": "regionserver.Server.Replay_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Replay_max": {
+              "metric": "regionserver.Server.Replay_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Replay_mean": {
+              "metric": "regionserver.Server.Replay_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Replay_median": {
+              "metric": "regionserver.Server.Replay_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Replay_min": {
+              "metric": "regionserver.Server.Replay_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Replay_num_ops": {
+              "metric": "regionserver.Server.Replay_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/ScanNext_75th_percentile": {
+              "metric": "regionserver.Server.ScanNext_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/ScanNext_99th_percentile": {
+              "metric": "regionserver.Server.ScanNext_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/ScanNext_max": {
+              "metric": "regionserver.Server.ScanNext_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/ScanNext_mean": {
+              "metric": "regionserver.Server.ScanNext_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/ScanNext_median": {
+              "metric": "regionserver.Server.ScanNext_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/ScanNext_min": {
+              "metric": "regionserver.Server.ScanNext_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/splitQueueLength": {
+              "metric": "regionserver.Server.splitQueueLength",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/splitRequestCount": {
+              "metric": "regionserver.Server.splitRequestCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/splitSuccessCount": {
+              "metric": "regionserver.Server.splitSuccessCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/SplitTime_75th_percentile": {
+              "metric": "regionserver.Server.SplitTime_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/SplitTime_95th_percentile": {
+              "metric": "regionserver.Server.SplitTime_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/SplitTime_99th_percentile": {
+              "metric": "regionserver.Server.SplitTime_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/SplitTime_max": {
+              "metric": "regionserver.Server.SplitTime_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/SplitTime_mean": {
+              "metric": "regionserver.Server.SplitTime_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/SplitTime_median": {
+              "metric": "regionserver.Server.SplitTime_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/SplitTime_min": {
+              "metric": "regionserver.Server.SplitTime_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/SplitTime_num_ops": {
+              "metric": "regionserver.Server.SplitTime_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/storeFileSize": {
+              "metric": "regionserver.Server.storeFileSize",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/appendCount": {
+              "metric": "regionserver.WAL.appendCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_75th_percentile": {
+              "metric": "regionserver.WAL.AppendSize_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_95th_percentile": {
+              "metric": "regionserver.WAL.AppendSize_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_99th_percentile": {
+              "metric": "regionserver.WAL.AppendSize_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_max": {
+              "metric": "regionserver.WAL.AppendSize_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_mean": {
+              "metric": "regionserver.WAL.AppendSize_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_median": {
+              "metric": "regionserver.WAL.AppendSize_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_min": {
+              "metric": "regionserver.WAL.AppendSize_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_num_ops": {
+              "metric": "regionserver.WAL.AppendSize_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_75th_percentile": {
+              "metric": "regionserver.WAL.AppendTime_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_95th_percentile": {
+              "metric": "regionserver.WAL.AppendTime_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_99th_percentile": {
+              "metric": "regionserver.WAL.AppendTime_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_max": {
+              "metric": "regionserver.WAL.AppendTime_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_mean": {
+              "metric": "regionserver.WAL.AppendTime_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_median": {
+              "metric": "regionserver.WAL.AppendTime_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_min": {
+              "metric": "regionserver.WAL.AppendTime_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_num_ops": {
+              "metric": "regionserver.WAL.AppendTime_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/lowReplicaRollRequest": {
+              "metric": "regionserver.WAL.lowReplicaRollRequest",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/rollRequest": {
+              "metric": "regionserver.WAL.rollRequest",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/slowAppendCount": {
+              "metric": "regionserver.WAL.slowAppendCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_75th_percentile": {
+              "metric": "regionserver.WAL.SyncTime_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_95th_percentile": {
+              "metric": "regionserver.WAL.SyncTime_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_99th_percentile": {
+              "metric": "regionserver.WAL.SyncTime_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_max": {
+              "metric": "regionserver.WAL.SyncTime_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_mean": {
+              "metric": "regionserver.WAL.SyncTime_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_median": {
+              "metric": "regionserver.WAL.SyncTime_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_min": {
+              "metric": "regionserver.WAL.SyncTime_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_num_ops": {
+              "metric": "regionserver.WAL.SyncTime_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/GetGroupsAvgTime": {
+              "metric": "ugi.UgiMetrics.GetGroupsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/GetGroupsNumOps": {
+              "metric": "ugi.UgiMetrics.GetGroupsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            }
+          }
+        }
+      },
+      {
+        "type": "jmx",
+        "metrics": {
+          "default": {
+            "metrics/hbase/regionserver/slowPutCount": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.slowPutCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/percentFilesLocal": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.percentFilesLocal",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_min": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_min",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/blockCacheFree": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.blockCacheFreeSize",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/mutationsWithoutWALSize": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.mutationsWithoutWALSize",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/blockCacheMissCount": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.blockCacheMissCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/flushQueueSize": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.flushQueueLength",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_99th_percentile": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_99th_percentile",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/getRequestLatency_num_ops": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/ScanNext_num_ops": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.ScanNext_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/Increment_num_ops": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Increment_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/Append_num_ops": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Append_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/ScanNext_95th_percentile": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.ScanNext_95th_percentile",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/Append_95th_percentile": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Append_95th_percentile",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/Increment_95th_percentile": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Increment_95th_percentile",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/updatesBlockedTime": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.updatesBlockedTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/IPC/numActiveHandler": {
+              "metric": "Hadoop:service=HBase,name=IPC,sub=IPC.numActiveHandler",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/IPC/numCallsInGeneralQueue": {
+              "metric": "Hadoop:service=HBase,name=IPC,sub=IPC.numCallsInGeneralQueue",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/IPC/numOpenConnections": {
+              "metric": "Hadoop:service=HBase,name=IPC,sub=IPC.numOpenConnections",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/slowAppendCount": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.slowAppendCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/blockCacheSize": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.blockCacheSize",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/putRequestLatency_num_ops": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/slowIncrementCount": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.slowIncrementCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/blockCacheEvictedCount": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.blockCacheEvictionCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/putRequestLatency_95th_percentile": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_95th_percentile",
+              "unit": "ms",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/putRequestLatency_median": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_median",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_mean": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_mean",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/slowGetCount": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.slowGetCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/blockCacheCount": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.blockCacheCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/getRequestLatency_75th_percentile": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_75th_percentile",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/putRequestLatency_min": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_min",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/storefileIndexSizeMB": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.storeFileIndexSize",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_median": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_median",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/putRequestLatency_max": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_max",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/totalStaticIndexSizeKB": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.staticIndexSize",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_num_ops": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/putRequestLatency_mean": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_mean",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/requests": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.totalRequestCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/storefiles": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.storeFileCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/mutationsWithoutWALCount": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.mutationsWithoutWALCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/getRequestLatency_median": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_median",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/slowDeleteCount": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.slowDeleteCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/putRequestLatency_99th_percentile": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_99th_percentile",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/stores": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.storeCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/getRequestLatency_min": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_min",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/getRequestLatency_95th_percentile": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_95th_percentile",
+              "unit": "ms",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_95th_percentile": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_95th_percentile",
+              "unit": "ms",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/getRequestLatency_max": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_max",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/getRequestLatency_mean": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_mean",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_75th_percentile": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_75th_percentile",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_max": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_max",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/putRequestLatency_75th_percentile": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_75th_percentile",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/totalStaticBloomSizeKB": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.staticBloomSize",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/blockCacheHitCount": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.blockCacheHitCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/getRequestLatency_99th_percentile": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_99th_percentile",
+              "pointInTime": true,
+              "temporal": false
+            }
+          }
+        }
+      }
+    ],
+    "HostComponent": [
+      {
+        "type": "ganglia",
+        "metrics": {
+          "default": {
+            "metrics/cpu/cpu_idle":{
+              "metric":"cpu_idle",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/cpu/cpu_nice":{
+              "metric":"cpu_nice",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/cpu/cpu_system":{
+              "metric":"cpu_system",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/cpu/cpu_user":{
+              "metric":"cpu_user",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/cpu/cpu_wio":{
+              "metric":"cpu_wio",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/disk_free":{
+              "metric":"disk_free",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/disk_total":{
+              "metric":"disk_total",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/read_bps":{
+              "metric":"read_bps",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/write_bps":{
+              "metric":"write_bps",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/load/load_fifteen":{
+              "metric":"load_fifteen",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/load/load_five":{
+              "metric":"load_five",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/load/load_one":{
+              "metric":"load_one",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_buffers":{
+              "metric":"mem_buffers",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_cached":{
+              "metric":"mem_cached",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_free":{
+              "metric":"mem_free",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_shared":{
+              "metric":"mem_shared",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_total":{
+              "metric":"mem_total",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/swap_free":{
+              "metric":"swap_free",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/swap_total":{
+              "metric":"swap_total",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/network/bytes_in":{
+              "metric":"bytes_in",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/network/bytes_out":{
+              "metric":"bytes_out",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/network/pkts_in":{
+              "metric":"pkts_in",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/network/pkts_out":{
+              "metric":"pkts_out",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/process/proc_run":{
+              "metric":"proc_run",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/process/proc_total":{
+              "metric":"proc_total",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/read_count":{
+              "metric":"read_count",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/write_count":{
+              "metric":"write_count",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/read_bytes":{
+              "metric":"read_bytes",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/write_bytes":{
+              "metric":"write_bytes",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/read_time":{
+              "metric":"read_time",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/write_time":{
+              "metric":"write_time",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/hbase/regionserver/mutationsWithoutWALSize": {
+              "metric": "regionserver.Server.mutationsWithoutWALSize",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginSuccess_avg_time": {
+              "metric": "ugi.UgiMetrics.LoginSuccessAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_99th_percentile": {
+              "metric": "regionserver.Server.Delete_99th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/slowAppendCount": {
+              "metric": "regionserver.Server.slowAppendCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapUsedM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/slowIncrementCount": {
+              "metric": "regionserver.Server.slowIncrementCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/putRequestLatency_95th_percentile": {
+              "metric": "regionserver.Server.Mutate_95th_percentile",
+              "unit": "ms",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/compactionQueueSize": {
+              "metric": "regionserver.Server.compactionQueueLength",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/disk/part_max_used": {
+              "metric": "part_max_used",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/flushTime_num_ops": {
+              "metric": "regionserver.Server.FlushTime_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/blockCacheCount": {
+              "metric": "regionserver.Server.blockCacheCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginSuccess_num_ops": {
+              "metric": "ugi.UgiMetrics.LoginSuccessNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/getRequestLatency_75th_percentile": {
+              "metric": "regionserver.Server.Get_75th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapCommittedM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/stores": {
+              "metric": "regionserver.Server.storeCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginFailure_num_ops": {
+              "metric": "ugi.UgiMetrics.LoginFailureNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthenticationSuccesses": {
+              "metric": "regionserver.RegionServer.authenticationSuccesses",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemHeapCommittedM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsRunnable": {
+              "metric": "jvm.JvmMetrics.ThreadsRunnable",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsNew": {
+              "metric": "jvm.JvmMetrics.ThreadsNew",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_min": {
+              "metric": "regionserver.Server.Delete_min",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationFailures": {
+              "metric": "regionserver.RegionServer.authorizationFailures",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_avg_time": {
+              "metric": "regionserver.RegionServer.QueueCallTime_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/getRequestLatency_num_ops": {
+              "metric": "regionserver.Server.Get_num_ops",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/ReceivedBytes": {
+              "metric": "regionserver.RegionServer.receivedBytes",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/NumOpenConnections": {
+              "metric": "regionserver.RegionServer.NumOpenConnections",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcTimeMillis": {
+              "metric": "jvm.JvmMetrics.GcTimeMillis",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTerminated": {
+              "metric": "jvm.JvmMetrics.ThreadsTerminated",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/putRequestLatency_max": {
+              "metric": "regionserver.Server.Mutate_max",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_num_ops": {
+              "metric": "regionserver.Server.Delete_num_ops",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/boottime": {
+              "metric": "boottime",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric":true
+            },
+            "metrics/hbase/regionserver/writeRequestsCount": {
+              "metric": "regionserver.Server.writeRequestCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/getRequestLatency_min": {
+              "metric": "regionserver.Server.Get_min",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_num_ops": {
+              "metric": "regionserver.RegionServer.ProcessCallTime_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/getRequestLatency_mean": {
+              "metric": "regionserver.Server.Get_mean",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logError": {
+              "metric": "jvm.JvmMetrics.LogError",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/putRequestLatency_75th_percentile": {
+              "metric": "regionserver.Server.Mutate_75th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/regions": {
+              "metric": "regionserver.Server.regionCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/blockCacheHitCount": {
+              "metric": "regionserver.Server.blockCacheHitCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/slowPutCount": {
+              "metric": "regionserver.Server.slowPutCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/blockCacheFree": {
+              "metric": "regionserver.Server.blockCacheFreeSize",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/blockCacheMissCount": {
+              "metric": "regionserver.Server.blockCacheMissCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/flushQueueSize": {
+              "metric": "regionserver.Server.flushQueueLength",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/blockCacheSize": {
+              "metric": "regionserver.Server.blockCacheSize",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/putRequestLatency_num_ops": {
+              "metric": "regionserver.Server.Mutate_num_ops",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsBlocked": {
+              "metric": "jvm.JvmMetrics.ThreadsBlocked",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_num_ops": {
+              "metric": "regionserver.RegionServer.QueueCallTime_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/putRequestLatency_median": {
+              "metric": "regionserver.Server.Mutate_median",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_mean": {
+              "metric": "regionserver.Server.Delete_mean",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/cpu/cpu_aidle": {
+              "metric": "cpu_aidle",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/readRequestsCount": {
+              "metric": "regionserver.Server.readRequestCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/putRequestLatency_min": {
+              "metric": "regionserver.Server.Mutate_min",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/storefileIndexSizeMB": {
+              "metric": "regionserver.Server.storeFileIndexSize",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_median": {
+              "metric": "regionserver.Server.Delete_median",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/totalStaticIndexSizeKB": {
+              "metric": "regionserver.Server.staticIndexSize",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/putRequestLatency_mean": {
+              "metric": "regionserver.Server.Mutate_mean",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/mutationsWithoutWALCount": {
+              "metric": "regionserver.Server.mutationsWithoutWALCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/getRequestLatency_median": {
+              "metric": "regionserver.Server.Get_median",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_max": {
+              "metric": "regionserver.Server.Delete_max",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/cpu/cpu_speed": {
+              "metric": "cpu_speed",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_avg_time": {
+              "metric": "regionserver.RegionServer.ProcessCallTime_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthenticationFailures": {
+              "metric": "regionserver.RegionServer.authenticationFailures",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/percentFilesLocal": {
+              "metric": "regionserver.Server.percentFilesLocal",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/blockCacheHitRatio": {
+              "metric": "regionserver.Server.blockCacheCountHitPercent",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/SentBytes": {
+              "metric": "regionserver.RegionServer.SentBytes",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/maxMemoryM": {
+              "metric": "jvm.metrics.maxMemoryM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logWarn": {
+              "metric": "jvm.JvmMetrics.LogWarn",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTimedWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsTimedWaiting",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcCount": {
+              "metric": "jvm.JvmMetrics.GcCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/flushTime_avg_time": {
+              "metric": "regionserver.Server.FlushTime_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/blockCacheEvictedCount": {
+              "metric": "regionserver.Server.blockCacheEvictionCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemHeapUsedM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsWaiting",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/slowGetCount": {
+              "metric": "regionserver.Server.slowGetCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/requests": {
+              "metric": "regionserver.Server.totalRequestCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/storefiles": {
+              "metric": "regionserver.Server.storeFileCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/slowDeleteCount": {
+              "metric": "regionserver.Server.slowDeleteCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/putRequestLatency_99th_percentile": {
+              "metric": "regionserver.Server.Mutate_99th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logInfo": {
+              "metric": "jvm.JvmMetrics.LogInfo",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/hlogFileCount": {
+              "metric": "regionserver.Server.hlogFileCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_95th_percentile": {
+              "metric": "regionserver.Server.Delete_95th_percentile",
+              "unit": "ms",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/getRequestLatency_95th_percentile": {
+              "metric": "regionserver.Server.Get_95th_percentile",
+              "unit": "ms",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/getRequestLatency_max": {
+              "metric": "regionserver.Server.Get_max",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/memstoreSize": {
+              "metric": "regionserver.Server.memStoreSize",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_75th_percentile": {
+              "metric": "regionserver.Server.Delete_75th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginFailure_avg_time": {
+              "metric": "ugi.UgiMetrics.LoginFailureAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationSuccesses": {
+              "metric": "regionserver.RegionServer.authorizationSuccesses",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logFatal": {
+              "metric": "jvm.JvmMetrics.LogFatal",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/totalStaticBloomSizeKB": {
+              "metric": "regionserver.Server.staticBloomSize",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/hbase/regionserver/getRequestLatency_99th_percentile": {
+              "metric": "regionserver.Server.Get_99th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcCountConcurrentMarkSweep": {
+              "metric": "jvm.JvmMetrics.GcCountConcurrentMarkSweep",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcCountParNew": {
+              "metric": "jvm.JvmMetrics.GcCountParNew",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcTimeMillisConcurrentMarkSweep": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisConcurrentMarkSweep",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcTimeMillisParNew": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisParNew",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/LogFatal": {
+              "metric": "jvm.JvmMetrics.LogFatal",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemHeapMaxM": {
+              "metric": "jvm.JvmMetrics.MemHeapMaxM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemMaxM": {
+              "metric": "jvm.JvmMetrics.MemMaxM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemNonHeapMaxM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapMaxM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/DroppedPubAll": {
+              "metric": "metricssystem.MetricsSystem.DroppedPubAll",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumActiveSinks": {
+              "metric": "metricssystem.MetricsSystem.NumActiveSinks",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumActiveSources": {
+              "metric": "metricssystem.MetricsSystem.NumActiveSources",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumAllSinks": {
+              "metric": "metricssystem.MetricsSystem.NumAllSinks",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumAllSources": {
+              "metric": "metricssystem.MetricsSystem.NumAllSources",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/PublishAvgTime": {
+              "metric": "metricssystem.MetricsSystem.PublishAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/PublishNumOps": {
+              "metric": "metricssystem.MetricsSystem.PublishNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineAvgTime": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineDropped": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineDropped",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineNumOps": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineQsize": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineQsize",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/SnapshotAvgTime": {
+              "metric": "metricssystem.MetricsSystem.SnapshotAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/SnapshotNumOps": {
+              "metric": "metricssystem.MetricsSystem.SnapshotNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/authorizationSuccesses": {
+              "metric": "regionserver.RegionServer.authorizationSuccesses",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/numActiveHandler": {
+              "metric": "regionserver.RegionServer.numActiveHandler",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/numCallsInGeneralQueue": {
+              "metric": "regionserver.RegionServer.numCallsInGeneralQueue",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/numCallsInPriorityQueue": {
+              "metric": "regionserver.RegionServer.numCallsInPriorityQueue",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/numCallsInReplicationQueue": {
+              "metric": "regionserver.RegionServer.numCallsInReplicationQueue",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/numOpenConnections": {
+              "metric": "regionserver.RegionServer.numOpenConnections",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/ProcessCallTime_75th_percentile": {
+              "metric": "regionserver.RegionServer.ProcessCallTime_75th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/ProcessCallTime_95th_percentile": {
+              "metric": "regionserver.RegionServer.ProcessCallTime_95th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/ProcessCallTime_99th_percentile": {
+              "metric": "regionserver.RegionServer.ProcessCallTime_99th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/ProcessCallTime_max": {
+              "metric": "regionserver.RegionServer.ProcessCallTime_max",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/ProcessCallTime_mean": {
+              "metric": "regionserver.RegionServer.ProcessCallTime_mean",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/ProcessCallTime_min": {
+              "metric": "regionserver.RegionServer.ProcessCallTime_min",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/QueueCallTime_75th_percentile": {
+              "metric": "regionserver.RegionServer.QueueCallTime_75th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/QueueCallTime_95th_percentile": {
+              "metric": "regionserver.RegionServer.QueueCallTime_95th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/QueueCallTime_99th_percentile": {
+              "metric": "regionserver.RegionServer.QueueCallTime_99th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/QueueCallTime_max": {
+              "metric": "regionserver.RegionServer.QueueCallTime_max",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/QueueCallTime_mean": {
+              "metric": "regionserver.RegionServer.QueueCallTime_mean",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/QueueCallTime_min": {
+              "metric": "regionserver.RegionServer.QueueCallTime_min",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/queueSize": {
+              "metric": "regionserver.RegionServer.queueSize",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/sentBytes": {
+              "metric": "regionserver.RegionServer.sentBytes",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/TotalCallTime_75th_percentile": {
+              "metric": "regionserver.RegionServer.TotalCallTime_75th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/TotalCallTime_95th_percentile": {
+              "metric": "regionserver.RegionServer.TotalCallTime_95th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/TotalCallTime_99th_percentile": {
+              "metric": "regionserver.RegionServer.TotalCallTime_99th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/TotalCallTime_max": {
+              "metric": "regionserver.RegionServer.TotalCallTime_max",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/TotalCallTime_mean": {
+              "metric": "regionserver.RegionServer.TotalCallTime_mean",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/TotalCallTime_median": {
+              "metric": "regionserver.RegionServer.TotalCallTime_median",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/TotalCallTime_min": {
+              "metric": "regionserver.RegionServer.TotalCallTime_min",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/RegionServer/TotalCallTime_num_ops": {
+              "metric": "regionserver.RegionServer.TotalCallTime_num_ops",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Replication/sink/ageOfLastAppliedOp": {
+              "metric": "regionserver.Replication.sink.ageOfLastAppliedOp",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Replication/sink/appliedBatches": {
+              "metric": "regionserver.Replication.sink.appliedBatches",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Replication/sink/appliedOps": {
+              "metric": "regionserver.Replication.sink.appliedOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Append_75th_percentile": {
+              "metric": "regionserver.Server.Append_75th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Append_95th_percentile": {
+              "metric": "regionserver.Server.Append_95th_percentile",
+              "unit": "ms",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Append_99th_percentile": {
+              "metric": "regionserver.Server.Append_99th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Append_max": {
+              "metric": "regionserver.Server.Append_max",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Append_mean": {
+              "metric": "regionserver.Server.Append_mean",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Append_median": {
+              "metric": "regionserver.Server.Append_median",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Append_min": {
+              "metric": "regionserver.Server.Append_min",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Append_num_ops": {
+              "metric": "regionserver.Server.Append_num_ops",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/blockCacheExpressHitPercent": {
+              "metric": "regionserver.Server.blockCacheExpressHitPercent",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/blockedRequestCount": {
+              "metric": "regionserver.Server.blockedRequestCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/checkMutateFailedCount": {
+              "metric": "regionserver.Server.checkMutateFailedCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/checkMutatePassedCount": {
+              "metric": "regionserver.Server.checkMutatePassedCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/compactedCellsCount": {
+              "metric": "regionserver.Server.compactedCellsCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/compactedCellsSize": {
+              "metric": "regionserver.Server.compactedCellsSize",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/flushedCellsCount": {
+              "metric": "regionserver.Server.flushedCellsCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/flushedCellsSize": {
+              "metric": "regionserver.Server.flushedCellsSize",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/FlushTime_75th_percentile": {
+              "metric": "regionserver.Server.FlushTime_75th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/FlushTime_95th_percentile": {
+              "metric": "regionserver.Server.FlushTime_95th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/FlushTime_99th_percentile": {
+              "metric": "regionserver.Server.FlushTime_99th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/FlushTime_max": {
+              "metric": "regionserver.Server.FlushTime_max",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/FlushTime_mean": {
+              "metric": "regionserver.Server.FlushTime_mean",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/FlushTime_min": {
+              "metric": "regionserver.Server.FlushTime_min",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Get_99th_percentile": {
+              "metric": "regionserver.Server.Get_99th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/hlogFileSize": {
+              "metric": "regionserver.Server.hlogFileSize",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Increment_75th_percentile": {
+              "metric": "regionserver.Server.Increment_75th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Increment_95th_percentile": {
+              "metric": "regionserver.Server.Increment_95th_percentile",
+              "unit": "ms",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Increment_99th_percentile": {
+              "metric": "regionserver.Server.Increment_99th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Increment_max": {
+              "metric": "regionserver.Server.Increment_max",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Increment_mean": {
+              "metric": "regionserver.Server.Increment_mean",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Increment_median": {
+              "metric": "regionserver.Server.Increment_median",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Increment_min": {
+              "metric": "regionserver.Server.Increment_min",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Increment_num_ops": {
+              "metric": "regionserver.Server.Increment_num_ops",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/majorCompactedCellsCount": {
+              "metric": "regionserver.Server.majorCompactedCellsCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/majorCompactedCellsSize": {
+              "metric": "regionserver.Server.majorCompactedCellsSize",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/percentFilesLocalSecondaryRegions": {
+              "metric": "regionserver.Server.percentFilesLocalSecondaryRegions",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/regionServerStartTime": {
+              "metric": "regionserver.Server.regionServerStartTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Replay_75th_percentile": {
+              "metric": "regionserver.Server.Replay_75th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Replay_95th_percentile": {
+              "metric": "regionserver.Server.Replay_95th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Replay_99th_percentile": {
+              "metric": "regionserver.Server.Replay_99th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Replay_max": {
+              "metric": "regionserver.Server.Replay_max",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Replay_mean": {
+              "metric": "regionserver.Server.Replay_mean",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Replay_median": {
+              "metric": "regionserver.Server.Replay_median",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Replay_min": {
+              "metric": "regionserver.Server.Replay_min",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/Replay_num_ops": {
+              "metric": "regionserver.Server.Replay_num_ops",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/ScanNext_75th_percentile": {
+              "metric": "regionserver.Server.ScanNext_75th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/ScanNext_95th_percentile": {
+              "metric": "regionserver.Server.ScanNext_95th_percentile",
+              "unit": "ms",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/ScanNext_99th_percentile": {
+              "metric": "regionserver.Server.ScanNext_99th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/ScanNext_max": {
+              "metric": "regionserver.Server.ScanNext_max",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/ScanNext_mean": {
+              "metric": "regionserver.Server.ScanNext_mean",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/ScanNext_median": {
+              "metric": "regionserver.Server.ScanNext_median",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/ScanNext_min": {
+              "metric": "regionserver.Server.ScanNext_min",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/ScanNext_num_ops": {
+              "metric": "regionserver.Server.ScanNext_num_ops",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/splitQueueLength": {
+              "metric": "regionserver.Server.splitQueueLength",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/splitRequestCount": {
+              "metric": "regionserver.Server.splitRequestCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/splitSuccessCount": {
+              "metric": "regionserver.Server.splitSuccessCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/SplitTime_75th_percentile": {
+              "metric": "regionserver.Server.SplitTime_75th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/SplitTime_95th_percentile": {
+              "metric": "regionserver.Server.SplitTime_95th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/SplitTime_99th_percentile": {
+              "metric": "regionserver.Server.SplitTime_99th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/SplitTime_max": {
+              "metric": "regionserver.Server.SplitTime_max",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/SplitTime_mean": {
+              "metric": "regionserver.Server.SplitTime_mean",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/SplitTime_median": {
+              "metric": "regionserver.Server.SplitTime_median",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/SplitTime_min": {
+              "metric": "regionserver.Server.SplitTime_min",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/SplitTime_num_ops": {
+              "metric": "regionserver.Server.SplitTime_num_ops",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/staticBloomSize": {
+              "metric": "regionserver.Server.staticBloomSize",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/storeFileSize": {
+              "metric": "regionserver.Server.storeFileSize",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/Server/updatesBlockedTime": {
+              "metric": "regionserver.Server.updatesBlockedTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/appendCount": {
+              "metric": "regionserver.WAL.appendCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_75th_percentile": {
+              "metric": "regionserver.WAL.AppendSize_75th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_95th_percentile": {
+              "metric": "regionserver.WAL.AppendSize_95th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_99th_percentile": {
+              "metric": "regionserver.WAL.AppendSize_99th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_max": {
+              "metric": "regionserver.WAL.AppendSize_max",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_mean": {
+              "metric": "regionserver.WAL.AppendSize_mean",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_median": {
+              "metric": "regionserver.WAL.AppendSize_median",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_min": {
+              "metric": "regionserver.WAL.AppendSize_min",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_num_ops": {
+              "metric": "regionserver.WAL.AppendSize_num_ops",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_75th_percentile": {
+              "metric": "regionserver.WAL.AppendTime_75th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_95th_percentile": {
+              "metric": "regionserver.WAL.AppendTime_95th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_99th_percentile": {
+              "metric": "regionserver.WAL.AppendTime_99th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_max": {
+              "metric": "regionserver.WAL.AppendTime_max",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_mean": {
+              "metric": "regionserver.WAL.AppendTime_mean",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_median": {
+              "metric": "regionserver.WAL.AppendTime_median",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_min": {
+              "metric": "regionserver.WAL.AppendTime_min",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_num_ops": {
+              "metric": "regionserver.WAL.AppendTime_num_ops",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/lowReplicaRollRequest": {
+              "metric": "regionserver.WAL.lowReplicaRollRequest",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/rollRequest": {
+              "metric": "regionserver.WAL.rollRequest",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/slowAppendCount": {
+              "metric": "regionserver.WAL.slowAppendCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_75th_percentile": {
+              "metric": "regionserver.WAL.SyncTime_75th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_95th_percentile": {
+              "metric": "regionserver.WAL.SyncTime_95th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_99th_percentile": {
+              "metric": "regionserver.WAL.SyncTime_99th_percentile",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_max": {
+              "metric": "regionserver.WAL.SyncTime_max",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_mean": {
+              "metric": "regionserver.WAL.SyncTime_mean",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_median": {
+              "metric": "regionserver.WAL.SyncTime_median",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_min": {
+              "metric": "regionserver.WAL.SyncTime_min",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_num_ops": {
+              "metric": "regionserver.WAL.SyncTime_num_ops",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/GetGroupsAvgTime": {
+              "metric": "ugi.UgiMetrics.GetGroupsAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/GetGroupsNumOps": {
+              "metric": "ugi.UgiMetrics.GetGroupsNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/LoginFailureAvgTime": {
+              "metric": "ugi.UgiMetrics.LoginFailureAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            }
+          }
+        }
+      },
+      {
+        "type": "jmx",
+        "metrics": {
+          "default": {
+            "metrics/hbase/regionserver/slowPutCount": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.slowPutCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/percentFilesLocal": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.percentFilesLocal",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_min": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_min",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/blockCacheFree": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.blockCacheFreeSize",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/mutationsWithoutWALSize": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.mutationsWithoutWALSize",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/blockCacheMissCount": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.blockCacheMissCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/flushQueueSize": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.flushQueueLength",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_99th_percentile": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_99th_percentile",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/getRequestLatency_num_ops": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/ScanNext_num_ops": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.ScanNext_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/Increment_num_ops": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Increment_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/Append_num_ops": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Append_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/ScanNext_95th_percentile": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.ScanNext_95th_percentile",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/Append_95th_percentile": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Append_95th_percentile",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/Increment_95th_percentile": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Increment_95th_percentile",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/updatesBlockedTime": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.updatesBlockedTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/IPC/numActiveHandler": {
+              "metric": "Hadoop:service=HBase,name=IPC,sub=IPC.numActiveHandler",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/IPC/numCallsInGeneralQueue": {
+              "metric": "Hadoop:service=HBase,name=IPC,sub=IPC.numCallsInGeneralQueue",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/IPC/numOpenConnections": {
+              "metric": "Hadoop:service=HBase,name=IPC,sub=IPC.numOpenConnections",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/slowAppendCount": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.slowAppendCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/blockCacheSize": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.blockCacheSize",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/putRequestLatency_num_ops": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/slowIncrementCount": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.slowIncrementCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/blockCacheEvictedCount": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.blockCacheEvictionCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/putRequestLatency_95th_percentile": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_95th_percentile",
+              "unit": "ms",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/putRequestLatency_median": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_median",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_mean": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_mean",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/slowGetCount": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.slowGetCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/blockCacheCount": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.blockCacheCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/getRequestLatency_75th_percentile": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_75th_percentile",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/putRequestLatency_min": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_min",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/storefileIndexSizeMB": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.storeFileIndexSize",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_median": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_median",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/putRequestLatency_max": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_max",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/totalStaticIndexSizeKB": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.staticIndexSize",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_num_ops": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/putRequestLatency_mean": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_mean",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/requests": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.totalRequestCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/storefiles": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.storeFileCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/mutationsWithoutWALCount": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.mutationsWithoutWALCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/getRequestLatency_median": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_median",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/slowDeleteCount": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.slowDeleteCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/putRequestLatency_99th_percentile": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_99th_percentile",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/stores": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.storeCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/getRequestLatency_min": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_min",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/getRequestLatency_95th_percentile": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_95th_percentile",
+              "unit": "ms",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_95th_percentile": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_95th_percentile",
+              "unit": "ms",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/getRequestLatency_max": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_max",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/getRequestLatency_mean": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_mean",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_75th_percentile": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_75th_percentile",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/deleteRequestLatency_max": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_max",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/putRequestLatency_75th_percentile": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_75th_percentile",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/totalStaticBloomSizeKB": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.staticBloomSize",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/blockCacheHitCount": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.blockCacheHitCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/regionserver/getRequestLatency_99th_percentile": {
+              "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_99th_percentile",
+              "pointInTime": true,
+              "temporal": false
+            }
+          }
+        }
+      }
+    ]
+  },
+  "HBASE_MASTER": {
+    "Component": [
+      {
+        "type": "ganglia",
+        "metrics": {
+          "default": {
+            "metrics/load/load_one": {
+              "metric": "load_one",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapUsedM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/memory/swap_total": {
+              "metric": "swap_total",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/process/proc_total": {
+              "metric": "proc_total",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/balance_avg_time": {
+              "metric": "master.Balancer.BalancerCluster_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/disk/part_max_used": {
+              "metric": "part_max_used",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/balance_num_ops": {
+              "metric": "master.Balancer.BalancerCluster_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/network/bytes_in": {
+              "metric": "bytes_in",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapCommittedM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/master/splitTime_num_ops": {
+              "metric": "master.FileSystem.HlogSplitTime_num_ops",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthenticationSuccesses": {
+              "metric": "master.Master.authenticationSuccesses",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/network/pkts_in": {
+              "metric": "pkts_in",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemHeapCommittedM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsRunnable": {
+              "metric": "jvm.JvmMetrics.ThreadsRunnable",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsNew": {
+              "metric": "jvm.JvmMetrics.ThreadsNew",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationFailures": {
+              "metric": "master.Master.authorizationFailures",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_avg_time": {
+              "metric": "master.Master.QueueCallTime_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcTimeMillis": {
+              "metric": "jvm.JvmMetrics.GcTimeMillis",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTerminated": {
+              "metric": "jvm.JvmMetrics.ThreadsTerminated",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/network/bytes_out": {
+              "metric": "bytes_out",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/load/load_five": {
+              "metric": "load_five",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/boottime": {
+              "metric": "boottime",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric":true
+            },
+            "metrics/rpc/RpcProcessingTime_num_ops": {
+              "metric": "master.Master.ProcessCallTime_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logError": {
+              "metric": "jvm.JvmMetrics.LogError",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/process/proc_run": {
+              "metric": "proc_run",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsBlocked": {
+              "metric": "jvm.JvmMetrics.ThreadsBlocked",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_num_ops": {
+              "metric": "master.Master.QueueCallTime_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/master/splitSize_num_ops": {
+              "metric": "master.FileSystem.HlogSplitSize_num_ops",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/cpu/cpu_aidle": {
+              "metric": "cpu_aidle",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/network/pkts_out": {
+              "metric": "pkts_out",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/master/splitSize_avg_time": {
+              "metric": "master.FileSystem.HlogSplitSize_mean",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/cpu/cpu_speed": {
+              "metric": "cpu_speed",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/master/cluster_requests": {
+              "metric": "master.Server.clusterRequests",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_avg_time": {
+              "metric": "master.Master.ProcessCallTime_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthenticationFailures": {
+              "metric": "master.Master.authenticationFailures",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/maxMemoryM": {
+              "metric": "jvm.metrics.maxMemoryM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logWarn": {
+              "metric": "jvm.JvmMetrics.LogWarn",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTimedWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsTimedWaiting",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcCount": {
+              "metric": "jvm.JvmMetrics.GcCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemHeapUsedM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsWaiting",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/memory/mem_buffers": {
+              "metric": "mem_buffers",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/load/load_fifteen": {
+              "metric": "load_fifteen",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logInfo": {
+              "metric": "jvm.JvmMetrics.LogInfo",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationSuccesses": {
+              "metric": "master.Master.authorizationSuccesses",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logFatal": {
+              "metric": "jvm.JvmMetrics.LogFatal",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcCountConcurrentMarkSweep": {
+              "metric":"jvm.JvmMetrics.GcCountConcurrentMarkSweep",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcCountParNew": {
+              "metric":"jvm.JvmMetrics.GcCountParNew",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcTimeMillisConcurrentMarkSweep": {
+              "metric":"jvm.JvmMetrics.GcTimeMillisConcurrentMarkSweep",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcTimeMillisParNew": {
+              "metric":"jvm.JvmMetrics.GcTimeMillisParNew",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemHeapMaxM": {
+              "metric":"jvm.JvmMetrics.MemHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemMaxM": {
+              "metric":"jvm.JvmMetrics.MemMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemNonHeapMaxM": {
+              "metric":"jvm.JvmMetrics.MemNonHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/Assign_75th_percentile": {
+              "metric":"master.AssignmentManger.Assign_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/Assign_95th_percentile": {
+              "metric":"master.AssignmentManger.Assign_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/Assign_99th_percentile": {
+              "metric":"master.AssignmentManger.Assign_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/Assign_max": {
+              "metric":"master.AssignmentManger.Assign_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/Assign_mean": {
+              "metric":"master.AssignmentManger.Assign_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/Assign_median": {
+              "metric":"master.AssignmentManger.Assign_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/Assign_min": {
+              "metric":"master.AssignmentManger.Assign_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/Assign_num_ops": {
+              "metric":"master.AssignmentManger.Assign_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/BulkAssign_75th_percentile": {
+              "metric":"master.AssignmentManger.BulkAssign_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/BulkAssign_95th_percentile": {
+              "metric":"master.AssignmentManger.BulkAssign_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/BulkAssign_99th_percentile": {
+              "metric":"master.AssignmentManger.BulkAssign_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/BulkAssign_max": {
+              "metric":"master.AssignmentManger.BulkAssign_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/BulkAssign_mean": {
+              "metric":"master.AssignmentManger.BulkAssign_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/BulkAssign_median": {
+              "metric":"master.AssignmentManger.BulkAssign_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/BulkAssign_min": {
+              "metric":"master.AssignmentManger.BulkAssign_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/BulkAssign_num_ops": {
+              "metric":"master.AssignmentManger.BulkAssign_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/ritCount": {
+              "metric":"master.AssignmentManger.ritCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/ritCountOverThreshold": {
+              "metric":"master.AssignmentManger.ritCountOverThreshold",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/ritOldestAge": {
+              "metric":"master.AssignmentManger.ritOldestAge",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Balancer/BalancerCluster_75th_percentile": {
+              "metric":"master.Balancer.BalancerCluster_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Balancer/BalancerCluster_95th_percentile": {
+              "metric":"master.Balancer.BalancerCluster_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Balancer/BalancerCluster_99th_percentile": {
+              "metric":"master.Balancer.BalancerCluster_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Balancer/BalancerCluster_max": {
+              "metric":"master.Balancer.BalancerCluster_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Balancer/BalancerCluster_mean": {
+              "metric":"master.Balancer.BalancerCluster_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Balancer/BalancerCluster_min": {
+              "metric":"master.Balancer.BalancerCluster_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Balancer/miscInvocationCount": {
+              "metric":"master.Balancer.miscInvocationCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitSize_75th_percentile": {
+              "metric":"master.FileSystem.HlogSplitSize_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitSize_95th_percentile": {
+              "metric":"master.FileSystem.HlogSplitSize_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitSize_99th_percentile": {
+              "metric":"master.FileSystem.HlogSplitSize_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitSize_max": {
+              "metric":"master.FileSystem.HlogSplitSize_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitSize_median": {
+              "metric":"master.FileSystem.HlogSplitSize_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitSize_min": {
+              "metric":"master.FileSystem.HlogSplitSize_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitTime_75th_percentile": {
+              "metric":"master.FileSystem.HlogSplitTime_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitTime_95th_percentile": {
+              "metric":"master.FileSystem.HlogSplitTime_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitTime_99th_percentile": {
+              "metric":"master.FileSystem.HlogSplitTime_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitTime_max": {
+              "metric":"master.FileSystem.HlogSplitTime_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitTime_mean": {
+              "metric":"master.FileSystem.HlogSplitTime_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitTime_median": {
+              "metric":"master.FileSystem.HlogSplitTime_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitTime_min": {
+              "metric":"master.FileSystem.HlogSplitTime_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitSize_75th_percentile": {
+              "metric":"master.FileSystem.MetaHlogSplitSize_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitSize_95th_percentile": {
+              "metric":"master.FileSystem.MetaHlogSplitSize_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitSize_99th_percentile": {
+              "metric":"master.FileSystem.MetaHlogSplitSize_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitSize_max": {
+              "metric":"master.FileSystem.MetaHlogSplitSize_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitSize_mean": {
+              "metric":"master.FileSystem.MetaHlogSplitSize_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitSize_median": {
+              "metric":"master.FileSystem.MetaHlogSplitSize_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitSize_min": {
+              "metric":"master.FileSystem.MetaHlogSplitSize_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitSize_num_ops": {
+              "metric":"master.FileSystem.MetaHlogSplitSize_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitTime_75th_percentile": {
+              "metric":"master.FileSystem.MetaHlogSplitTime_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitTime_95th_percentile": {
+              "metric":"master.FileSystem.MetaHlogSplitTime_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitTime_99th_percentile": {
+              "metric":"master.FileSystem.MetaHlogSplitTime_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitTime_max": {
+              "metric":"master.FileSystem.MetaHlogSplitTime_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitTime_mean": {
+              "metric":"master.FileSystem.MetaHlogSplitTime_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitTime_median": {
+              "metric":"master.FileSystem.MetaHlogSplitTime_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitTime_min": {
+              "metric":"master.FileSystem.MetaHlogSplitTime_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitTime_num_ops": {
+              "metric":"master.FileSystem.MetaHlogSplitTime_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/numActiveHandler": {
+              "metric":"master.Master.numActiveHandler",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/numCallsInGeneralQueue": {
+              "metric":"master.Master.numCallsInGeneralQueue",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/numCallsInPriorityQueue": {
+              "metric":"master.Master.numCallsInPriorityQueue",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/numCallsInReplicationQueue": {
+              "metric":"master.Master.numCallsInReplicationQueue",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/numOpenConnections": {
+              "metric":"master.Master.numOpenConnections",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/ProcessCallTime_75th_percentile": {
+              "metric":"master.Master.ProcessCallTime_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/ProcessCallTime_95th_percentile": {
+              "metric":"master.Master.ProcessCallTime_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/ProcessCallTime_99th_percentile": {
+              "metric":"master.Master.ProcessCallTime_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/ProcessCallTime_max": {
+              "metric":"master.Master.ProcessCallTime_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/ProcessCallTime_mean": {
+              "metric":"master.Master.ProcessCallTime_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/ProcessCallTime_median": {
+              "metric":"master.Master.ProcessCallTime_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/ProcessCallTime_min": {
+              "metric":"master.Master.ProcessCallTime_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/QueueCallTime_75th_percentile": {
+              "metric":"master.Master.QueueCallTime_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/QueueCallTime_95th_percentile": {
+              "metric":"master.Master.QueueCallTime_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/QueueCallTime_99th_percentile": {
+              "metric":"master.Master.QueueCallTime_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/QueueCallTime_max": {
+              "metric":"master.Master.QueueCallTime_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/QueueCallTime_mean": {
+              "metric":"master.Master.QueueCallTime_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/QueueCallTime_min": {
+              "metric":"master.Master.QueueCallTime_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/queueSize": {
+              "metric":"master.Master.queueSize",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/receivedBytes": {
+              "metric":"master.Master.receivedBytes",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/sentBytes": {
+              "metric":"master.Master.sentBytes",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/TotalCallTime_75th_percentile": {
+              "metric":"master.Master.TotalCallTime_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/TotalCallTime_95th_percentile": {
+              "metric":"master.Master.TotalCallTime_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/TotalCallTime_99th_percentile": {
+              "metric":"master.Master.TotalCallTime_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/TotalCallTime_max": {
+              "metric":"master.Master.TotalCallTime_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/TotalCallTime_mean": {
+              "metric":"master.Master.TotalCallTime_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/TotalCallTime_median": {
+              "metric":"master.Master.TotalCallTime_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/TotalCallTime_min": {
+              "metric":"master.Master.TotalCallTime_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/TotalCallTime_num_ops": {
+              "metric":"master.Master.TotalCallTime_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Server/averageLoad": {
+              "metric":"master.Server.averageLoad",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Server/masterActiveTime": {
+              "metric":"master.Server.masterActiveTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Server/masterStartTime": {
+              "metric":"master.Server.masterStartTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Server/numDeadRegionServers": {
+              "metric":"master.Server.numDeadRegionServers",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Server/numRegionServers": {
+              "metric":"master.Server.numRegionServers",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/DroppedPubAll": {
+              "metric":"metricssystem.MetricsSystem.DroppedPubAll",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumActiveSinks": {
+              "metric":"metricssystem.MetricsSystem.NumActiveSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumActiveSources": {
+              "metric":"metricssystem.MetricsSystem.NumActiveSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumAllSinks": {
+              "metric":"metricssystem.MetricsSystem.NumAllSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumAllSources": {
+              "metric":"metricssystem.MetricsSystem.NumAllSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/PublishAvgTime": {
+              "metric":"metricssystem.MetricsSystem.PublishAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/PublishNumOps": {
+              "metric":"metricssystem.MetricsSystem.PublishNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineAvgTime": {
+              "metric":"metricssystem.MetricsSystem.Sink_timelineAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineDropped": {
+              "metric":"metricssystem.MetricsSystem.Sink_timelineDropped",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineNumOps": {
+              "metric":"metricssystem.MetricsSystem.Sink_timelineNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineQsize": {
+              "metric":"metricssystem.MetricsSystem.Sink_timelineQsize",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/SnapshotAvgTime": {
+              "metric":"metricssystem.MetricsSystem.SnapshotAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/SnapshotNumOps": {
+              "metric":"metricssystem.MetricsSystem.SnapshotNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/appendCount": {
+              "metric":"regionserver.WAL.appendCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_75th_percentile": {
+              "metric":"regionserver.WAL.AppendSize_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_95th_percentile": {
+              "metric":"regionserver.WAL.AppendSize_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_99th_percentile": {
+              "metric":"regionserver.WAL.AppendSize_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_max": {
+              "metric":"regionserver.WAL.AppendSize_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_mean": {
+              "metric":"regionserver.WAL.AppendSize_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_median": {
+              "metric":"regionserver.WAL.AppendSize_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_min": {
+              "metric":"regionserver.WAL.AppendSize_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_num_ops": {
+              "metric":"regionserver.WAL.AppendSize_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_75th_percentile": {
+              "metric":"regionserver.WAL.AppendTime_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_95th_percentile": {
+              "metric":"regionserver.WAL.AppendTime_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_99th_percentile": {
+              "metric":"regionserver.WAL.AppendTime_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_max": {
+              "metric":"regionserver.WAL.AppendTime_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_mean": {
+              "metric":"regionserver.WAL.AppendTime_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_median": {
+              "metric":"regionserver.WAL.AppendTime_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_min": {
+              "metric":"regionserver.WAL.AppendTime_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_num_ops": {
+              "metric":"regionserver.WAL.AppendTime_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/lowReplicaRollRequest": {
+              "metric":"regionserver.WAL.lowReplicaRollRequest",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/rollRequest": {
+              "metric":"regionserver.WAL.rollRequest",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/slowAppendCount": {
+              "metric":"regionserver.WAL.slowAppendCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_75th_percentile": {
+              "metric":"regionserver.WAL.SyncTime_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_95th_percentile": {
+              "metric":"regionserver.WAL.SyncTime_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_99th_percentile": {
+              "metric":"regionserver.WAL.SyncTime_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_max": {
+              "metric":"regionserver.WAL.SyncTime_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_mean": {
+              "metric":"regionserver.WAL.SyncTime_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_median": {
+              "metric":"regionserver.WAL.SyncTime_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_min": {
+              "metric":"regionserver.WAL.SyncTime_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_num_ops": {
+              "metric":"regionserver.WAL.SyncTime_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/GetGroupsAvgTime": {
+              "metric":"ugi.UgiMetrics.GetGroupsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/GetGroupsNumOps": {
+              "metric":"ugi.UgiMetrics.GetGroupsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/LoginFailureAvgTime": {
+              "metric":"ugi.UgiMetrics.LoginFailureAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/LoginFailureNumOps": {
+              "metric":"ugi.UgiMetrics.LoginFailureNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/LoginSuccessAvgTime": {
+              "metric":"ugi.UgiMetrics.LoginSuccessAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/LoginSuccessNumOps": {
+              "metric":"ugi.UgiMetrics.LoginSuccessNumOps",
+              "pointInTime": true,
+              "temporal": true
+            }
+          }
+        }
+      },
+      {
+        "type": "jmx",
+        "metrics": {
+          "default": {
+            "metrics/rpc/regionServerReport.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReport.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memMaxM": {
+              "metric": "Hadoop:service=HBase,name=JvmMetrics.MemMaxM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/reportRSFatalError.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalError.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/closeRegionMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.closeRegionMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/isMasterRunningAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunningAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcQueueTimeAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.RpcQueueTimeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteTableNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTableNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/Revision": {
+              "metric": "hadoop:service=HBase,name=Info.revision",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/splitRegionAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.splitRegionAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getHTableDescriptorsMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptorsMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getClusterStatus.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatus.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/splitRegionNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.splitRegionNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolVersionAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersionAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getBlockCacheColumnFamilySummariesMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getBlockCacheColumnFamilySummariesMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyColumnMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumnMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getClosestRowBeforeMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getClosestRowBeforeMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolSignatureNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignatureNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcSlowResponseMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.RpcSlowResponseMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/AverageLoad": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.averageLoad",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/openScannerNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.openScannerNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteTable.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTable.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteColumn.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumn.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getCompactionStateMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getCompactionStateMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerReport.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReport.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/stopMaster.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.stopMaster.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyColumn.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumn.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getHServerInfoAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getHServerInfoAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rollHLogWriterMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.rollHLogWriterMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/offlineMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.offlineMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolSignatureMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignatureMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/ServerName": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.tag.serverName",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getHServerInfoMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getHServerInfoMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/splitSizeMaxTime": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitSize_max",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/execCoprocessorAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.execCoprocessorAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcProcessingTimeMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.RpcProcessingTimeMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getClusterStatusMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatusMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/offline.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.offline.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/ZookeeperQuorum": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.tag.zookeeperQuorum",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/hdfsDate": {
+              "metric": "hadoop:service=HBase,name=Info.hdfsDate",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/createTable.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.createTable.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/offlineMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.offlineMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/offline.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.offline.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balanceNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balanceNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getClosestRowBeforeNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getClosestRowBeforeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyColumnNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumnNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getLastFlushTimeNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getLastFlushTimeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/stopMaster.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.stopMaster.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteTable.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTable.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/hdfsUrl": {
+              "metric": "hadoop:service=HBase,name=Info.hdfsUrl",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/multiMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.multiMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/revision": {
+              "metric": "hadoop:service=HBase,name=Info.revision",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyColumnMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumnMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/addColumnMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.addColumnMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getHTableDescriptorsNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptorsNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcQueueTimeMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.RpcQueueTimeMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/multiNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.multiNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolVersion.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersion.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/deleteTable.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTable.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/enableTableMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.enableTableMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerReportMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReportMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/reportRSFatalErrorNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalErrorNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/addColumn.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.addColumn.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/unassign.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.unassign.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/reportRSFatalErrorMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalErrorMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/disableTable.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.disableTable.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/existsAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.existsAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/MasterActiveTime": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.masterActiveTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getBlockCacheColumnFamilySummariesNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getBlockCacheColumnFamilySummariesNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/createTable.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.createTable.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthorizationFailures": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.rpcAuthorizationFailures",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/hdfsUser": {
+              "metric": "hadoop:service=HBase,name=Info.hdfsUser",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerStartupAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartupAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerStartupNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartupNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteColumnNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumnNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/version": {
+              "metric": "hadoop:service=HBase,name=Info.version",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/splitTimeMaxTime": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitTime_max",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/synchronousBalanceSwitchNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitchNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/stopMasterNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.stopMasterNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/splitTimeNumOps": {
+              "metric": "hadoop:service=Master,name=MasterStatistics.splitTimeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/reportRSFatalErrorAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalErrorAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/replicateLogEntriesNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.replicateLogEntriesNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/multiMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.multiMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteColumnMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumnMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolSignature.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignature.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getLastFlushTimeMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getLastFlushTimeMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/disableTable.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.disableTable.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/NumOpenConnections": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.NumOpenConnections",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcQueueTimeNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.RpcQueueTimeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerReportMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReportMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/IsActiveMaster": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.tag.isActiveMaster",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/bulkLoadHFilesMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.bulkLoadHFilesMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/synchronousBalanceSwitch.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitch.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/MasterStartTime": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.masterStartTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balanceSwitchMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitchMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/unlockRowMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.unlockRowMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/incrementNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.incrementNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/reportRSFatalError.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalError.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balanceSwitch.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitch.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/execCoprocessorMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.execCoprocessorMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/enableTable.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.enableTable.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/putMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.putMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/flushRegionMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.flushRegionMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/nextNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.nextNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getOnlineRegionsAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getOnlineRegionsAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/createTableAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.createTableAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyTable.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTable.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getAlterStatusAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatusAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/assign.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.assign.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerStartup.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartup.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balanceSwitch.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitch.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/isMasterRunningMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunningMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/existsNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.existsNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/compactRegionMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.compactRegionMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/bulkLoadHFilesMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.bulkLoadHFilesMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rollHLogWriterNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.rollHLogWriterNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/unlockRowAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.unlockRowAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/openRegionsNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionsNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/checkAndDeleteMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndDeleteMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/stopMaster.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.stopMaster.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/splitRegionMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.splitRegionMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getHTableDescriptorsMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptorsMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteColumn.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumn.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/moveMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.moveMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/shutdown.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.shutdown.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/appendNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.appendNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/appendAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.appendAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getClusterStatusNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatusNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcSlowResponseNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.RpcSlowResponseNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/splitSize_num_ops": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitSize_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/MasterActiveTime": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.masterActiveTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getLastFlushTimeMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getLastFlushTimeMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/checkAndPutNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndPutNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/splitTime_avg_time": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitTime_mean",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/createTableMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.createTableMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/incrementMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.incrementMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getAlterStatus.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatus.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getCompactionStateMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getCompactionStateMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/splitTimeAvgTime": {
+              "metric": "hadoop:service=Master,name=MasterStatistics.splitTimeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getStoreFileListMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getStoreFileListMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolSignature.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignature.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcProcessingTimeAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.RpcProcessingTimeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/incrementColumnValueNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.incrementColumnValueNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/enableTable.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.enableTable.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/stopMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.stopMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/multiAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.multiAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/createTable.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.createTable.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/shutdownAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.shutdownAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/openRegionMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getBlockCacheColumnFamilySummariesMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getBlockCacheColumnFamilySummariesMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteColumn.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumn.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyColumn.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumn.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/disableTableNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.disableTableNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolVersion.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersion.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/replicateLogEntriesAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.replicateLogEntriesAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/cluster_requests": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.clusterRequests",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getHServerInfoMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getHServerInfoMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getClusterStatusMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatusMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthenticationFailures": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.rpcAuthenticationFailures",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/Coprocessors": {
+              "metric": "hadoop:service=Master,name=Master.Coprocessors",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/unlockRowNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.unlockRowNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getAlterStatus.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatus.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerStartup.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartup.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balanceMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balanceMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/incrementColumnValueMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.incrementColumnValueMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyColumn.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumn.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolVersionMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersionMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/RegionsInTransition": {
+              "metric": "hadoop:service=Master,name=Master.RegionsInTransition",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/master/AssignmentManger/ritCount": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=AssignmentManger.ritCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balanceSwitchAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitchAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getAlterStatusMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatusMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/unassignMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.unassignMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/nextAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.nextAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rollHLogWriterMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.rollHLogWriterMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getAlterStatus.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatus.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/stopAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.stopAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/hdfsVersion": {
+              "metric": "hadoop:service=HBase,name=Info.hdfsVersion",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/unassignMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.unassignMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcSlowResponseAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.RpcSlowResponseAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/assignNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.assignNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getLastFlushTimeAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getLastFlushTimeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getClusterStatusAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatusAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/mutateRowNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.mutateRowNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getClosestRowBeforeMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getClosestRowBeforeMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerReport.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReport.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getClusterStatus.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatus.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balanceAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balanceAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balanceSwitchNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitchNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/RegionServers": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.numRegionServers",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/bulkLoadHFilesAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.bulkLoadHFilesAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/compactRegionAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.compactRegionAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/disableTableMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.disableTableMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/closeMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.closeMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/enableTableNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.enableTableNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/openScannerMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.openScannerMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/moveMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.moveMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/checkAndPutMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndPutMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteTableAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTableAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/assign.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.assign.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/ClusterId": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.tag.clusterId",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolVersionMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersionMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerStartupMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartupMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcQueueTimeMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.RpcQueueTimeMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/createTableNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.createTableNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcProcessingTimeMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.RpcProcessingTimeMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getAlterStatus.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatus.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/addColumnNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.addColumnNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/splitSizeNumOps": {
+              "metric": "hadoop:service=Master,name=MasterStatistics.splitSizeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/unassignNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.unassignNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balance.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balance.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/closeRegionNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.closeRegionNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolSignature.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignature.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/synchronousBalanceSwitchAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitchAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/appendMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.appendMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/unlockRowMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.unlockRowMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getStoreFileListMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getStoreFileListMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/moveAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.moveAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/mutateRowMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.mutateRowMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getHTableDescriptors.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptors.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getCompactionStateAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getCompactionStateAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/closeRegionMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.closeRegionMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/reportRSFatalError.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalError.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcSlowResponseMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.RpcSlowResponseMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balanceSwitchMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitchMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balanceMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balanceMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/lockRowMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.lockRowMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/openScannerMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.openScannerMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getStoreFileListAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getStoreFileListAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/openRegionsAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionsAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/disableTableMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.disableTableMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getOnlineRegionsNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getOnlineRegionsNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteColumnAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumnAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/putMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.putMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/replicationCallQueueLen": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.replicationCallQueueLen",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyTableMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTableMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/reportRSFatalErrorMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalErrorMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/flushRegionAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.flushRegionAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteColumn.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumn.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/offline.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.offline.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/splitTimeMinTime": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitTime_min",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/createTable.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.createTable.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/lockRowAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.lockRowAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/lockRowMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.lockRowMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/synchronousBalanceSwitch.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitch.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getClusterStatus.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatus.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/addColumn.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.addColumn.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/isMasterRunningNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunningNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/closeAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.closeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/addColumn.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.addColumn.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/closeMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.closeMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/replicateLogEntriesMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.replicateLogEntriesMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/openRegionsMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionsMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balance.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balance.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/replicateLogEntriesMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.replicateLogEntriesMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/execCoprocessorMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.execCoprocessorMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/splitTime_num_ops": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitTime_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/RegionsInTransition": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.ritCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyTableAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTableAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/assignMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.assignMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/isMasterRunning.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunning.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerReport.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReport.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthenticationSuccesses": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.rpcAuthenticationSuccesses",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/enableTable.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.enableTable.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/execCoprocessorNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.execCoprocessorNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/move.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.move.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/shutdownMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.shutdownMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/assign.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.assign.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerReportNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReportNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/addColumnAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.addColumnAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/isMasterRunning.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunning.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolVersion.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersion.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyTable.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTable.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/HeapMemoryUsed": {
+              "metric": "java.lang:type=Memory.HeapMemoryUsage[used]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rollHLogWriterAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.rollHLogWriterAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getRegionInfoNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getRegionInfoNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/ReceivedBytes": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.ReceivedBytes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/move.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.move.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolSignatureAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignatureAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/NonHeapMemoryMax": {
+              "metric": "java.lang:type=Memory.NonHeapMemoryUsage[max]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyTableMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTableMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/incrementColumnValueAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.incrementColumnValueAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyTableNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTableNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/disableTable.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.disableTable.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getClusterStatus.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatus.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyColumnAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumnAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/reportRSFatalError.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalError.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/DeadRegionServers": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.numDeadRegionServers",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/closeNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.closeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/unassign.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.unassign.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balance.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balance.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/nextMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.nextMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/AverageLoad": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.averageLoad",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/MasterStartTime": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.masterStartTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/appendMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.appendMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/priorityCallQueueLen": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.priorityCallQueueLen",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getAlterStatusMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatusMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/bulkLoadHFilesNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.bulkLoadHFilesNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/callQueueLen": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.callQueueLen",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/synchronousBalanceSwitchMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitchMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/flushRegionNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.flushRegionNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerStartup.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartup.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/unassignAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.unassignAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolVersionNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersionNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/shutdown.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.shutdown.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/checkAndPutMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndPutMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/assignAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.assignAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/checkAndDeleteMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndDeleteMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/shutdownNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.shutdownNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getAlterStatusNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatusNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/disableTable.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.disableTable.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/openRegionNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyColumn.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumn.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/synchronousBalanceSwitch.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitch.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getCompactionStateNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getCompactionStateNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getHTableDescriptorsAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptorsAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/openRegionAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/stopMaster.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.stopMaster.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getRegionInfoMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getRegionInfoMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/putNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.putNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/hdfsRevision": {
+              "metric": "hadoop:service=HBase,name=Info.hdfsRevision",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/url": {
+              "metric": "hadoop:service=HBase,name=Info.url",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolSignature.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignature.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/openRegionsMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionsMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/compactRegionNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.compactRegionNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/nextMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.nextMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getOnlineRegionsMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getOnlineRegionsMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/checkAndDeleteNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndDeleteNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/isMasterRunning.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunning.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteTable.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTable.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/unassign.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.unassign.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getRegionInfoAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getRegionInfoAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balance.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balance.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getHServerInfoNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getHServerInfoNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/shutdown.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.shutdown.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/NonHeapMemoryUsed": {
+              "metric": "java.lang:type=Memory.NonHeapMemoryUsage[used]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteColumnMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumnMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getStoreFileListNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getStoreFileListNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteTableMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTableMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/addColumn.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.addColumn.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/synchronousBalanceSwitchMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitchMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/isMasterRunningMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunningMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/closeRegionAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.closeRegionAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/disableTableAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.disableTableAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/assign.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.assign.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/offlineAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.offlineAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/HeapMemoryMax": {
+              "metric": "java.lang:type=Memory.HeapMemoryUsage[max]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/moveNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.moveNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/incrementColumnValueMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.incrementColumnValueMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/splitSize_avg_time": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitSize_mean",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/checkAndDeleteAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndDeleteAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/mutateRowAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.mutateRowAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/existsMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.existsMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balanceSwitch.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitch.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyTable.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTable.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/synchronousBalanceSwitch.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitch.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/date": {
+              "metric": "hadoop:service=HBase,name=Info.date",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/incrementAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.incrementAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/flushRegionMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.flushRegionMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getOnlineRegionsMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getOnlineRegionsMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/stopNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.stopNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/user": {
+              "metric": "java.lang:type=Runtime.SystemProperties.user.name",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/stopMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.stopMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getHTableDescriptors.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptors.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getClosestRowBeforeAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getClosestRowBeforeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/offlineNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.offlineNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/SentBytes": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.SentBytes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/incrementMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.incrementMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteTableMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTableMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/checkAndPutAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndPutAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/openScannerAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.openScannerAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/stopMasterAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.stopMasterAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/assignMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.assignMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/compactRegionMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.compactRegionMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/openRegionMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/addColumnMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.addColumnMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcProcessingTimeNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.RpcProcessingTimeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/existsMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.existsMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/enableTableMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.enableTableMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/splitSizeMinTime": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitSize_min",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/shutdown.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.shutdown.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/enableTableAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.enableTableAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerStartup.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartup.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/lockRowNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.lockRowNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/stopMasterMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.stopMasterMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolVersion.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersion.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balanceSwitch.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitch.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/move.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.move.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolSignatureMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignatureMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyTable.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTable.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/splitRegionMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.splitRegionMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/mutateRowMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.mutateRowMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/splitSizeAvgTime": {
+              "metric": "hadoop:service=Master,name=MasterStatistics.splitSizeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerReportAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReportAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/putAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.putAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/shutdownMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.shutdownMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getBlockCacheColumnFamilySummariesAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getBlockCacheColumnFamilySummariesAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getHTableDescriptors.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptors.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerStartupMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartupMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/createTableMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.createTableMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getHTableDescriptors.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptors.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthorizationSuccesses": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.rpcAuthorizationSuccesses",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/isMasterRunning.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunning.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/enableTable.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.enableTable.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/Version": {
+              "metric": "hadoop:service=HBase,name=Info.version",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getRegionInfoMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getRegionInfoMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/unassign.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.unassign.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/stopMasterMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.stopMasterMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/move.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.move.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            }
+          }
+        }
+      }
+    ],
+    "HostComponent": [
+      {
+        "type": "ganglia",
+        "metrics": {
+          "default": {
+            "metrics/load/load_one": {
+              "metric": "load_one",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapUsedM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/memory/swap_total": {
+              "metric": "swap_total",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/process/proc_total": {
+              "metric": "proc_total",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/balance_avg_time": {
+              "metric": "master.Balancer.BalancerCluster_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/disk/part_max_used": {
+              "metric": "part_max_used",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/balance_num_ops": {
+              "metric": "master.Balancer.BalancerCluster_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/network/bytes_in": {
+              "metric": "bytes_in",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapCommittedM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/master/splitTime_num_ops": {
+              "metric": "master.FileSystem.HlogSplitTime_num_ops",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthenticationSuccesses": {
+              "metric": "master.Master.authenticationSuccesses",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/network/pkts_in": {
+              "metric": "pkts_in",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemHeapCommittedM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsRunnable": {
+              "metric": "jvm.JvmMetrics.ThreadsRunnable",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsNew": {
+              "metric": "jvm.JvmMetrics.ThreadsNew",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationFailures": {
+              "metric": "master.Master.authorizationFailures",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_avg_time": {
+              "metric": "master.Master.QueueCallTime_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcTimeMillis": {
+              "metric": "jvm.JvmMetrics.GcTimeMillis",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTerminated": {
+              "metric": "jvm.JvmMetrics.ThreadsTerminated",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/network/bytes_out": {
+              "metric": "bytes_out",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/load/load_five": {
+              "metric": "load_five",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/boottime": {
+              "metric": "boottime",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric":true
+            },
+            "metrics/rpc/RpcProcessingTime_num_ops": {
+              "metric": "master.Master.ProcessCallTime_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logError": {
+              "metric": "jvm.JvmMetrics.LogError",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/process/proc_run": {
+              "metric": "proc_run",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsBlocked": {
+              "metric": "jvm.JvmMetrics.ThreadsBlocked",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_num_ops": {
+              "metric": "master.Master.QueueCallTime_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/master/splitSize_num_ops": {
+              "metric": "master.FileSystem.HlogSplitSize_num_ops",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/cpu/cpu_aidle": {
+              "metric": "cpu_aidle",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/network/pkts_out": {
+              "metric": "pkts_out",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/master/splitSize_avg_time": {
+              "metric": "master.FileSystem.HlogSplitSize_mean",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/cpu/cpu_speed": {
+              "metric": "cpu_speed",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/hbase/master/cluster_requests": {
+              "metric": "master.Server.clusterRequests",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_avg_time": {
+              "metric": "master.Master.ProcessCallTime_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthenticationFailures": {
+              "metric": "master.Master.authenticationFailures",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/maxMemoryM": {
+              "metric": "jvm.metrics.maxMemoryM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logWarn": {
+              "metric": "jvm.JvmMetrics.LogWarn",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTimedWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsTimedWaiting",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcCount": {
+              "metric": "jvm.JvmMetrics.GcCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemHeapUsedM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsWaiting",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/memory/mem_buffers": {
+              "metric": "mem_buffers",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/load/load_fifteen": {
+              "metric": "load_fifteen",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logInfo": {
+              "metric": "jvm.JvmMetrics.LogInfo",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationSuccesses": {
+              "metric": "master.Master.authorizationSuccesses",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logFatal": {
+              "metric": "jvm.JvmMetrics.LogFatal",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcCountConcurrentMarkSweep": {
+              "metric":"jvm.JvmMetrics.GcCountConcurrentMarkSweep",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcCountParNew": {
+              "metric":"jvm.JvmMetrics.GcCountParNew",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcTimeMillisConcurrentMarkSweep": {
+              "metric":"jvm.JvmMetrics.GcTimeMillisConcurrentMarkSweep",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcTimeMillisParNew": {
+              "metric":"jvm.JvmMetrics.GcTimeMillisParNew",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemHeapMaxM": {
+              "metric":"jvm.JvmMetrics.MemHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemMaxM": {
+              "metric":"jvm.JvmMetrics.MemMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemNonHeapMaxM": {
+              "metric":"jvm.JvmMetrics.MemNonHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/Assign_75th_percentile": {
+              "metric":"master.AssignmentManger.Assign_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/Assign_95th_percentile": {
+              "metric":"master.AssignmentManger.Assign_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/Assign_99th_percentile": {
+              "metric":"master.AssignmentManger.Assign_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/Assign_max": {
+              "metric":"master.AssignmentManger.Assign_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/Assign_mean": {
+              "metric":"master.AssignmentManger.Assign_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/Assign_median": {
+              "metric":"master.AssignmentManger.Assign_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/Assign_min": {
+              "metric":"master.AssignmentManger.Assign_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/Assign_num_ops": {
+              "metric":"master.AssignmentManger.Assign_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/BulkAssign_75th_percentile": {
+              "metric":"master.AssignmentManger.BulkAssign_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/BulkAssign_95th_percentile": {
+              "metric":"master.AssignmentManger.BulkAssign_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/BulkAssign_99th_percentile": {
+              "metric":"master.AssignmentManger.BulkAssign_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/BulkAssign_max": {
+              "metric":"master.AssignmentManger.BulkAssign_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/BulkAssign_mean": {
+              "metric":"master.AssignmentManger.BulkAssign_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/BulkAssign_median": {
+              "metric":"master.AssignmentManger.BulkAssign_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/BulkAssign_min": {
+              "metric":"master.AssignmentManger.BulkAssign_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/BulkAssign_num_ops": {
+              "metric":"master.AssignmentManger.BulkAssign_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/ritCount": {
+              "metric":"master.AssignmentManger.ritCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/ritCountOverThreshold": {
+              "metric":"master.AssignmentManger.ritCountOverThreshold",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/AssignmentManger/ritOldestAge": {
+              "metric":"master.AssignmentManger.ritOldestAge",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Balancer/BalancerCluster_75th_percentile": {
+              "metric":"master.Balancer.BalancerCluster_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Balancer/BalancerCluster_95th_percentile": {
+              "metric":"master.Balancer.BalancerCluster_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Balancer/BalancerCluster_99th_percentile": {
+              "metric":"master.Balancer.BalancerCluster_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Balancer/BalancerCluster_max": {
+              "metric":"master.Balancer.BalancerCluster_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Balancer/BalancerCluster_mean": {
+              "metric":"master.Balancer.BalancerCluster_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Balancer/BalancerCluster_min": {
+              "metric":"master.Balancer.BalancerCluster_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Balancer/miscInvocationCount": {
+              "metric":"master.Balancer.miscInvocationCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitSize_75th_percentile": {
+              "metric":"master.FileSystem.HlogSplitSize_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitSize_95th_percentile": {
+              "metric":"master.FileSystem.HlogSplitSize_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitSize_99th_percentile": {
+              "metric":"master.FileSystem.HlogSplitSize_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitSize_max": {
+              "metric":"master.FileSystem.HlogSplitSize_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitSize_median": {
+              "metric":"master.FileSystem.HlogSplitSize_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitSize_min": {
+              "metric":"master.FileSystem.HlogSplitSize_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitTime_75th_percentile": {
+              "metric":"master.FileSystem.HlogSplitTime_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitTime_95th_percentile": {
+              "metric":"master.FileSystem.HlogSplitTime_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitTime_99th_percentile": {
+              "metric":"master.FileSystem.HlogSplitTime_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitTime_max": {
+              "metric":"master.FileSystem.HlogSplitTime_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitTime_mean": {
+              "metric":"master.FileSystem.HlogSplitTime_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitTime_median": {
+              "metric":"master.FileSystem.HlogSplitTime_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/HlogSplitTime_min": {
+              "metric":"master.FileSystem.HlogSplitTime_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitSize_75th_percentile": {
+              "metric":"master.FileSystem.MetaHlogSplitSize_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitSize_95th_percentile": {
+              "metric":"master.FileSystem.MetaHlogSplitSize_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitSize_99th_percentile": {
+              "metric":"master.FileSystem.MetaHlogSplitSize_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitSize_max": {
+              "metric":"master.FileSystem.MetaHlogSplitSize_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitSize_mean": {
+              "metric":"master.FileSystem.MetaHlogSplitSize_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitSize_median": {
+              "metric":"master.FileSystem.MetaHlogSplitSize_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitSize_min": {
+              "metric":"master.FileSystem.MetaHlogSplitSize_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitSize_num_ops": {
+              "metric":"master.FileSystem.MetaHlogSplitSize_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitTime_75th_percentile": {
+              "metric":"master.FileSystem.MetaHlogSplitTime_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitTime_95th_percentile": {
+              "metric":"master.FileSystem.MetaHlogSplitTime_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitTime_99th_percentile": {
+              "metric":"master.FileSystem.MetaHlogSplitTime_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitTime_max": {
+              "metric":"master.FileSystem.MetaHlogSplitTime_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitTime_mean": {
+              "metric":"master.FileSystem.MetaHlogSplitTime_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitTime_median": {
+              "metric":"master.FileSystem.MetaHlogSplitTime_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitTime_min": {
+              "metric":"master.FileSystem.MetaHlogSplitTime_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/FileSystem/MetaHlogSplitTime_num_ops": {
+              "metric":"master.FileSystem.MetaHlogSplitTime_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/numActiveHandler": {
+              "metric":"master.Master.numActiveHandler",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/numCallsInGeneralQueue": {
+              "metric":"master.Master.numCallsInGeneralQueue",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/numCallsInPriorityQueue": {
+              "metric":"master.Master.numCallsInPriorityQueue",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/numCallsInReplicationQueue": {
+              "metric":"master.Master.numCallsInReplicationQueue",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/numOpenConnections": {
+              "metric":"master.Master.numOpenConnections",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/ProcessCallTime_75th_percentile": {
+              "metric":"master.Master.ProcessCallTime_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/ProcessCallTime_95th_percentile": {
+              "metric":"master.Master.ProcessCallTime_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/ProcessCallTime_99th_percentile": {
+              "metric":"master.Master.ProcessCallTime_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/ProcessCallTime_max": {
+              "metric":"master.Master.ProcessCallTime_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/ProcessCallTime_mean": {
+              "metric":"master.Master.ProcessCallTime_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/ProcessCallTime_median": {
+              "metric":"master.Master.ProcessCallTime_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/ProcessCallTime_min": {
+              "metric":"master.Master.ProcessCallTime_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/QueueCallTime_75th_percentile": {
+              "metric":"master.Master.QueueCallTime_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/QueueCallTime_95th_percentile": {
+              "metric":"master.Master.QueueCallTime_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/QueueCallTime_99th_percentile": {
+              "metric":"master.Master.QueueCallTime_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/QueueCallTime_max": {
+              "metric":"master.Master.QueueCallTime_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/QueueCallTime_mean": {
+              "metric":"master.Master.QueueCallTime_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/QueueCallTime_min": {
+              "metric":"master.Master.QueueCallTime_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/queueSize": {
+              "metric":"master.Master.queueSize",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/receivedBytes": {
+              "metric":"master.Master.receivedBytes",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/sentBytes": {
+              "metric":"master.Master.sentBytes",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/TotalCallTime_75th_percentile": {
+              "metric":"master.Master.TotalCallTime_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/TotalCallTime_95th_percentile": {
+              "metric":"master.Master.TotalCallTime_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/TotalCallTime_99th_percentile": {
+              "metric":"master.Master.TotalCallTime_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/TotalCallTime_max": {
+              "metric":"master.Master.TotalCallTime_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/TotalCallTime_mean": {
+              "metric":"master.Master.TotalCallTime_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/TotalCallTime_median": {
+              "metric":"master.Master.TotalCallTime_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/TotalCallTime_min": {
+              "metric":"master.Master.TotalCallTime_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Master/TotalCallTime_num_ops": {
+              "metric":"master.Master.TotalCallTime_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Server/averageLoad": {
+              "metric":"master.Server.averageLoad",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Server/masterActiveTime": {
+              "metric":"master.Server.masterActiveTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Server/masterStartTime": {
+              "metric":"master.Server.masterStartTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Server/numDeadRegionServers": {
+              "metric":"master.Server.numDeadRegionServers",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/master/Server/numRegionServers": {
+              "metric":"master.Server.numRegionServers",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/DroppedPubAll": {
+              "metric":"metricssystem.MetricsSystem.DroppedPubAll",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumActiveSinks": {
+              "metric":"metricssystem.MetricsSystem.NumActiveSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumActiveSources": {
+              "metric":"metricssystem.MetricsSystem.NumActiveSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumAllSinks": {
+              "metric":"metricssystem.MetricsSystem.NumAllSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumAllSources": {
+              "metric":"metricssystem.MetricsSystem.NumAllSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/PublishAvgTime": {
+              "metric":"metricssystem.MetricsSystem.PublishAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/PublishNumOps": {
+              "metric":"metricssystem.MetricsSystem.PublishNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineAvgTime": {
+              "metric":"metricssystem.MetricsSystem.Sink_timelineAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineDropped": {
+              "metric":"metricssystem.MetricsSystem.Sink_timelineDropped",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineNumOps": {
+              "metric":"metricssystem.MetricsSystem.Sink_timelineNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineQsize": {
+              "metric":"metricssystem.MetricsSystem.Sink_timelineQsize",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/SnapshotAvgTime": {
+              "metric":"metricssystem.MetricsSystem.SnapshotAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/SnapshotNumOps": {
+              "metric":"metricssystem.MetricsSystem.SnapshotNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/appendCount": {
+              "metric":"regionserver.WAL.appendCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_75th_percentile": {
+              "metric":"regionserver.WAL.AppendSize_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_95th_percentile": {
+              "metric":"regionserver.WAL.AppendSize_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_99th_percentile": {
+              "metric":"regionserver.WAL.AppendSize_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_max": {
+              "metric":"regionserver.WAL.AppendSize_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_mean": {
+              "metric":"regionserver.WAL.AppendSize_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_median": {
+              "metric":"regionserver.WAL.AppendSize_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_min": {
+              "metric":"regionserver.WAL.AppendSize_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendSize_num_ops": {
+              "metric":"regionserver.WAL.AppendSize_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_75th_percentile": {
+              "metric":"regionserver.WAL.AppendTime_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_95th_percentile": {
+              "metric":"regionserver.WAL.AppendTime_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_99th_percentile": {
+              "metric":"regionserver.WAL.AppendTime_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_max": {
+              "metric":"regionserver.WAL.AppendTime_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_mean": {
+              "metric":"regionserver.WAL.AppendTime_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_median": {
+              "metric":"regionserver.WAL.AppendTime_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_min": {
+              "metric":"regionserver.WAL.AppendTime_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/AppendTime_num_ops": {
+              "metric":"regionserver.WAL.AppendTime_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/lowReplicaRollRequest": {
+              "metric":"regionserver.WAL.lowReplicaRollRequest",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/rollRequest": {
+              "metric":"regionserver.WAL.rollRequest",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/slowAppendCount": {
+              "metric":"regionserver.WAL.slowAppendCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_75th_percentile": {
+              "metric":"regionserver.WAL.SyncTime_75th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_95th_percentile": {
+              "metric":"regionserver.WAL.SyncTime_95th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_99th_percentile": {
+              "metric":"regionserver.WAL.SyncTime_99th_percentile",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_max": {
+              "metric":"regionserver.WAL.SyncTime_max",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_mean": {
+              "metric":"regionserver.WAL.SyncTime_mean",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_median": {
+              "metric":"regionserver.WAL.SyncTime_median",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_min": {
+              "metric":"regionserver.WAL.SyncTime_min",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/regionserver/WAL/SyncTime_num_ops": {
+              "metric":"regionserver.WAL.SyncTime_num_ops",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/GetGroupsAvgTime": {
+              "metric":"ugi.UgiMetrics.GetGroupsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/GetGroupsNumOps": {
+              "metric":"ugi.UgiMetrics.GetGroupsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/LoginFailureAvgTime": {
+              "metric":"ugi.UgiMetrics.LoginFailureAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/LoginFailureNumOps": {
+              "metric":"ugi.UgiMetrics.LoginFailureNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/LoginSuccessAvgTime": {
+              "metric":"ugi.UgiMetrics.LoginSuccessAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/LoginSuccessNumOps": {
+              "metric":"ugi.UgiMetrics.LoginSuccessNumOps",
+              "pointInTime": true,
+              "temporal": true
+            }
+          }
+        }
+      },
+      {
+        "type": "jmx",
+        "metrics": {
+          "default": {
+            "metrics/rpc/regionServerReport.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReport.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memMaxM": {
+              "metric": "Hadoop:service=HBase,name=JvmMetrics.MemMaxM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/reportRSFatalError.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalError.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/closeRegionMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.closeRegionMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/isMasterRunningAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunningAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcQueueTimeAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.RpcQueueTimeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteTableNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTableNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/splitRegionAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.splitRegionAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getHTableDescriptorsMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptorsMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getClusterStatus.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatus.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/splitRegionNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.splitRegionNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolVersionAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersionAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyColumnMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumnMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getBlockCacheColumnFamilySummariesMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getBlockCacheColumnFamilySummariesMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getClosestRowBeforeMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getClosestRowBeforeMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolSignatureNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignatureNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcSlowResponseMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.RpcSlowResponseMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/AverageLoad": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.averageLoad",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/openScannerNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.openScannerNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteTable.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTable.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteColumn.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumn.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getCompactionStateMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getCompactionStateMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/stopMaster.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.stopMaster.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerReport.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReport.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getHServerInfoAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getHServerInfoAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyColumn.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumn.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rollHLogWriterMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.rollHLogWriterMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/offlineMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.offlineMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolSignatureMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignatureMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/ServerName": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.tag.serverName",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getHServerInfoMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getHServerInfoMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/splitSizeMaxTime": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitSize_max",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/execCoprocessorAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.execCoprocessorAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcProcessingTimeMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.RpcProcessingTimeMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getClusterStatusMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatusMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/offline.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.offline.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/ZookeeperQuorum": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.tag.zookeeperQuorum",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/hdfsDate": {
+              "metric": "hadoop:service=HBase,name=Info.hdfsDate",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/createTable.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.createTable.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/offlineMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.offlineMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/offline.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.offline.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balanceNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balanceNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getClosestRowBeforeNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getClosestRowBeforeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyColumnNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumnNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getLastFlushTimeNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getLastFlushTimeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/stopMaster.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.stopMaster.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteTable.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTable.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/hdfsUrl": {
+              "metric": "hadoop:service=HBase,name=Info.hdfsUrl",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/NonHeapMemoryMax": {
+              "metric": "java.lang:type=Memory.NonHeapMemoryUsage[max]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/multiMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.multiMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/revision": {
+              "metric": "hadoop:service=HBase,name=Info.revision",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyColumnMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumnMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/addColumnMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.addColumnMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getHTableDescriptorsNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptorsNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcQueueTimeMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.RpcQueueTimeMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/multiNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.multiNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolVersion.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersion.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/deleteTable.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTable.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/enableTableMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.enableTableMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerReportMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReportMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/reportRSFatalErrorNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalErrorNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/addColumn.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.addColumn.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/unassign.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.unassign.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/reportRSFatalErrorMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalErrorMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/disableTable.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.disableTable.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/existsAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.existsAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/MasterActiveTime": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.masterActiveTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/master/AssignmentManger/ritCount": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=AssignmentManger.ritCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getBlockCacheColumnFamilySummariesNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getBlockCacheColumnFamilySummariesNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/createTable.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.createTable.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthorizationFailures": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.rpcAuthorizationFailures",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/hdfsUser": {
+              "metric": "hadoop:service=HBase,name=Info.hdfsUser",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerStartupAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartupAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerStartupNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartupNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteColumnNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumnNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/version": {
+              "metric": "hadoop:service=HBase,name=Info.version",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/splitTimeMaxTime": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitTime_max",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/synchronousBalanceSwitchNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitchNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/stopMasterNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.stopMasterNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/splitTimeNumOps": {
+              "metric": "hadoop:service=Master,name=MasterStatistics.splitTimeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/reportRSFatalErrorAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalErrorAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/replicateLogEntriesNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.replicateLogEntriesNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/multiMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.multiMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteColumnMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumnMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolSignature.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignature.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getLastFlushTimeMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getLastFlushTimeMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/disableTable.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.disableTable.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/NumOpenConnections": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.NumOpenConnections",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcQueueTimeNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.RpcQueueTimeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerReportMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReportMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/IsActiveMaster": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.tag.isActiveMaster",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/bulkLoadHFilesMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.bulkLoadHFilesMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/synchronousBalanceSwitch.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitch.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/MasterStartTime": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.masterStartTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balanceSwitchMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitchMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/unlockRowMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.unlockRowMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/incrementNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.incrementNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/reportRSFatalError.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalError.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balanceSwitch.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitch.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/execCoprocessorMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.execCoprocessorMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/enableTable.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.enableTable.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/putMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.putMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/flushRegionMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.flushRegionMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/nextNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.nextNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getOnlineRegionsAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getOnlineRegionsAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/createTableAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.createTableAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyTable.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTable.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getAlterStatusAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatusAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/assign.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.assign.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerStartup.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartup.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balanceSwitch.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitch.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/isMasterRunningMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunningMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/existsNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.existsNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/compactRegionMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.compactRegionMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/bulkLoadHFilesMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.bulkLoadHFilesMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rollHLogWriterNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.rollHLogWriterNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/unlockRowAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.unlockRowAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/openRegionsNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionsNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/checkAndDeleteMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndDeleteMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/stopMaster.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.stopMaster.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/splitRegionMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.splitRegionMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getHTableDescriptorsMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptorsMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteColumn.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumn.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/moveMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.moveMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/shutdown.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.shutdown.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/appendNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.appendNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/appendAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.appendAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getClusterStatusNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatusNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcSlowResponseNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.RpcSlowResponseNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/splitSize_num_ops": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitSize_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getLastFlushTimeMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getLastFlushTimeMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/checkAndPutNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndPutNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/splitTime_avg_time": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitTime_mean",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/createTableMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.createTableMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/incrementMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.incrementMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getAlterStatus.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatus.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getCompactionStateMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getCompactionStateMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/splitTimeAvgTime": {
+              "metric": "hadoop:service=Master,name=MasterStatistics.splitTimeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getStoreFileListMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getStoreFileListMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolSignature.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignature.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcProcessingTimeAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.RpcProcessingTimeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/incrementColumnValueNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.incrementColumnValueNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/enableTable.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.enableTable.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/stopMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.stopMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/multiAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.multiAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/createTable.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.createTable.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/shutdownAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.shutdownAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/openRegionMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getBlockCacheColumnFamilySummariesMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getBlockCacheColumnFamilySummariesMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteColumn.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumn.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyColumn.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumn.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/disableTableNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.disableTableNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolVersion.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersion.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/replicateLogEntriesAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.replicateLogEntriesAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/cluster_requests": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.clusterRequests",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getHServerInfoMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getHServerInfoMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getClusterStatusMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatusMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthenticationFailures": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.rpcAuthenticationFailures",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/Coprocessors": {
+              "metric": "hadoop:service=Master,name=Master.Coprocessors",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/unlockRowNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.unlockRowNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getAlterStatus.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatus.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerStartup.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartup.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balanceMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balanceMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyColumn.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumn.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/incrementColumnValueMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.incrementColumnValueMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolVersionMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersionMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/RegionsInTransition": {
+              "metric": "hadoop:service=Master,name=Master.RegionsInTransition",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balanceSwitchAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitchAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getAlterStatusMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatusMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/unassignMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.unassignMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/nextAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.nextAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rollHLogWriterMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.rollHLogWriterMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getAlterStatus.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatus.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/stopAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.stopAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/hdfsVersion": {
+              "metric": "hadoop:service=HBase,name=Info.hdfsVersion",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/unassignMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.unassignMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcSlowResponseAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.RpcSlowResponseAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/assignNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.assignNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getLastFlushTimeAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getLastFlushTimeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getClusterStatusAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatusAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/mutateRowNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.mutateRowNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getClosestRowBeforeMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getClosestRowBeforeMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerReport.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReport.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getClusterStatus.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatus.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balanceAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balanceAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balanceSwitchNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitchNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/RegionServers": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.numRegionServers",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/bulkLoadHFilesAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.bulkLoadHFilesAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/compactRegionAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.compactRegionAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/disableTableMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.disableTableMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/closeMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.closeMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/enableTableNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.enableTableNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/openScannerMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.openScannerMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/moveMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.moveMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/checkAndPutMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndPutMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteTableAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTableAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/assign.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.assign.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/ClusterId": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.tag.clusterId",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolVersionMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersionMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerStartupMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartupMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcQueueTimeMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.RpcQueueTimeMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/createTableNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.createTableNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcProcessingTimeMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.RpcProcessingTimeMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getAlterStatus.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatus.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/splitSizeNumOps": {
+              "metric": "hadoop:service=Master,name=MasterStatistics.splitSizeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/addColumnNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.addColumnNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/unassignNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.unassignNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balance.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balance.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/closeRegionNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.closeRegionNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolSignature.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignature.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/synchronousBalanceSwitchAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitchAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/appendMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.appendMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/unlockRowMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.unlockRowMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getStoreFileListMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getStoreFileListMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/moveAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.moveAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/mutateRowMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.mutateRowMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getHTableDescriptors.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptors.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getCompactionStateAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getCompactionStateAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/closeRegionMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.closeRegionMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/reportRSFatalError.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalError.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/HeapMemoryMax": {
+              "metric": "java.lang:type=Memory.HeapMemoryUsage[max]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcSlowResponseMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.RpcSlowResponseMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balanceSwitchMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitchMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/HeapMemoryUsed": {
+              "metric": "java.lang:type=Memory.HeapMemoryUsage[used]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balanceMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balanceMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/lockRowMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.lockRowMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/openScannerMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.openScannerMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getStoreFileListAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getStoreFileListAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/openRegionsAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionsAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/disableTableMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.disableTableMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getOnlineRegionsNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getOnlineRegionsNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteColumnAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumnAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/replicationCallQueueLen": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.replicationCallQueueLen",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/putMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.putMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyTableMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTableMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/reportRSFatalErrorMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalErrorMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/flushRegionAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.flushRegionAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteColumn.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumn.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/offline.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.offline.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/splitTimeMinTime": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitTime_min",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/createTable.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.createTable.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/lockRowAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.lockRowAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/lockRowMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.lockRowMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/synchronousBalanceSwitch.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitch.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getClusterStatus.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatus.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/addColumn.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.addColumn.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/isMasterRunningNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunningNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/closeAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.closeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/addColumn.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.addColumn.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/closeMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.closeMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/replicateLogEntriesMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.replicateLogEntriesMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/openRegionsMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionsMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balance.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balance.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/replicateLogEntriesMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.replicateLogEntriesMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/execCoprocessorMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.execCoprocessorMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/splitTime_num_ops": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitTime_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyTableAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTableAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/assignMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.assignMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/isMasterRunning.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunning.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerReport.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReport.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthenticationSuccesses": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.rpcAuthenticationSuccesses",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/enableTable.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.enableTable.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/execCoprocessorNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.execCoprocessorNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/NonHeapMemoryUsed": {
+              "metric": "java.lang:type=Memory.NonHeapMemoryUsage[used]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/move.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.move.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/shutdownMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.shutdownMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/assign.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.assign.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerReportNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReportNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/addColumnAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.addColumnAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/isMasterRunning.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunning.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolVersion.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersion.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyTable.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTable.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rollHLogWriterAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.rollHLogWriterAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getRegionInfoNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getRegionInfoNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/ReceivedBytes": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.ReceivedBytes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/move.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.move.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolSignatureAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignatureAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyTableMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTableMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/incrementColumnValueAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.incrementColumnValueAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyTableNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTableNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/disableTable.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.disableTable.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getClusterStatus.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatus.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyColumnAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumnAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/reportRSFatalError.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalError.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/DeadRegionServers": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.numDeadRegionServers",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/closeNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.closeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/unassign.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.unassign.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balance.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balance.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/nextMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.nextMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/appendMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.appendMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/priorityCallQueueLen": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.priorityCallQueueLen",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getAlterStatusMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatusMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/bulkLoadHFilesNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.bulkLoadHFilesNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/callQueueLen": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.callQueueLen",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/synchronousBalanceSwitchMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitchMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/flushRegionNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.flushRegionNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerStartup.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartup.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/unassignAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.unassignAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolVersionNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersionNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/shutdown.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.shutdown.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/checkAndPutMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndPutMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/assignAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.assignAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/checkAndDeleteMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndDeleteMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/shutdownNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.shutdownNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getAlterStatusNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatusNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/disableTable.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.disableTable.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/openRegionNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyColumn.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumn.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/synchronousBalanceSwitch.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitch.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getCompactionStateNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getCompactionStateNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getHTableDescriptorsAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptorsAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/openRegionAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/stopMaster.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.stopMaster.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getRegionInfoMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getRegionInfoMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/putNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.putNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/hdfsRevision": {
+              "metric": "hadoop:service=HBase,name=Info.hdfsRevision",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/url": {
+              "metric": "hadoop:service=HBase,name=Info.url",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolSignature.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignature.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/openRegionsMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionsMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/compactRegionNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.compactRegionNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/nextMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.nextMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getOnlineRegionsMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getOnlineRegionsMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/checkAndDeleteNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndDeleteNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/isMasterRunning.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunning.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteTable.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTable.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/unassign.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.unassign.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getRegionInfoAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getRegionInfoAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balance.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balance.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getHServerInfoNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getHServerInfoNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/shutdown.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.shutdown.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteColumnMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumnMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getStoreFileListNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getStoreFileListNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteTableMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTableMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/addColumn.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.addColumn.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/synchronousBalanceSwitchMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitchMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/isMasterRunningMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunningMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/closeRegionAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.closeRegionAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/disableTableAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.disableTableAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/assign.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.assign.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/offlineAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.offlineAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/moveNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.moveNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/incrementColumnValueMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.incrementColumnValueMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/splitSize_avg_time": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitSize_mean",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/load/AverageLoad": {
+              "metric": "hadoop:service=Master,name=Master.AverageLoad",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/checkAndDeleteAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndDeleteAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/mutateRowAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.mutateRowAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/existsMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.existsMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balanceSwitch.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitch.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyTable.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTable.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/synchronousBalanceSwitch.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitch.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/date": {
+              "metric": "hadoop:service=HBase,name=Info.date",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/incrementAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.incrementAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/flushRegionMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.flushRegionMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getOnlineRegionsMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getOnlineRegionsMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/stopNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.stopNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/user": {
+              "metric": "java.lang:type=Runtime.SystemProperties.user.name",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/stopMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.stopMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getHTableDescriptors.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptors.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getClosestRowBeforeAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getClosestRowBeforeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/offlineNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.offlineNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/SentBytes": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.SentBytes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/incrementMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.incrementMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/deleteTableMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTableMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/checkAndPutAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndPutAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/openScannerAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.openScannerAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/stopMasterAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.stopMasterAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/assignMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.assignMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/compactRegionMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.compactRegionMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/openRegionMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/addColumnMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.addColumnMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcProcessingTimeNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.RpcProcessingTimeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/existsMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.existsMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/enableTableMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.enableTableMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/splitSizeMinTime": {
+              "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitSize_min",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/shutdown.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.shutdown.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/enableTableAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.enableTableAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerStartup.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartup.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/lockRowNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.lockRowNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolVersion.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersion.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/stopMasterMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.stopMasterMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/balanceSwitch.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitch.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/move.aboveOneSec.AvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.move.aboveOneSec.AvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getProtocolSignatureMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignatureMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/modifyTable.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTable.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/splitRegionMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.splitRegionMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/mutateRowMinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.mutateRowMinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/hbase/master/splitSizeAvgTime": {
+              "metric": "hadoop:service=Master,name=MasterStatistics.splitSizeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerReportAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReportAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/putAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.putAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getNumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/shutdownMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.shutdownMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getBlockCacheColumnFamilySummariesAvgTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getBlockCacheColumnFamilySummariesAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getHTableDescriptors.aboveOneSec.MaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptors.aboveOneSec.MaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/regionServerStartupMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartupMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/createTableMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.createTableMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/getHTableDescriptors.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptors.aboveOneSec.NumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthorizationSuccesses": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.rpcAuthorizationSuccesses",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/isMasterRunning.aboveOneSec.NumOps": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunning.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/getRegionInfoMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.getRegionInfoMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/unassign.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.unassign.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/stopMasterMaxTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.stopMasterMaxTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/move.aboveOneSec.MinTime": {
+              "metric": "hadoop:service=HBase,name=RPCStatistics.move.aboveOneSec.MinTime",
+              "pointInTime": true,
+              "temporal": false
+            }
+          }
+        }
+      }
+    ]
+  }
+}

+ 38 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/package/scripts/hbase_client.py

@@ -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.
+
+Ambari Agent
+
+"""
+
+# Python Imports
+
+# Local Imports
+from resource_management.libraries.script.dummy import Dummy
+
+
+class HBaseClient(Dummy):
+  """
+  Dummy script that simulates a client component.
+  """
+
+  def __init__(self):
+    super(HBaseClient, self).__init__()
+    self.component_name = "HBASE_CLIENT"
+
+if __name__ == "__main__":
+  HBaseClient().execute()

+ 41 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/package/scripts/hbase_master.py

@@ -0,0 +1,41 @@
+"""
+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.
+
+Ambari Agent
+
+"""
+
+# Python Imports
+
+# Local Imports
+from resource_management.libraries.script.dummy import Dummy
+
+
+class HBaseMaster(Dummy):
+  """
+  Dummy script that simulates a master component.
+  """
+
+  def __init__(self):
+    super(HBaseMaster, self).__init__()
+    self.component_name = "HBASE_MASTER"
+
+  def decommission(self, env):
+    print "Decommission"
+
+if __name__ == "__main__":
+  HBaseMaster().execute()

+ 41 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/package/scripts/hbase_regionserver.py

@@ -0,0 +1,41 @@
+"""
+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.
+
+Ambari Agent
+
+"""
+
+# Python Imports
+
+# Local Imports
+from resource_management.libraries.script.dummy import Dummy
+
+
+class HBaseRegionServer(Dummy):
+  """
+  Dummy script that simulates a slave component.
+  """
+
+  def __init__(self):
+    super(HBaseRegionServer, self).__init__()
+    self.component_name = "HBASE_REGIONSERVER"
+
+  def decommission(self, env):
+    print "Decommission"
+
+if __name__ == "__main__":
+  HBaseRegionServer().execute()

+ 38 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/package/scripts/phoenix_queryserver.py

@@ -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.
+
+Ambari Agent
+
+"""
+
+# Python Imports
+
+# Local Imports
+from resource_management.libraries.script.dummy import Dummy
+
+
+class PhoenixQueryServer(Dummy):
+  """
+  Dummy script that simulates a slave component.
+  """
+
+  def __init__(self):
+    super(PhoenixQueryServer, self).__init__()
+    self.component_name = "PHOENIX_QUERY_SERVER"
+
+if __name__ == "__main__":
+  PhoenixQueryServer().execute()

+ 30 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/package/scripts/service_check.py

@@ -0,0 +1,30 @@
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Ambari Agent
+
+"""
+
+from resource_management.libraries.script.script import Script
+
+class ServiceCheck(Script):
+
+  def service_check(self, env):
+    print "Service Check"
+
+if __name__ == "__main__":
+  ServiceCheck().execute()

+ 97 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/quicklinks/quicklinks.json

@@ -0,0 +1,97 @@
+{
+  "name": "default",
+  "description": "default quick links configuration",
+  "configuration": {
+    "protocol":
+    {
+      "type":"http"
+    },
+
+    "links": [
+      {
+        "name": "hbase_master_ui",
+        "label": "HBase Master UI",
+        "url":"%@://%@:%@/master-status",
+        "requires_user_name": "false",
+        "port":{
+          "http_property": "hbase.master.info.port",
+          "http_default_port": "60010",
+          "https_property": "hbase.master.info.port",
+          "https_default_port": "60443",
+          "regex": "",
+          "site": "hbase-site"
+        }
+      },
+      {
+        "name": "hbase_logs",
+        "label": "HBase Logs",
+        "url":"%@://%@:%@/logs",
+        "requires_user_name": "false",
+        "port":{
+          "http_property": "hbase.master.info.port",
+          "http_default_port": "60010",
+          "https_property": "hbase.master.info.port",
+          "https_default_port": "60443",
+          "regex": "",
+          "site": "hbase-site"
+        }
+      },
+      {
+        "name": "zookeeper_info",
+        "label": "Zookeeper Info",
+        "url":"%@://%@:%@/zk.jsp",
+        "requires_user_name": "false",
+        "port":{
+          "http_property": "hbase.master.info.port",
+          "http_default_port": "60010",
+          "https_property": "hbase.master.info.port",
+          "https_default_port": "60443",
+          "regex": "",
+          "site": "hbase-site"
+        }
+      },
+      {
+        "name": "hbase_master_jmx",
+        "label": "HBase Master JMX",
+        "url":"%@://%@:%@/jmx",
+        "requires_user_name": "false",
+        "port":{
+          "http_property": "hbase.master.info.port",
+          "http_default_port": "60010",
+          "https_property": "hbase.master.info.port",
+          "https_default_port": "60443",
+          "regex": "",
+          "site": "hbase-site"
+        }
+      },
+      {
+        "name": "debug_dump",
+        "label": "Debug Dump",
+        "url":"%@://%@:%@/dump",
+        "requires_user_name": "false",
+        "port":{
+          "http_property": "hbase.master.info.port",
+          "http_default_port": "60010",
+          "https_property": "hbase.master.info.port",
+          "https_default_port": "60443",
+          "regex": "",
+          "site": "hbase-site"
+        }
+      },
+      {
+        "name": "thread_stacks",
+        "label": "Thread Stacks",
+        "url":"%@://%@:%@/stacks",
+        "requires_user_name": "false",
+        "port":{
+          "http_property": "hbase.master.info.port",
+          "http_default_port": "60010",
+          "https_property": "hbase.master.info.port",
+          "https_default_port": "60443",
+          "regex": "",
+          "site": "hbase-site"
+        }
+      }
+    ]
+  }
+}

+ 411 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/themes/theme.json

@@ -0,0 +1,411 @@
+{
+  "name": "default",
+  "description": "Default theme for HBASE service",
+  "configuration": {
+    "layouts": [
+      {
+        "name": "default",
+        "tabs": [
+          {
+            "name": "settings",
+            "display-name": "Settings",
+            "layout": {
+              "tab-columns": "3",
+              "tab-rows": "3",
+              "sections": [
+                {
+                  "name": "section-hbase-memory",
+                  "display-name": "Server",
+                  "row-index": "0",
+                  "column-index": "0",
+                  "row-span": "1",
+                  "column-span": "2",
+                  "section-columns": "2",
+                  "section-rows": "1",
+                  "subsections": [
+                    {
+                      "name": "subsection-hbase-memory-col1",
+                      "row-index": "0",
+                      "column-index": "0",
+                      "row-span": "1",
+                      "column-span": "1"
+                    },
+                    {
+                      "name": "subsection-hbase-memory-col2",
+                      "row-index": "0",
+                      "column-index": "1",
+                      "row-span": "1",
+                      "column-span": "1"
+                    }
+                  ]
+                },
+                {
+                  "name": "section-hbase-client",
+                  "display-name": "Client",
+                  "row-index": "0",
+                  "column-index": "2",
+                  "row-span": "1",
+                  "column-span": "1",
+                  "section-columns": "1",
+                  "section-rows": "1",
+                  "subsections": [
+                    {
+                      "name": "subsection-hbase-client-col1",
+                      "row-index": "0",
+                      "column-index": "0",
+                      "row-span": "1",
+                      "column-span": "1"
+                    }
+                  ]
+                },
+                {
+                  "name": "section-hbase-disk",
+                  "display-name": "Disk",
+                  "row-index": "1",
+                  "column-index": "0",
+                  "row-span": "1",
+                  "column-span": "3",
+                  "section-columns": "3",
+                  "section-rows": "1",
+                  "subsections": [
+                    {
+                      "name": "subsection-hbase-disk-col1",
+                      "row-index": "0",
+                      "column-index": "0",
+                      "row-span": "1",
+                      "column-span": "1"
+                    },
+                    {
+                      "name": "subsection-hbase-disk-col2",
+                      "row-index": "0",
+                      "column-index": "1",
+                      "row-span": "1",
+                      "column-span": "1"
+                    },
+                    {
+                      "name": "subsection-hbase-disk-col3",
+                      "row-index": "0",
+                      "column-index": "2",
+                      "row-span": "1",
+                      "column-span": "1"
+                    }
+                  ]
+                },
+                {
+                  "name": "section-hbase-timeouts",
+                  "display-name": "Timeouts",
+                  "row-index": "2",
+                  "column-index": "0",
+                  "row-span": "1",
+                  "column-span": "1",
+                  "section-columns": "1",
+                  "section-rows": "1",
+                  "subsections": [
+                    {
+                      "name": "subsection-hbase-timeouts-col1",
+                      "row-index": "0",
+                      "column-index": "0",
+                      "row-span": "1",
+                      "column-span": "1"
+                    }
+                  ]
+                },
+                {
+                  "name": "section-hbase-security",
+                  "display-name": "Security",
+                  "row-index": "2",
+                  "column-index": "1",
+                  "row-span": "1",
+                  "column-span": "1",
+                  "section-columns": "1",
+                  "section-rows": "1",
+                  "subsections": [
+                    {
+                      "name": "subsection-hbase-security-col1",
+                      "row-index": "0",
+                      "column-index": "0",
+                      "row-span": "1",
+                      "column-span": "1"
+                    }
+                  ]
+                },
+                {
+                  "name": "section-hbase-phoenix",
+                  "display-name": "Phoenix SQL",
+                  "row-index": "2",
+                  "column-index": "2",
+                  "row-span": "1",
+                  "column-span": "1",
+                  "section-columns": "1",
+                  "section-rows": "1",
+                  "subsections": [
+                    {
+                      "name": "subsection-hbase-phoenix-col1",
+                      "row-index": "0",
+                      "column-index": "0",
+                      "row-span": "1",
+                      "column-span": "1"
+                    }
+                  ]
+                }
+              ]
+            }
+          }
+        ]
+      }
+    ],
+    "placement": {
+      "configuration-layout": "default",
+      "configs": [
+        {
+          "config": "hbase-env/hbase_master_heapsize",
+          "subsection-name": "subsection-hbase-memory-col1"
+        },
+        {
+          "config": "hbase-env/hbase_regionserver_heapsize",
+          "subsection-name": "subsection-hbase-memory-col1"
+        },
+        {
+          "config": "hbase-site/hfile.block.cache.size",
+          "subsection-name": "subsection-hbase-memory-col1"
+        },
+        {
+          "config": "hbase-site/hbase.regionserver.global.memstore.upperLimit",
+          "subsection-name": "subsection-hbase-memory-col1"
+        },
+        {
+          "config": "hbase-site/hbase.hregion.memstore.flush.size",
+          "subsection-name": "subsection-hbase-memory-col2"
+        },
+        {
+          "config": "hbase-site/hbase.hregion.memstore.block.multiplier",
+          "subsection-name": "subsection-hbase-memory-col2"
+        },
+        {
+          "config": "hbase-site/hbase.regionserver.handler.count",
+          "subsection-name": "subsection-hbase-memory-col2"
+        },
+        {
+          "config": "hbase-site/hbase.client.retries.number",
+          "subsection-name": "subsection-hbase-client-col1"
+        },
+        {
+          "config": "hbase-site/hbase.client.keyvalue.maxsize",
+          "subsection-name": "subsection-hbase-client-col1"
+        },
+        {
+          "config": "hbase-site/hbase.hregion.max.filesize",
+          "subsection-name": "subsection-hbase-disk-col1"
+        },
+        {
+          "config": "hbase-site/hbase.hregion.majorcompaction",
+          "subsection-name": "subsection-hbase-disk-col2"
+        },
+        {
+          "config": "hbase-site/hbase.hstore.compaction.max",
+          "subsection-name": "subsection-hbase-disk-col3"
+        },
+        {
+          "config": "hbase-site/zookeeper.session.timeout",
+          "subsection-name": "subsection-hbase-timeouts-col1"
+        },
+        {
+          "config": "hbase-site/hbase.rpc.timeout",
+          "subsection-name": "subsection-hbase-timeouts-col1"
+        },
+        {
+          "config": "hbase-site/hbase.security.authentication",
+          "subsection-name": "subsection-hbase-security-col1"
+        },
+        {
+          "config": "hbase-site/hbase.security.authorization",
+          "subsection-name": "subsection-hbase-security-col1"
+        },
+        {
+          "config": "hbase-env/phoenix_sql_enabled",
+          "subsection-name": "subsection-hbase-phoenix-col1"
+        },
+        {
+          "config": "hbase-site/phoenix.query.timeoutMs",
+          "subsection-name": "subsection-hbase-phoenix-col1"
+        }
+      ]
+    },
+    "widgets": [
+      {
+        "config": "hbase-env/hbase_master_heapsize",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "GB"
+            }
+          ]
+        }
+      },
+      {
+        "config": "hbase-env/hbase_regionserver_heapsize",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "GB"
+            }
+          ]
+        }
+      },
+      {
+        "config": "hbase-site/hfile.block.cache.size",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "percent"
+            }
+          ]
+        }
+      },
+      {
+        "config": "hbase-site/hbase.regionserver.global.memstore.upperLimit",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "percent"
+            }
+          ]
+        }
+      },
+      {
+        "config": "hbase-site/hbase.hregion.memstore.flush.size",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "MB"
+            }
+          ]
+        }
+      },
+      {
+        "config": "hbase-site/hbase.hregion.memstore.block.multiplier",
+        "widget": {
+          "type": "combo"
+        }
+      },
+      {
+        "config": "hbase-site/hbase.regionserver.handler.count",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "int"
+            }
+          ]
+        }
+      },
+      {
+        "config": "hbase-site/hbase.client.retries.number",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "int"
+            }
+          ]
+        }
+      },
+      {
+        "config": "hbase-site/hbase.client.keyvalue.maxsize",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "MB"
+            }
+          ]
+        }
+      },
+      {
+        "config": "hbase-site/hbase.hregion.max.filesize",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "GB"
+            }
+          ]
+        }
+      },
+      {
+        "config": "hbase-site/hbase.hregion.majorcompaction",
+        "widget": {
+          "type": "time-interval-spinner",
+          "units": [
+            {
+              "unit-name": "days,hours"
+            }
+          ]
+        }
+      },
+      {
+        "config": "hbase-site/hbase.hstore.compaction.max",
+        "widget": {
+          "type": "combo"
+        }
+      },
+      {
+        "config": "hbase-site/zookeeper.session.timeout",
+        "widget": {
+          "type": "time-interval-spinner",
+          "units": [
+            {
+              "unit-name": "minutes,seconds"
+            }
+          ]
+        }
+      },
+      {
+        "config": "hbase-site/hbase.rpc.timeout",
+        "widget": {
+          "type": "time-interval-spinner",
+          "units": [
+            {
+              "unit-name": "minutes,seconds"
+            }
+          ]
+        }
+      },
+      {
+        "config": "hbase-site/hbase.security.authentication",
+        "widget": {
+          "type": "toggle"
+        }
+      },
+      {
+        "config": "hbase-site/hbase.security.authorization",
+        "widget": {
+          "type": "toggle"
+        }
+      },
+      {
+        "config": "hbase-env/phoenix_sql_enabled",
+        "widget": {
+          "type": "toggle"
+        }
+      },
+      {
+        "config": "hbase-site/phoenix.query.timeoutMs",
+        "widget": {
+          "type": "time-interval-spinner",
+          "units": [
+            {
+              "unit-name": "minutes,seconds"
+            }
+          ]
+        }
+      }
+    ]
+  }
+}
+

+ 510 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HBASE/widgets.json

@@ -0,0 +1,510 @@
+{
+  "layouts": [
+    {
+      "layout_name": "default_hbase_dashboard",
+      "display_name": "Standard HBase Dashboard",
+      "section_name": "HBASE_SUMMARY",
+      "widgetLayoutInfo": [
+        {
+          "widget_name": "Reads and Writes",
+          "description": "Rate (per second) of read and write requests on all regions in the cluster.",
+          "widget_type": "GRAPH",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "regionserver.Server.Get_num_ops._rate",
+              "metric_path": "metrics/hbase/regionserver/Server/Get_num_ops._rate",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            },
+            {
+              "name": "regionserver.Server.ScanNext_num_ops._rate",
+              "metric_path": "metrics/hbase/regionserver/Server/ScanNext_num_ops._rate",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            },
+            {
+              "name": "regionserver.Server.Append_num_ops._rate",
+              "metric_path": "metrics/hbase/regionserver/Server/Append_num_ops._rate",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            },
+            {
+              "name": "regionserver.Server.Delete_num_ops._rate",
+              "metric_path": "metrics/hbase/regionserver/Server/Delete_num_ops._rate",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            },
+            {
+              "name": "regionserver.Server.Increment_num_ops._rate",
+              "metric_path": "metrics/hbase/regionserver/Server/Increment_num_ops._rate",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            },
+            {
+              "name": "regionserver.Server.Mutate_num_ops._rate",
+              "metric_path": "metrics/hbase/regionserver/Server/Mutate_num_ops._rate",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            }
+          ],
+          "values": [
+            {
+              "name": "Read Requests",
+              "value": "${regionserver.Server.Get_num_ops._rate + regionserver.Server.ScanNext_num_ops._rate}"
+            },
+            {
+              "name": "Write Requests",
+              "value": "${regionserver.Server.Append_num_ops._rate + regionserver.Server.Delete_num_ops._rate + regionserver.Server.Increment_num_ops._rate + regionserver.Server.Mutate_num_ops._rate}"
+            }
+          ],
+          "properties": {
+            "graph_type": "LINE",
+            "time_range": "1"
+          }
+        },
+        {
+          "widget_name": "Read Latency",
+          "description": "maximum of 95% read latency.",
+          "widget_type": "GRAPH",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "regionserver.Server.Get_95th_percentile._max",
+              "metric_path": "metrics/hbase/regionserver/Server/Get_95th_percentile._max",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            },
+            {
+              "name": "regionserver.Server.ScanNext_95th_percentile._max",
+              "metric_path": "metrics/hbase/regionserver/Server/ScanNext_95th_percentile._max",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            }
+          ],
+          "values": [
+            {
+              "name": "Cluster wide maximum of 95% Get Latency",
+              "value": "${regionserver.Server.Get_95th_percentile._max}"
+            },
+            {
+              "name": "Cluster wide maximum of 95% ScanNext Latency",
+              "value": "${regionserver.Server.ScanNext_95th_percentile._max}"
+            }
+          ],
+          "properties": {
+            "display_unit": "ms",
+            "graph_type": "LINE",
+            "time_range": "1"
+          }
+        },
+        {
+          "widget_name": "Write Latency",
+          "description": "maximum of 95% write latency.",
+          "widget_type": "GRAPH",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "regionserver.Server.Mutate_95th_percentile._max",
+              "metric_path": "metrics/hbase/regionserver/Server/Mutate_95th_percentile._max",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            },
+            {
+              "name": "regionserver.Server.Increment_95th_percentile._max",
+              "metric_path": "metrics/hbase/regionserver/Server/Increment_95th_percentile._max",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            },
+            {
+              "name": "regionserver.Server.Append_95th_percentile._max",
+              "metric_path": "metrics/hbase/regionserver/Server/Append_95th_percentile._max",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            },
+            {
+              "name": "regionserver.Server.Delete_95th_percentile._max",
+              "metric_path": "metrics/hbase/regionserver/Server/Delete_95th_percentile._max",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            }
+          ],
+          "values": [
+            {
+              "name": "Cluster wide maximum of 95% Mutate Latency",
+              "value": "${regionserver.Server.Mutate_95th_percentile._max}"
+            },
+            {
+              "name": "Cluster wide maximum of 95% Increment Latency",
+              "value": "${regionserver.Server.Increment_95th_percentile._max}"
+            },
+            {
+              "name": "Cluster wide maximum of 95% Append Latency",
+              "value": "${regionserver.Server.Append_95th_percentile._max}"
+            },
+            {
+              "name": "Cluster wide maximum of 95% Delete Latency",
+              "value": "${regionserver.Server.Delete_95th_percentile._max}"
+            }
+          ],
+          "properties": {
+            "display_unit": "ms",
+            "graph_type": "LINE",
+            "time_range": "1"
+          }
+        },
+        {
+          "widget_name": "Open Connections",
+          "description": "Count of open connections across all RegionServer. This is indicative of RegionServer load in the cluster.",
+          "widget_type": "GRAPH",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "regionserver.RegionServer.numOpenConnections._sum",
+              "metric_path": "metrics/hbase/ipc/IPC/numOpenConnections._sum",
+              "category": "",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            }
+          ],
+          "values": [
+            {
+              "name": "Open Connections",
+              "value": "${regionserver.RegionServer.numOpenConnections._sum}"
+            }
+          ],
+          "properties": {
+            "graph_type": "LINE",
+            "time_range": "1"
+          }
+        },
+        {
+          "widget_name": "Request Handlers",
+          "description": "Count of Active handlers vs count of calls waiting in the general queue.",
+          "widget_type": "GRAPH",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "regionserver.RegionServer.numActiveHandler._sum",
+              "metric_path": "metrics/hbase/ipc/IPC/numActiveHandler._sum",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            },
+            {
+              "name": "regionserver.RegionServer.numCallsInGeneralQueue._sum",
+              "metric_path": "metrics/hbase/ipc/IPC/numCallsInGeneralQueue._sum",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            }
+          ],
+          "values": [
+            {
+              "name": "Active Handlers",
+              "value": "${regionserver.RegionServer.numActiveHandler._sum}"
+            },
+            {
+              "name": "Calls in General Queue",
+              "value": "${regionserver.RegionServer.numCallsInGeneralQueue._sum}"
+            }
+          ],
+          "properties": {
+            "graph_type": "LINE",
+            "time_range": "1"
+          }
+        },
+        {
+          "widget_name": "Files Local",
+          "description": "Average percentage of local files to RegionServer in the cluster.",
+          "widget_type": "NUMBER",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "regionserver.Server.percentFilesLocal",
+              "metric_path": "metrics/hbase/regionserver/Server/percentFilesLocal",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            }
+          ],
+          "values": [
+            {
+              "name": "Files Local",
+              "value": "${regionserver.Server.percentFilesLocal}"
+            }
+          ],
+          "properties": {
+            "display_unit": "%",
+            "error_threshold":"25",
+            "warning_threshold": "75"
+          }
+        },
+        {
+          "widget_name": "Blocked Updates",
+          "description": "Number of milliseconds updates have been blocked so the memstore can be flushed.",
+          "widget_type": "GRAPH",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "regionserver.Server.updatesBlockedTime._rate",
+              "metric_path": "metrics/hbase/regionserver/Server/updatesBlockedTime._rate",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            }
+          ],
+          "values": [
+            {
+              "name": "Updates Blocked Time",
+              "value": "${regionserver.Server.updatesBlockedTime._rate}"
+            }
+          ],
+          "properties": {
+            "display_unit": "ms",
+            "graph_type": "LINE",
+            "time_range": "1"
+          }
+        },
+        {
+          "widget_name": "Cluster CPU",
+          "description": "Percentage of CPU utilized across all RegionServer hosts.",
+          "widget_type": "GRAPH",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "cpu_system._sum",
+              "metric_path": "metrics/cpu/cpu_system._sum",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            },
+            {
+              "name": "cpu_user._sum",
+              "metric_path": "metrics/cpu/cpu_user._sum",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            },
+            {
+              "name": "cpu_nice._sum",
+              "metric_path": "metrics/cpu/cpu_nice._sum",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            },
+            {
+              "name": "cpu_idle._sum",
+              "metric_path": "metrics/cpu/cpu_idle._sum",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            },
+            {
+              "name": "cpu_wio._sum",
+              "metric_path": "metrics/cpu/cpu_wio._sum",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            }
+          ],
+          "values": [
+            {
+              "name": "CPU utilization",
+              "value": "${((cpu_system._sum + cpu_user._sum + cpu_nice._sum)/(cpu_system._sum + cpu_user._sum + cpu_nice._sum + cpu_idle._sum + cpu_wio._sum)) * 100}"
+            }
+          ],
+          "properties": {
+            "graph_type": "LINE",
+            "time_range": "1",
+            "display_unit": "%"
+          }
+        },
+        {
+          "widget_name": "Cluster Network",
+          "description": "Average of Network IO utilized across all RegionServer hosts.",
+          "widget_type": "GRAPH",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "pkts_in._avg",
+              "metric_path": "metrics/network/pkts_in._avg",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            },
+            {
+              "name": "pkts_out._avg",
+              "metric_path": "metrics/network/pkts_out._avg",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            }
+          ],
+          "values": [
+            {
+              "name": "Packets In",
+              "value": "${pkts_in._avg}"
+            },
+            {
+              "name": "Packets Out",
+              "value": "${pkts_out._avg}"
+            }
+          ],
+          "properties": {
+            "graph_type": "LINE",
+            "time_range": "1"
+          }
+        },
+        {
+          "widget_name": "Cluster Disk",
+          "description": "Sum of disk throughput for all RegionServer hosts.",
+          "widget_type": "GRAPH",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "read_bps._sum",
+              "metric_path": "metrics/disk/read_bps._sum",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            },
+            {
+              "name": "write_bps._sum",
+              "metric_path": "metrics/disk/write_bps._sum",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            }
+          ],
+          "values": [
+            {
+              "name": "Read throughput",
+              "value": "${read_bps._sum/1048576}"
+            },
+            {
+              "name": "Write throughput",
+              "value": "${write_bps._sum/1048576}"
+            }
+          ],
+          "properties": {
+            "display_unit": "Mbps",
+            "graph_type": "LINE",
+            "time_range": "1"
+          }
+        }
+      ]
+    },
+    {
+      "layout_name": "default_hbase_heatmap",
+      "display_name": "HBase Heatmaps",
+      "section_name": "HBASE_HEATMAPS",
+      "widgetLayoutInfo": [
+        {
+          "widget_name": "HBase Compaction Queue Size",
+          "description": "",
+          "widget_type": "HEATMAP",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "Hadoop:service=HBase,name=RegionServer,sub=Server.compactionQueueLength",
+              "metric_path": "metrics/hbase/regionserver/compactionQueueSize",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            }
+          ],
+          "values": [
+            {
+              "name": "HBase Compaction Queue Size",
+              "value": "${Hadoop:service=HBase,name=RegionServer,sub=Server.compactionQueueLength} "
+            }
+          ],
+          "properties": {
+            "display_unit": "",
+            "max_limit": "10"
+          }
+        },
+        {
+          "widget_name": "HBase Memstore Sizes",
+          "description": "",
+          "widget_type": "HEATMAP",
+          "is_visible": false,
+          "metrics": [
+            {
+              "name": "Hadoop:service=HBase,name=RegionServer,sub=Server.memStoreSize",
+              "metric_path": "metrics/hbase/regionserver/memstoreSize",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            }
+          ],
+          "values": [
+            {
+              "name": "HBase Memstore Sizes",
+              "value": "${Hadoop:service=HBase,name=RegionServer,sub=Server.memStoreSize}"
+            }
+          ],
+          "properties": {
+            "display_unit": "B",
+            "max_limit": "104857600"
+          }
+        },
+        {
+          "widget_name": "HBase Read Request Count",
+          "description": "",
+          "widget_type": "HEATMAP",
+          "is_visible": false,
+          "metrics": [
+            {
+              "name": "Hadoop:service=HBase,name=RegionServer,sub=Server.readRequestCount",
+              "metric_path": "metrics/hbase/regionserver/readRequestsCount",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            }
+          ],
+          "values": [
+            {
+              "name": "HBase Read Request Count",
+              "value": "${Hadoop:service=HBase,name=RegionServer,sub=Server.readRequestCount}"
+            }
+          ],
+          "properties": {
+            "max_limit": "200"
+          }
+        },
+        {
+          "widget_name": "HBase Write Request Count",
+          "description": "",
+          "widget_type": "HEATMAP",
+          "is_visible": false,
+          "metrics": [
+            {
+              "name": "Hadoop:service=HBase,name=RegionServer,sub=Server.writeRequestCount",
+              "metric_path": "metrics/hbase/regionserver/writeRequestsCount",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            }
+          ],
+          "values": [
+            {
+              "name": "HBase Write Request Count",
+              "value": "${Hadoop:service=HBase,name=RegionServer,sub=Server.writeRequestCount}"
+            }
+          ],
+          "properties": {
+            "max_limit": "200"
+          }
+        },
+        {
+          "widget_name": "HBase Regions",
+          "description": "",
+          "widget_type": "HEATMAP",
+          "is_visible": false,
+          "metrics": [
+            {
+              "name": "Hadoop:service=HBase,name=RegionServer,sub=Server.regionCount",
+              "metric_path": "metrics/hbase/regionserver/regions",
+              "service_name": "HBASE",
+              "component_name": "HBASE_REGIONSERVER"
+            }
+          ],
+          "values": [
+            {
+              "name": "HBase Regions",
+              "value": "${Hadoop:service=HBase,name=RegionServer,sub=Server.regionCount}"
+            }
+          ],
+          "properties": {
+            "max_limit": "10"
+          }
+        }
+      ]
+    }
+  ]
+}

+ 1786 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/alerts.json

@@ -0,0 +1,1786 @@
+{
+  "HDFS":{
+    "service": [
+      {
+        "name": "datanode_process_percent",
+        "label": "Percent DataNodes Available",
+        "description": "This alert is triggered if the number of down DataNodes in the cluster is greater than the configured critical threshold. It aggregates the results of DataNode process checks.",
+        "interval": 1,
+        "scope": "SERVICE",
+        "enabled": true,
+        "source": {
+          "type": "AGGREGATE",
+          "alert_name": "datanode_process",
+          "reporting": {
+            "ok": {
+              "text": "affected: [{1}], total: [{0}]"
+            },
+            "warning": {
+              "text": "affected: [{1}], total: [{0}]",
+              "value": 10
+            },
+            "critical": {
+              "text": "affected: [{1}], total: [{0}]",
+              "value": 30
+            },
+            "units" : "%",
+            "type": "PERCENT"
+          }
+        }
+      },
+      {
+        "name": "datanode_storage_percent",
+        "label": "Percent DataNodes With Available Space",
+        "description": "This service-level alert is triggered if the storage on a certain percentage of DataNodes exceeds either the warning or critical threshold values.",
+        "interval": 1,
+        "scope": "SERVICE",
+        "enabled": true,
+        "source": {
+          "type": "AGGREGATE",
+          "alert_name": "datanode_storage",
+          "reporting": {
+            "ok": {
+              "text": "affected: [{1}], total: [{0}]"
+            },
+            "warning": {
+              "text": "affected: [{1}], total: [{0}]",
+              "value": 10
+            },
+            "critical": {
+              "text": "affected: [{1}], total: [{0}]",
+              "value": 30
+            },
+            "units" : "%",
+            "type": "PERCENT"
+          }
+        }
+      },
+      {
+        "name": "journalnode_process_percent",
+        "label": "Percent JournalNodes Available",
+        "description": "This alert is triggered if the number of down JournalNodes in the cluster is greater than the configured critical threshold. It aggregates the results of JournalNode process checks.",
+        "interval": 1,
+        "scope": "SERVICE",
+        "enabled": true,
+        "source": {
+          "type": "AGGREGATE",
+          "alert_name": "journalnode_process",
+          "reporting": {
+            "ok": {
+              "text": "affected: [{1}], total: [{0}]"
+            },
+            "warning": {
+              "text": "affected: [{1}], total: [{0}]",
+              "value": 33
+            },
+            "critical": {
+              "text": "affected: [{1}], total: [{0}]",
+              "value": 50
+            },
+            "units" : "%",
+            "type": "PERCENT"
+          }
+        }
+      }
+    ],
+    "NAMENODE": [
+      {
+        "name": "namenode_webui",
+        "label": "NameNode Web UI",
+        "description": "This host-level alert is triggered if the NameNode Web UI is unreachable.",
+        "interval": 1,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "WEB",
+          "uri": {
+            "http": "{{hdfs-site/dfs.namenode.http-address}}",
+            "https": "{{hdfs-site/dfs.namenode.https-address}}",
+            "https_property": "{{hdfs-site/dfs.http.policy}}",
+            "https_property_value": "HTTPS_ONLY",
+            "kerberos_keytab": "{{hdfs-site/dfs.web.authentication.kerberos.keytab}}",
+            "kerberos_principal": "{{hdfs-site/dfs.web.authentication.kerberos.principal}}",
+            "connection_timeout": 5.0,
+            "high_availability": {
+              "nameservice": "{{hdfs-site/dfs.internal.nameservices}}",
+              "alias_key" : "{{hdfs-site/dfs.ha.namenodes.{{ha-nameservice}}}}",
+              "http_pattern" : "{{hdfs-site/dfs.namenode.http-address.{{ha-nameservice}}.{{alias}}}}",
+              "https_pattern" : "{{hdfs-site/dfs.namenode.https-address.{{ha-nameservice}}.{{alias}}}}"
+            }
+          },
+          "reporting": {
+            "ok": {
+              "text": "HTTP {0} response in {2:.3f}s"
+            },
+            "warning":{
+              "text": "HTTP {0} response from {1} in {2:.3f}s ({3})"
+            },
+            "critical": {
+              "text": "Connection failed to {1} ({3})"
+            }
+          }
+        }
+      },
+      {
+        "name": "upgrade_finalized_state",
+        "label": "HDFS Upgrade Finalized State",
+        "description": "This service-level alert is triggered if HDFS is not in the finalized state",
+        "interval": 1,
+        "scope": "SERVICE",
+        "enabled": true,
+        "source": {
+          "type": "SCRIPT",
+          "path": "HDFS/2.1.0.2.0/package/alerts/alert_upgrade_finalized.py",
+          "parameters": []
+        }
+      },
+      {
+        "name": "namenode_cpu",
+        "label": "NameNode Host CPU Utilization",
+        "description": "This host-level alert is triggered if CPU utilization of the NameNode exceeds certain warning and critical thresholds. It checks the NameNode JMX Servlet for the SystemCPULoad property. The threshold values are in percent.",
+        "interval": 5,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "METRIC",
+          "uri": {
+            "http": "{{hdfs-site/dfs.namenode.http-address}}",
+            "https": "{{hdfs-site/dfs.namenode.https-address}}",
+            "kerberos_keytab": "{{hdfs-site/dfs.web.authentication.kerberos.keytab}}",
+            "kerberos_principal": "{{hdfs-site/dfs.web.authentication.kerberos.principal}}",
+            "https_property": "{{hdfs-site/dfs.http.policy}}",
+            "https_property_value": "HTTPS_ONLY",
+            "connection_timeout": 5.0,
+            "high_availability": {
+              "nameservice": "{{hdfs-site/dfs.internal.nameservices}}",
+              "alias_key" : "{{hdfs-site/dfs.ha.namenodes.{{ha-nameservice}}}}",
+              "http_pattern" : "{{hdfs-site/dfs.namenode.http-address.{{ha-nameservice}}.{{alias}}}}",
+              "https_pattern" : "{{hdfs-site/dfs.namenode.https-address.{{ha-nameservice}}.{{alias}}}}"
+            }
+          },
+          "reporting": {
+            "ok": {
+              "text": "{1} CPU, load {0:.1%}"
+            },
+            "warning": {
+              "text": "{1} CPU, load {0:.1%}",
+              "value": 200
+            },
+            "critical": {
+              "text": "{1} CPU, load {0:.1%}",
+              "value": 250
+            },
+            "units" : "%",
+            "type": "PERCENT"
+          },
+          "jmx": {
+            "property_list": [
+              "java.lang:type=OperatingSystem/SystemCpuLoad",
+              "java.lang:type=OperatingSystem/AvailableProcessors"
+            ],
+            "value": "{0} * 100"
+          }
+        }
+      },
+      {
+        "name": "namenode_hdfs_blocks_health",
+        "label": "NameNode Blocks Health",
+        "description": "This service-level alert is triggered if the number of corrupt or missing blocks exceeds the configured critical threshold. The threshold values are in blocks.",
+        "interval": 2,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "METRIC",
+          "uri": {
+            "http": "{{hdfs-site/dfs.namenode.http-address}}",
+            "https": "{{hdfs-site/dfs.namenode.https-address}}",
+            "kerberos_keytab": "{{hdfs-site/dfs.web.authentication.kerberos.keytab}}",
+            "kerberos_principal": "{{hdfs-site/dfs.web.authentication.kerberos.principal}}",
+            "https_property": "{{hdfs-site/dfs.http.policy}}",
+            "https_property_value": "HTTPS_ONLY",
+            "connection_timeout": 5.0,
+            "high_availability": {
+              "nameservice": "{{hdfs-site/dfs.internal.nameservices}}",
+              "alias_key" : "{{hdfs-site/dfs.ha.namenodes.{{ha-nameservice}}}}",
+              "http_pattern" : "{{hdfs-site/dfs.namenode.http-address.{{ha-nameservice}}.{{alias}}}}",
+              "https_pattern" : "{{hdfs-site/dfs.namenode.https-address.{{ha-nameservice}}.{{alias}}}}"
+            }
+          },
+          "reporting": {
+            "ok": {
+              "text": "Total Blocks:[{1}], Missing Blocks:[{0}]"
+            },
+            "warning": {
+              "text": "Total Blocks:[{1}], Missing Blocks:[{0}]",
+              "value": 1
+            },          
+            "critical": {
+              "text": "Total Blocks:[{1}], Missing Blocks:[{0}]",
+              "value": 1
+            },
+            "units" : "Blocks"
+          },
+          "jmx": {
+            "property_list": [
+              "Hadoop:service=NameNode,name=FSNamesystem/MissingBlocks",
+              "Hadoop:service=NameNode,name=FSNamesystem/BlocksTotal"
+            ],
+            "value": "{0}"
+          }
+        }
+      },
+      {
+        "name": "namenode_hdfs_pending_deletion_blocks",
+        "label": "HDFS Pending Deletion Blocks",
+        "description": "This service-level alert is triggered if the number of blocks pending deletion in HDFS exceeds the configured warning and critical thresholds. It checks the NameNode JMX Servlet for the PendingDeletionBlock property.",
+        "interval": 2,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "METRIC",
+          "uri": {
+            "http": "{{hdfs-site/dfs.namenode.http-address}}",
+            "https": "{{hdfs-site/dfs.namenode.https-address}}",
+            "kerberos_keytab": "{{hdfs-site/dfs.web.authentication.kerberos.keytab}}",
+            "kerberos_principal": "{{hdfs-site/dfs.web.authentication.kerberos.principal}}",
+            "https_property": "{{hdfs-site/dfs.http.policy}}",
+            "https_property_value": "HTTPS_ONLY",
+            "connection_timeout": 5.0,
+            "high_availability": {
+              "nameservice": "{{hdfs-site/dfs.internal.nameservices}}",
+              "alias_key" : "{{hdfs-site/dfs.ha.namenodes.{{ha-nameservice}}}}",
+              "http_pattern" : "{{hdfs-site/dfs.namenode.http-address.{{ha-nameservice}}.{{alias}}}}",
+              "https_pattern" : "{{hdfs-site/dfs.namenode.https-address.{{ha-nameservice}}.{{alias}}}}"
+            }
+          },
+          "reporting": {
+            "ok": {
+              "text": "Pending Deletion Blocks:[{0}]"
+            },
+            "warning": {
+              "text": "Pending Deletion Blocks:[{0}]",
+              "value": 100000
+            },
+            "critical": {
+              "text": "Pending Deletion Blocks:[{0}]",
+              "value": 100000
+            },
+            "units" : "Blocks"
+          },
+          "jmx": {
+            "property_list": [
+              "Hadoop:service=NameNode,name=FSNamesystem/PendingDeletionBlocks"
+            ],
+            "value": "{0}"
+          }
+        }
+      },
+      {
+        "name": "namenode_hdfs_capacity_utilization",
+        "label": "HDFS Capacity Utilization",
+        "description": "This service-level alert is triggered if the HDFS capacity utilization exceeds the configured warning and critical thresholds. It checks the NameNode JMX Servlet for the CapacityUsed and CapacityRemaining properties. The threshold values are in percent.",
+        "interval": 2,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "METRIC",
+          "uri": {
+            "http": "{{hdfs-site/dfs.namenode.http-address}}",
+            "https": "{{hdfs-site/dfs.namenode.https-address}}",
+            "kerberos_keytab": "{{hdfs-site/dfs.web.authentication.kerberos.keytab}}",
+            "kerberos_principal": "{{hdfs-site/dfs.web.authentication.kerberos.principal}}",
+            "https_property": "{{hdfs-site/dfs.http.policy}}",
+            "https_property_value": "HTTPS_ONLY",
+            "connection_timeout": 5.0,
+            "high_availability": {
+              "nameservice": "{{hdfs-site/dfs.internal.nameservices}}",
+              "alias_key" : "{{hdfs-site/dfs.ha.namenodes.{{ha-nameservice}}}}",
+              "http_pattern" : "{{hdfs-site/dfs.namenode.http-address.{{ha-nameservice}}.{{alias}}}}",
+              "https_pattern" : "{{hdfs-site/dfs.namenode.https-address.{{ha-nameservice}}.{{alias}}}}"
+            }
+          },
+          "reporting": {
+            "ok": {
+              "text": "Capacity Used:[{2:.0f}%, {0}], Capacity Remaining:[{1}]"
+            },
+            "warning": {
+              "text": "Capacity Used:[{2:.0f}%, {0}], Capacity Remaining:[{1}]",
+              "value": 75
+            },          
+            "critical": {
+              "text": "Capacity Used:[{2:.0f}%, {0}], Capacity Remaining:[{1}]",
+              "value": 80
+            },
+            "units" : "%",
+            "type": "PERCENT"
+          },
+          "jmx": {
+            "property_list": [
+              "Hadoop:service=NameNode,name=FSNamesystemState/CapacityUsed",
+              "Hadoop:service=NameNode,name=FSNamesystemState/CapacityRemaining"
+            ],
+            "value": "{0}/({0} + {1}) * 100.0"
+          }
+        }
+      },
+      {
+        "name": "namenode_rpc_latency",
+        "label": "NameNode RPC Latency",
+        "description": "This host-level alert is triggered if the NameNode RPC latency exceeds the configured critical threshold. Typically an increase in the RPC processing time increases the RPC queue length, causing the average queue wait time to increase for NameNode operations. The threshold values are in milliseconds.",
+        "interval": 2,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "METRIC",
+          "uri": {
+            "http": "{{hdfs-site/dfs.namenode.http-address}}",
+            "https": "{{hdfs-site/dfs.namenode.https-address}}",
+            "kerberos_keytab": "{{hdfs-site/dfs.web.authentication.kerberos.keytab}}",
+            "kerberos_principal": "{{hdfs-site/dfs.web.authentication.kerberos.principal}}",
+            "https_property": "{{hdfs-site/dfs.http.policy}}",
+            "https_property_value": "HTTPS_ONLY",
+            "connection_timeout": 5.0,
+            "high_availability": {
+              "nameservice": "{{hdfs-site/dfs.internal.nameservices}}",
+              "alias_key" : "{{hdfs-site/dfs.ha.namenodes.{{ha-nameservice}}}}",
+              "http_pattern" : "{{hdfs-site/dfs.namenode.http-address.{{ha-nameservice}}.{{alias}}}}",
+              "https_pattern" : "{{hdfs-site/dfs.namenode.https-address.{{ha-nameservice}}.{{alias}}}}"
+            }
+          },
+          "reporting": {
+            "ok": {
+              "text": "Average Queue Time:[{0}], Average Processing Time:[{1}]"
+            },
+            "warning": {
+              "text": "Average Queue Time:[{0}], Average Processing Time:[{1}]",
+              "value": 3000
+            },          
+            "critical": {
+              "text": "Average Queue Time:[{0}], Average Processing Time:[{1}]",
+              "value": 5000
+            },
+            "units" : "ms"
+          },
+          "jmx": {
+            "property_list": [
+              "Hadoop:service=NameNode,name=RpcActivityForPort*/RpcQueueTimeAvgTime",
+              "Hadoop:service=NameNode,name=RpcActivityForPort*/RpcProcessingTimeAvgTime"
+            ],
+            "value": "{0}"
+          }
+        }
+      },
+      {
+        "name": "namenode_directory_status",
+        "label": "NameNode Directory Status",
+        "description": "This host-level alert is triggered if the NameNode NameDirStatuses metric (name=NameNodeInfo/NameDirStatuses) reports a failed directory. The threshold values are in the number of directories that are not healthy.",
+        "interval": 1,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "METRIC",
+          "uri": {
+            "http": "{{hdfs-site/dfs.namenode.http-address}}",
+            "https": "{{hdfs-site/dfs.namenode.https-address}}",
+            "kerberos_keytab": "{{hdfs-site/dfs.web.authentication.kerberos.keytab}}",
+            "kerberos_principal": "{{hdfs-site/dfs.web.authentication.kerberos.principal}}",
+            "https_property": "{{hdfs-site/dfs.http.policy}}",
+            "https_property_value": "HTTPS_ONLY",
+            "connection_timeout": 5.0,
+            "high_availability": {
+              "nameservice": "{{hdfs-site/dfs.internal.nameservices}}",
+              "alias_key" : "{{hdfs-site/dfs.ha.namenodes.{{ha-nameservice}}}}",
+              "http_pattern" : "{{hdfs-site/dfs.namenode.http-address.{{ha-nameservice}}.{{alias}}}}",
+              "https_pattern" : "{{hdfs-site/dfs.namenode.https-address.{{ha-nameservice}}.{{alias}}}}"
+            }
+          },
+          "reporting": {
+            "ok": {
+              "text": "Directories are healthy"
+            },
+            "warning": {
+              "text": "Failed directory count: {1}",
+              "value": 1
+            },          
+            "critical": {
+              "text": "Failed directory count: {1}",
+              "value": 1
+            },
+            "units" : "Dirs"
+          },
+          "jmx": {
+            "property_list": [
+              "Hadoop:service=NameNode,name=NameNodeInfo/NameDirStatuses"
+            ],
+            "value": "calculate(args)\ndef calculate(args):\n  import json\n  json_statuses = json.loads({0})\n  return len(json_statuses['failed']) if 'failed' in json_statuses else 0"
+          }
+        }
+      },
+      {
+        "name": "datanode_health_summary",
+        "label": "DataNode Health Summary",
+        "description": "This service-level alert is triggered if there are unhealthy DataNodes",
+        "interval": 1,
+        "scope": "SERVICE",
+        "enabled": true,
+        "source": {
+          "type": "METRIC",
+          "uri": {
+            "http": "{{hdfs-site/dfs.namenode.http-address}}",
+            "https": "{{hdfs-site/dfs.namenode.https-address}}",
+            "kerberos_keytab": "{{hdfs-site/dfs.web.authentication.kerberos.keytab}}",
+            "kerberos_principal": "{{hdfs-site/dfs.web.authentication.kerberos.principal}}",
+            "https_property": "{{hdfs-site/dfs.http.policy}}",
+            "https_property_value": "HTTPS_ONLY",
+            "connection_timeout": 5.0,
+            "high_availability": {
+              "nameservice": "{{hdfs-site/dfs.internal.nameservices}}",
+              "alias_key": "{{hdfs-site/dfs.ha.namenodes.{{ha-nameservice}}}}",
+              "http_pattern": "{{hdfs-site/dfs.namenode.http-address.{{ha-nameservice}}.{{alias}}}}",
+              "https_pattern": "{{hdfs-site/dfs.namenode.https-address.{{ha-nameservice}}.{{alias}}}}"
+            }
+          },
+          "reporting": {
+            "ok": {
+              "text": "All {2} DataNode(s) are healthy"
+            },
+            "warning": {
+              "text": "DataNode Health: [Live={2}, Stale={1}, Dead={0}]",
+              "value": 1
+            },
+            "critical": {
+              "text": "DataNode Health: [Live={2}, Stale={1}, Dead={0}]",
+              "value": 1
+            },
+            "units": "DNs"
+          },
+          "jmx": {
+            "property_list": [
+              "Hadoop:service=NameNode,name=FSNamesystemState/NumDeadDataNodes",
+              "Hadoop:service=NameNode,name=FSNamesystemState/NumStaleDataNodes",
+              "Hadoop:service=NameNode,name=FSNamesystemState/NumLiveDataNodes"
+            ],
+            "value": "{0} + {1}"
+          }
+        }
+      },
+      {
+        "name": "namenode_last_checkpoint",
+        "label": "NameNode Last Checkpoint",
+        "description": "This service-level alert will trigger if the last time that the NameNode performed a checkpoint was too long ago. It will also trigger if the number of uncommitted transactions is beyond a certain threshold.",
+        "interval": 1,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "SCRIPT",
+          "path": "HDFS/2.1.0.2.0/package/alerts/alert_checkpoint_time.py",
+          "parameters": [
+            {
+              "name": "connection.timeout",
+              "display_name": "Connection Timeout",
+              "value": 5.0,
+              "type": "NUMERIC",
+              "description": "The maximum time before this alert is considered to be CRITICAL",
+              "units": "seconds",
+              "threshold": "CRITICAL"
+            },
+            {
+              "name": "checkpoint.time.warning.threshold",
+              "display_name": "Checkpoint Warning",
+              "value": 200,
+              "type": "PERCENT",
+              "description": "The percentage of the last checkpoint time greater than the interval in order to trigger a warning alert.",
+              "units": "%",
+              "threshold": "WARNING"
+            },
+            {
+              "name": "checkpoint.time.critical.threshold",
+              "display_name": "Checkpoint Critical",
+              "value": 200,
+              "type": "PERCENT",
+              "description": "The percentage of the last checkpoint time greater than the interval in order to trigger a critical alert.",
+              "units": "%",
+              "threshold": "CRITICAL"
+            },
+            {
+              "name": "checkpoint.txns.multiplier.warning.threshold",
+              "display_name": "Uncommitted transactions Warning",
+              "value": 2.0,
+              "type": "NUMERIC",
+              "description": "The multiplier to use against dfs.namenode.checkpoint.period compared to the difference between last transaction id and most recent transaction id beyond which to trigger a warning alert.",
+              "threshold": "WARNING"
+            },
+            {
+              "name": "checkpoint.txns.multiplier.critical.threshold",
+              "display_name": "Uncommitted transactions Critical",
+              "value": 4.0,
+              "type": "NUMERIC",
+              "description": "The multiplier to use against dfs.namenode.checkpoint.period compared to the difference between last transaction id and most recent transaction id beyond which to trigger a critical alert.",
+              "threshold": "CRITICAL"
+            }
+          ]
+        }
+      },
+      {
+        "name": "namenode_ha_health",
+        "label": "NameNode High Availability Health",
+        "description": "This service-level alert is triggered if either the Active NameNode or Standby NameNode are not running.",
+        "interval": 1,
+        "scope": "ANY",
+        "enabled": true,
+        "ignore_host": true,
+        "source": {
+          "type": "SCRIPT",
+          "path": "HDFS/2.1.0.2.0/package/alerts/alert_ha_namenode_health.py",
+          "parameters": [
+            {
+              "name": "connection.timeout",
+              "display_name": "Connection Timeout",
+              "value": 5.0,
+              "type": "NUMERIC",
+              "description": "The maximum time before this alert is considered to be CRITICAL",
+              "units": "seconds",
+              "threshold": "CRITICAL"
+            }
+          ]
+        }
+      },
+      {
+        "name": "namenode_service_rpc_queue_latency_hourly",
+        "label": "NameNode Service RPC Queue Latency (Hourly)",
+        "description": "This service-level alert is triggered if the deviation of RPC queue latency on datanode port has grown beyond the specified threshold within an hour period.",
+        "interval": 5,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "SCRIPT",
+          "path": "HDFS/2.1.0.2.0/package/alerts/alert_metrics_deviation.py",
+          "parameters": [
+            {
+              "name": "mergeHaMetrics",
+              "display_name": "Whether active and stanby NameNodes metrics should be merged",
+              "value": "false",
+              "type": "STRING",
+              "description": "Whether active and stanby NameNodes metrics should be merged.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "interval",
+              "display_name": "Time interval in minutes",
+              "value": 60,
+              "type": "NUMERIC",
+              "description": "Time interval in minutes.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "appId",
+              "display_name": "AMS application id",
+              "value": "NAMENODE",
+              "type": "STRING",
+              "description": "The application id used to retrieve the metric.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "metricName",
+              "display_name": "Metric Name",
+              "value": "rpc.rpc.datanode.RpcQueueTimeAvgTime",
+              "type": "STRING",
+              "description": "The metric to monitor.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "metric.deviation.warning.threshold",
+              "display_name": "Growth Rate",
+              "type": "PERCENT",
+              "units": "%",
+              "value": 100,
+              "description": "The percentage of RPC queue latency growth.",
+              "threshold": "WARNING"
+            },
+            {
+              "name": "metric.deviation.critical.threshold",
+              "display_name": "Growth Rate",
+              "type": "PERCENT",
+              "units": "%",
+              "value": 200,
+              "description": "The percentage of RPC queue latency growth.",
+              "threshold": "CRITICAL"
+            },
+            {
+              "name": "minimumValue",
+              "display_name": "Minimum Latency",
+              "value": 30,
+              "type": "NUMERIC",
+              "units": "seconds",
+              "description": "The minimum latency to measure growth."
+            },
+            {
+              "name": "metric.units",
+              "display_name": "Metric Units",
+              "type": "STRING",
+              "value": "ms",
+              "description": "The units that the metric data points are reported in.",
+              "visibility": "HIDDEN"
+            }
+          ]
+        }
+      },
+      {
+        "name": "namenode_client_rpc_queue_latency_hourly",
+        "label": "NameNode Client RPC Queue Latency (Hourly)",
+        "description": "This service-level alert is triggered if the deviation of RPC queue latency on client port has grown beyond the specified threshold within an hour period.",
+        "interval": 5,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "SCRIPT",
+          "path": "HDFS/2.1.0.2.0/package/alerts/alert_metrics_deviation.py",
+          "parameters": [
+            {
+              "name": "mergeHaMetrics",
+              "display_name": "Whether active and stanby NameNodes metrics should be merged",
+              "value": "false",
+              "type": "STRING",
+              "description": "Whether active and stanby NameNodes metrics should be merged.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "interval",
+              "display_name": "Time interval in minutes",
+              "value": 60,
+              "type": "NUMERIC",
+              "description": "Time interval in minutes.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "appId",
+              "display_name": "AMS application id",
+              "value": "NAMENODE",
+              "type": "STRING",
+              "description": "The application id used to retrieve the metric.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "metricName",
+              "display_name": "Metric Name",
+              "value": "rpc.rpc.client.RpcQueueTimeAvgTime",
+              "type": "STRING",
+              "description": "The metric to monitor.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "metric.deviation.warning.threshold",
+              "display_name": "Growth Rate",
+              "type": "PERCENT",
+              "units": "%",
+              "value": 100,
+              "description": "The percentage of RPC queue latency growth.",
+              "threshold": "WARNING"
+            },
+            {
+              "name": "metric.deviation.critical.threshold",
+              "display_name": "Growth Rate",
+              "type": "PERCENT",
+              "units": "%",
+              "value": 200,
+              "description": "The percentage of RPC queue latency growth.",
+              "threshold": "CRITICAL"
+            },
+            {
+              "name": "minimumValue",
+              "display_name": "Minimum Latency",
+              "value": 30,
+              "type": "NUMERIC",
+              "units": "seconds",
+              "description": "The minimum latency to measure growth."
+            },
+            {
+              "name": "metric.units",
+              "display_name": "Metric Units",
+              "type": "STRING",
+              "value": "ms",
+              "description": "The units that the metric data points are reported in.",
+              "visibility": "HIDDEN"
+            }
+          ]
+        }
+      },
+      {
+        "name": "namenode_service_rpc_processing_latency_hourly",
+        "label": "NameNode Service RPC Processing Latency (Hourly)",
+        "description": "This service-level alert is triggered if the deviation of RPC latency on datanode port has grown beyond the specified threshold within an hour period.",
+        "interval": 5,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "SCRIPT",
+          "path": "HDFS/2.1.0.2.0/package/alerts/alert_metrics_deviation.py",
+          "parameters": [
+            {
+              "name": "mergeHaMetrics",
+              "display_name": "Whether active and stanby NameNodes metrics should be merged",
+              "value": "false",
+              "type": "STRING",
+              "description": "Whether active and stanby NameNodes metrics should be merged.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "interval",
+              "display_name": "Time interval in minutes",
+              "value": 60,
+              "type": "NUMERIC",
+              "description": "Time interval in minutes.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "appId",
+              "display_name": "AMS application id",
+              "value": "NAMENODE",
+              "type": "STRING",
+              "description": "The application id used to retrieve the metric.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "metricName",
+              "display_name": "Metric Name",
+              "value": "rpc.rpc.datanode.RpcProcessingTimeAvgTime",
+              "type": "STRING",
+              "description": "The metric to monitor.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "metric.deviation.warning.threshold",
+              "display_name": "Growth Rate",
+              "type": "PERCENT",
+              "units": "%",
+              "value": 100,
+              "description": "The percentage of RPC processing latency growth.",
+              "threshold": "WARNING"
+            },
+            {
+              "name": "metric.deviation.critical.threshold",
+              "display_name": "Growth Rate",
+              "type": "PERCENT",
+              "units": "%",
+              "value": 200,
+              "description": "The percentage of RPC processing latency growth.",
+              "threshold": "CRITICAL"
+            },
+            {
+              "name": "minimumValue",
+              "display_name": "Minimum Latency",
+              "value": 30,
+              "type": "NUMERIC",
+              "units": "seconds",
+              "description": "The minimum latency to measure growth."
+            },
+            {
+              "name": "metric.units",
+              "display_name": "Metric Units",
+              "type": "STRING",
+              "value": "ms",
+              "description": "The units that the metric data points are reported in.",
+              "visibility": "HIDDEN"
+            }
+          ]
+        }
+      },
+      {
+        "name": "namenode_client_rpc_processing_latency_hourly",
+        "label": "NameNode Client RPC Processing Latency (Hourly)",
+        "description": "This service-level alert is triggered if the deviation of RPC latency on client port has grown beyond the specified threshold within an hour period.",
+        "interval": 5,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "SCRIPT",
+          "path": "HDFS/2.1.0.2.0/package/alerts/alert_metrics_deviation.py",
+          "parameters": [
+            {
+              "name": "mergeHaMetrics",
+              "display_name": "Whether active and stanby NameNodes metrics should be merged",
+              "value": "false",
+              "type": "STRING",
+              "description": "Whether active and stanby NameNodes metrics should be merged.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "interval",
+              "display_name": "Time interval in minutes",
+              "value": 60,
+              "type": "NUMERIC",
+              "description": "Time interval in minutes.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "appId",
+              "display_name": "AMS application id",
+              "value": "NAMENODE",
+              "type": "STRING",
+              "description": "The application id used to retrieve the metric.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "metricName",
+              "display_name": "Metric Name",
+              "value": "rpc.rpc.client.RpcProcessingTimeAvgTime",
+              "type": "STRING",
+              "description": "The metric to monitor.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "metric.deviation.warning.threshold",
+              "display_name": "Growth Rate",
+              "type": "PERCENT",
+              "units": "%",
+              "value": 100,
+              "description": "The percentage of RPC processing latency growth.",
+              "threshold": "WARNING"
+            },
+            {
+              "name": "metric.deviation.critical.threshold",
+              "display_name": "Growth Rate",
+              "type": "PERCENT",
+              "units": "%",
+              "value": 200,
+              "description": "The percentage of RPC processing latency growth.",
+              "threshold": "CRITICAL"
+            },
+            {
+              "name": "minimumValue",
+              "display_name": "Minimum Latency",
+              "value": 30,
+              "type": "NUMERIC",
+              "units": "seconds",
+              "description": "The minimum latency to measure growth."
+            },
+            {
+              "name": "metric.units",
+              "display_name": "Metric Units",
+              "type": "STRING",
+              "value": "ms",
+              "description": "The units that the metric data points are reported in.",
+              "visibility": "HIDDEN"
+            }
+          ]
+        }
+      },
+      {
+        "name": "increase_nn_heap_usage_daily",
+        "label": "NameNode Heap Usage (Daily)",
+        "description": "This service-level alert is triggered if the NameNode heap usage deviation has grown beyond the specified threshold within a day period.",
+        "interval": 480,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "SCRIPT",
+          "path": "HDFS/2.1.0.2.0/package/alerts/alert_metrics_deviation.py",
+          "parameters": [
+            {
+              "name": "mergeHaMetrics",
+              "display_name": "Whether active and stanby NameNodes metrics should be merged",
+              "value": "false",
+              "type": "STRING",
+              "description": "Whether active and stanby NameNodes metrics should be merged.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "interval",
+              "display_name": "Time interval in minutes",
+              "value": 1440,
+              "type": "NUMERIC",
+              "description": "Time interval in minutes.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "appId",
+              "display_name": "AMS application id",
+              "value": "NAMENODE",
+              "type": "STRING",
+              "description": "The application id used to retrieve the metric.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "metricName",
+              "display_name": "Metric Name",
+              "value": "jvm.JvmMetrics.MemHeapUsedM",
+              "type": "STRING",
+              "description": "The metric to monitor.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "metric.deviation.warning.threshold",
+              "display_name": "Growth Rate",
+              "type": "PERCENT",
+              "units": "%",
+              "value": 20,
+              "description": "The percentage of NameNode heap usage growth.",
+              "threshold": "WARNING"
+            },
+            {
+              "name": "metric.deviation.critical.threshold",
+              "display_name": "Growth Rate",
+              "type": "PERCENT",
+              "units": "%",
+              "value": 50,
+              "description": "The percentage of NameNode heap usage growth.",
+              "threshold": "CRITICAL"
+            },
+            {
+              "name": "metric.units",
+              "display_name": "Metric Units",
+              "type": "STRING",
+              "value": "MB",
+              "description": "The units that the metric data points are reported in.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "minimumValue",
+              "display_name": "Minimum Heap",
+              "value": 100,
+              "type": "NUMERIC",
+              "units": "MB",
+              "description": "The minimum heap increase in a day."
+            }
+          ]
+        }
+      },
+      {
+        "name": "namenode_service_rpc_processing_latency_daily",
+        "label": "NameNode Service RPC Processing Latency (Daily)",
+        "description": "This service-level alert is triggered if the deviation of RPC latency on datanode port has grown beyond the specified threshold within a day period.",
+        "interval": 480,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "SCRIPT",
+          "path": "HDFS/2.1.0.2.0/package/alerts/alert_metrics_deviation.py",
+          "parameters": [
+            {
+              "name": "mergeHaMetrics",
+              "display_name": "Whether active and stanby NameNodes metrics should be merged",
+              "value": "false",
+              "type": "STRING",
+              "description": "Whether active and stanby NameNodes metrics should be merged.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "interval",
+              "display_name": "Time interval in minutes",
+              "value": 1440,
+              "type": "NUMERIC",
+              "description": "Time interval in minutes.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "appId",
+              "display_name": "AMS application id",
+              "value": "NAMENODE",
+              "type": "STRING",
+              "description": "The application id used to retrieve the metric.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "metricName",
+              "display_name": "Metric Name",
+              "value": "rpc.rpc.datanode.RpcProcessingTimeAvgTime",
+              "type": "STRING",
+              "description": "The metric to monitor.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "metric.deviation.warning.threshold",
+              "display_name": "Growth Rate",
+              "type": "PERCENT",
+              "units": "%",
+              "value": 100,
+              "description": "The percentage of RPC processing latency growth.",
+              "threshold": "WARNING"
+            },
+            {
+              "name": "metric.deviation.critical.threshold",
+              "display_name": "Growth Rate",
+              "type": "PERCENT",
+              "units": "%",
+              "value": 200,
+              "description": "The percentage of RPC processing latency growth.",
+              "threshold": "CRITICAL"
+            },
+            {
+              "name": "minimumValue",
+              "display_name": "Minimum Latency",
+              "value": 30,
+              "type": "NUMERIC",
+              "units": "seconds",
+              "description": "The minimum latency to measure growth."
+            },
+            {
+              "name": "metric.units",
+              "display_name": "Metric Units",
+              "type": "STRING",
+              "value": "ms",
+              "description": "The units that the metric data points are reported in.",
+              "visibility": "HIDDEN"
+            }
+          ]
+        }
+      },
+      {
+        "name": "namenode_client_rpc_processing_latency_daily",
+        "label": "NameNode Client RPC Processing Latency (Daily)",
+        "description": "This service-level alert is triggered if the deviation of RPC latency on client port has grown beyond the specified threshold within a day period.",
+        "interval": 480,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "SCRIPT",
+          "path": "HDFS/2.1.0.2.0/package/alerts/alert_metrics_deviation.py",
+          "parameters": [
+            {
+              "name": "mergeHaMetrics",
+              "display_name": "Whether active and stanby NameNodes metrics should be merged",
+              "value": "false",
+              "type": "STRING",
+              "description": "Whether active and stanby NameNodes metrics should be merged.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "interval",
+              "display_name": "Time interval in minutes",
+              "value": 1440,
+              "type": "NUMERIC",
+              "description": "Time interval in minutes.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "appId",
+              "display_name": "AMS application id",
+              "value": "NAMENODE",
+              "type": "STRING",
+              "description": "The application id used to retrieve the metric.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "metricName",
+              "display_name": "Metric Name",
+              "value": "rpc.rpc.client.RpcProcessingTimeAvgTime",
+              "type": "STRING",
+              "description": "The metric to monitor.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "metric.deviation.warning.threshold",
+              "display_name": "Growth Rate",
+              "type": "PERCENT",
+              "units": "%",
+              "value": 100,
+              "description": "The percentage of RPC processing latency growth.",
+              "threshold": "WARNING"
+            },
+            {
+              "name": "metric.deviation.critical.threshold",
+              "display_name": "Growth Rate",
+              "type": "PERCENT",
+              "units": "%",
+              "value": 200,
+              "description": "The percentage of RPC processing latency growth.",
+              "threshold": "CRITICAL"
+            },
+            {
+              "name": "minimumValue",
+              "display_name": "Minimum Latency",
+              "value": 30,
+              "type": "NUMERIC",
+              "units": "seconds",
+              "description": "The minimum latency to measure growth."
+            },
+            {
+              "name": "metric.units",
+              "display_name": "Metric Units",
+              "type": "STRING",
+              "value": "ms",
+              "description": "The units that the metric data points are reported in.",
+              "visibility": "HIDDEN"
+            }
+          ]
+        }
+      },
+      {
+        "name": "namenode_service_rpc_queue_latency_daily",
+        "label": "NameNode Service RPC Queue Latency (Daily)",
+        "description": "This service-level alert is triggered if the deviation of RPC latency on datanode port has grown beyond the specified threshold within a day period.",
+        "interval": 480,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "SCRIPT",
+          "path": "HDFS/2.1.0.2.0/package/alerts/alert_metrics_deviation.py",
+          "parameters": [
+            {
+              "name": "mergeHaMetrics",
+              "display_name": "Whether active and stanby NameNodes metrics should be merged",
+              "value": "false",
+              "type": "STRING",
+              "description": "Whether active and stanby NameNodes metrics should be merged.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "interval",
+              "display_name": "Time interval in minutes",
+              "value": 1440,
+              "type": "NUMERIC",
+              "description": "Time interval in minutes.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "appId",
+              "display_name": "AMS application id",
+              "value": "NAMENODE",
+              "type": "STRING",
+              "description": "The application id used to retrieve the metric.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "metricName",
+              "display_name": "Metric Name",
+              "value": "rpc.rpc.datanode.RpcQueueTimeAvgTime",
+              "type": "STRING",
+              "description": "The metric to monitor.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "metric.deviation.warning.threshold",
+              "display_name": "Growth Rate",
+              "type": "PERCENT",
+              "units": "%",
+              "value": 100,
+              "description": "The percentage of RPC queue latency growth.",
+              "threshold": "WARNING"
+            },
+            {
+              "name": "metric.deviation.critical.threshold",
+              "display_name": "Growth Rate",
+              "type": "PERCENT",
+              "units": "%",
+              "value": 200,
+              "description": "The percentage of RPC queue latency growth.",
+              "threshold": "CRITICAL"
+            },
+            {
+              "name": "minimumValue",
+              "display_name": "Minimum Latency",
+              "value": 30,
+              "type": "NUMERIC",
+              "units": "seconds",
+              "description": "The minimum latency to measure growth."
+            },
+            {
+              "name": "metric.units",
+              "display_name": "Metric Units",
+              "type": "STRING",
+              "value": "MB",
+              "description": "The units that the metric data points are reported in.",
+              "visibility": "HIDDEN"
+            }
+          ]
+        }
+      },
+      {
+        "name": "namenode_client_rpc_queue_latency_daily",
+        "label": "NameNode Client RPC Queue Latency (Daily)",
+        "description": "This service-level alert is triggered if the deviation of RPC latency on client port has grown beyond the specified threshold within a day period.",
+        "interval": 480,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "SCRIPT",
+          "path": "HDFS/2.1.0.2.0/package/alerts/alert_metrics_deviation.py",
+          "parameters": [
+            {
+              "name": "mergeHaMetrics",
+              "display_name": "Whether active and stanby NameNodes metrics should be merged",
+              "value": "false",
+              "type": "STRING",
+              "description": "Whether active and stanby NameNodes metrics should be merged.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "interval",
+              "display_name": "Time interval in minutes",
+              "value": 1440,
+              "type": "NUMERIC",
+              "description": "Time interval in minutes.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "appId",
+              "display_name": "AMS application id",
+              "value": "NAMENODE",
+              "type": "STRING",
+              "description": "The application id used to retrieve the metric.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "metricName",
+              "display_name": "Metric Name",
+              "value": "rpc.rpc.client.RpcQueueTimeAvgTime",
+              "type": "STRING",
+              "description": "The metric to monitor.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "metric.deviation.warning.threshold",
+              "display_name": "Growth Rate",
+              "type": "PERCENT",
+              "units": "%",
+              "value": 100,
+              "description": "The percentage of RPC queue latency growth.",
+              "threshold": "WARNING"
+            },
+            {
+              "name": "metric.deviation.critical.threshold",
+              "display_name": "Growth Rate",
+              "type": "PERCENT",
+              "units": "%",
+              "value": 200,
+              "description": "The percentage of RPC queue latency growth.",
+              "threshold": "CRITICAL"
+            },
+            {
+              "name": "minimumValue",
+              "display_name": "Minimum Latency",
+              "value": 30,
+              "type": "NUMERIC",
+              "units": "seconds",
+              "description": "The minimum latency to measure growth."
+            },
+            {
+              "name": "metric.units",
+              "display_name": "Metric Units",
+              "type": "STRING",
+              "value": "ms",
+              "description": "The units that the metric data points are reported in.",
+              "visibility": "HIDDEN"
+            }
+          ]
+        }
+      },
+      {
+        "name": "namenode_increase_in_storage_capacity_usage_daily",
+        "label": "HDFS Storage Capacity Usage (Daily)",
+        "description": "This service-level alert is triggered if the increase in storage capacity usage deviation has grown beyond the specified threshold within a day period.",
+        "interval": 480,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "SCRIPT",
+          "path": "HDFS/2.1.0.2.0/package/alerts/alert_metrics_deviation.py",
+          "parameters": [
+            {
+              "name": "mergeHaMetrics",
+              "display_name": "Whether active and stanby NameNodes metrics should be merged",
+              "value": "false",
+              "type": "STRING",
+              "description": "Whether active and stanby NameNodes metrics should be merged.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "interval",
+              "display_name": "Time interval in minutes",
+              "value": 1440,
+              "type": "NUMERIC",
+              "description": "Time interval in minutes.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "appId",
+              "display_name": "AMS application id",
+              "value": "NAMENODE",
+              "type": "STRING",
+              "description": "The application id used to retrieve the metric.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "metricName",
+              "display_name": "Metric Name",
+              "value": "dfs.FSNamesystem.CapacityUsed",
+              "type": "STRING",
+              "description": "The metric to monitor.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "metric.deviation.warning.threshold",
+              "display_name": "Growth Rate",
+              "type": "PERCENT",
+              "units": "%",
+              "value": 30,
+              "description": "The percentage of storage capacity usage growth.",
+              "threshold": "WARNING"
+            },
+            {
+              "name": "metric.deviation.critical.threshold",
+              "display_name": "Growth Rate",
+              "type": "PERCENT",
+              "units": "%",
+              "value": 50,
+              "description": "The percentage of storage capacity usage growth.",
+              "threshold": "CRITICAL"
+            },
+            {
+              "name": "metric.units",
+              "display_name": "Metric Units",
+              "type": "STRING",
+              "value": "B",
+              "description": "The units that the metric data points are reported in.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "minimumValue",
+              "display_name": "Minimum Capacity",
+              "value": 100,
+              "type": "NUMERIC",
+              "units": "MB",
+              "description": "The minimum capacity increase in a day."
+            }
+          ]
+        }
+      },
+      {
+        "name": "increase_nn_heap_usage_weekly",
+        "label": "NameNode Heap Usage (Weekly)",
+        "description": "This service-level alert is triggered if the NameNode heap usage deviation has grown beyond the specified threshold within a week period.",
+        "interval": 1440,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "SCRIPT",
+          "path": "HDFS/2.1.0.2.0/package/alerts/alert_metrics_deviation.py",
+          "parameters": [
+            {
+              "name": "mergeHaMetrics",
+              "display_name": "Whether active and stanby NameNodes metrics should be merged",
+              "value": "false",
+              "type": "STRING",
+              "description": "Whether active and stanby NameNodes metrics should be merged.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "interval",
+              "display_name": "Time interval in minutes",
+              "value": 10080,
+              "type": "NUMERIC",
+              "description": "Time interval in minutes.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "appId",
+              "display_name": "AMS application id",
+              "value": "NAMENODE",
+              "type": "STRING",
+              "description": "The application id used to retrieve the metric.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "metricName",
+              "display_name": "Metric Name",
+              "value": "jvm.JvmMetrics.MemHeapUsedM",
+              "type": "STRING",
+              "description": "The metric to monitor.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "metric.deviation.warning.threshold",
+              "display_name": "Growth Rate",
+              "type": "PERCENT",
+              "units": "%",
+              "value": 20,
+              "description": "The percentage of NameNode heap usage growth.",
+              "threshold": "WARNING"
+            },
+            {
+              "name": "metric.deviation.critical.threshold",
+              "display_name": "Growth Rate",
+              "type": "PERCENT",
+              "units": "%",
+              "value": 50,
+              "description": "The percentage of NameNode heap usage growth.",
+              "threshold": "CRITICAL"
+            },
+            {
+              "name": "metric.units",
+              "display_name": "Metric Units",
+              "type": "STRING",
+              "value": "MB",
+              "description": "The units that the metric data points are reported in.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "minimumValue",
+              "display_name": "Minimum Heap",
+              "value": 1000,
+              "type": "NUMERIC",
+              "units": "MB",
+              "description": "The minimum heap increase in a week."
+            }
+          ]
+        }
+      },
+      {
+        "name": "namenode_increase_in_storage_capacity_usage_weekly",
+        "label": "HDFS Storage Capacity Usage (Weekly)",
+        "description": "This service-level alert is triggered if the increase in storage capacity usage deviation has grown beyond the specified threshold within a week period.",
+        "interval": 1440,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "SCRIPT",
+          "path": "HDFS/2.1.0.2.0/package/alerts/alert_metrics_deviation.py",
+          "parameters": [
+            {
+              "name": "mergeHaMetrics",
+              "display_name": "Whether active and stanby NameNodes metrics should be merged",
+              "value": "false",
+              "type": "STRING",
+              "description": "Whether active and stanby NameNodes metrics should be merged.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "interval",
+              "display_name": "Time interval in minutes",
+              "value": 10080,
+              "type": "NUMERIC",
+              "description": "Time interval in minutes.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "appId",
+              "display_name": "AMS application id",
+              "value": "NAMENODE",
+              "type": "STRING",
+              "description": "The application id used to retrieve the metric.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "metricName",
+              "display_name": "Metric Name",
+              "value": "dfs.FSNamesystem.CapacityUsed",
+              "type": "STRING",
+              "description": "The metric to monitor.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "metric.deviation.warning.threshold",
+              "display_name": "Growth Rate",
+              "type": "PERCENT",
+              "units": "%",
+              "value": 10,
+              "description": "The percentage of storage capacity usage growth.",
+              "threshold": "WARNING"
+            },
+            {
+              "name": "metric.deviation.critical.threshold",
+              "display_name": "Growth Rate",
+              "type": "PERCENT",
+              "units": "%",
+              "value": 20,
+              "description": "The percentage of storage capacity usage growth.",
+              "threshold": "CRITICAL"
+            },
+            {
+              "name": "metric.units",
+              "display_name": "Metric Units",
+              "type": "STRING",
+              "value": "B",
+              "description": "The units that the metric data points are reported in.",
+              "visibility": "HIDDEN"
+            },
+            {
+              "name": "minimumValue",
+              "display_name": "Minimum Capacity",
+              "value": 1000,
+              "type": "NUMERIC",
+              "units": "MB",
+              "description": "The minimum capacity increase in a week."
+            }
+          ]
+        }
+      }
+    ],
+    "SECONDARY_NAMENODE": [
+      {
+        "name": "secondary_namenode_process",
+        "label": "Secondary NameNode Process",
+        "description": "This host-level alert is triggered if the Secondary NameNode process cannot be confirmed to be up and listening on the network.",
+        "interval": 1,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "WEB",
+          "uri": {
+            "http": "{{hdfs-site/dfs.namenode.secondary.http-address}}",
+            "https": "{{hdfs-site/dfs.namenode.secondary.https-address}}",
+            "kerberos_keytab": "{{hdfs-site/dfs.web.authentication.kerberos.keytab}}",
+            "kerberos_principal": "{{hdfs-site/dfs.web.authentication.kerberos.principal}}",
+            "https_property": "{{hdfs-site/dfs.http.policy}}",
+            "https_property_value": "HTTPS_ONLY"
+          },
+          "reporting": {
+            "ok": {
+              "text": "HTTP {0} response in {2:.3f}s"
+            },
+            "warning":{
+              "text": "HTTP {0} response from {1} in {2:.3f}s ({3})"
+            },
+            "critical": {
+              "text": "Connection failed to {1} ({3})"
+            }
+          }
+        }
+      }
+    ],
+    "NFS_GATEWAY": [
+      {
+        "name": "nfsgateway_process",
+        "label": "NFS Gateway Process",
+        "description": "This host-level alert is triggered if the NFS Gateway process cannot be confirmed to be up and listening on the network.",
+        "interval": 1,
+        "scope": "HOST",
+        "enabled": true,
+        "source": {
+          "type": "PORT",
+          "uri": "{{hdfs-site/nfs.server.port}}",
+          "default_port": 2049,
+          "reporting": {
+            "ok": {
+              "text": "TCP OK - {0:.3f}s response on port {1}"
+            },
+            "warning": {
+              "text": "TCP OK - {0:.3f}s response on port {1}",
+              "value": 1.5
+            },
+            "critical": {
+              "text": "Connection failed: {0} to {1}:{2}",
+              "value": 5.0
+            }
+          }
+        }
+      }
+    ],
+    "JOURNALNODE": [
+      {
+        "name": "journalnode_process",
+        "label": "JournalNode Web UI",
+        "description": "This host-level alert is triggered if the JournalNode Web UI is unreachable.",
+        "interval": 1,
+        "scope": "HOST",
+        "enabled": true,
+        "source": {
+          "type": "WEB",
+          "uri": {
+            "http": "{{hdfs-site/dfs.journalnode.http-address}}",
+            "https": "{{hdfs-site/dfs.journalnode.https-address}}",
+            "kerberos_keytab": "{{hdfs-site/dfs.web.authentication.kerberos.keytab}}",
+            "kerberos_principal": "{{hdfs-site/dfs.web.authentication.kerberos.principal}}",
+            "https_property": "{{hdfs-site/dfs.http.policy}}",
+            "https_property_value": "HTTPS_ONLY",
+            "connection_timeout": 5.0
+          },
+          "reporting": {
+            "ok": {
+              "text": "HTTP {0} response in {2:.3f}s"
+            },
+            "warning": {
+              "text": "HTTP {0} response from {1} in {2:.3f}s ({3})"
+            },
+            "critical": {
+              "text": "Connection failed to {1} ({3})"
+            }
+          }
+        }
+      }
+    ],      
+    "DATANODE": [
+      {
+        "name": "datanode_process",
+        "label": "DataNode Process",
+        "description": "This host-level alert is triggered if the individual DataNode processes cannot be established to be up and listening on the network.",
+        "interval": 1,
+        "scope": "HOST",
+        "enabled": true,
+        "source": {
+          "type": "PORT",        
+          "uri": "{{hdfs-site/dfs.datanode.address}}",
+          "default_port": 50010,
+          "reporting": {
+            "ok": {
+              "text": "TCP OK - {0:.3f}s response on port {1}"
+            },
+            "warning": {
+              "text": "TCP OK - {0:.3f}s response on port {1}",
+              "value": 1.5
+            },
+            "critical": {
+              "text": "Connection failed: {0} to {1}:{2}",
+              "value": 5.0
+            }
+          }
+        }
+      },
+      {
+        "name": "datanode_webui",
+        "label": "DataNode Web UI",
+        "description": "This host-level alert is triggered if the DataNode Web UI is unreachable.",
+        "interval": 1,
+        "scope": "HOST",
+        "enabled": true,
+        "source": {
+          "type": "WEB",
+          "uri": {
+            "http": "{{hdfs-site/dfs.datanode.http.address}}",
+            "https": "{{hdfs-site/dfs.datanode.https.address}}",
+            "https_property": "{{hdfs-site/dfs.http.policy}}",
+            "https_property_value": "HTTPS_ONLY",
+            "kerberos_keytab": "{{hdfs-site/dfs.web.authentication.kerberos.keytab}}",
+            "kerberos_principal": "{{hdfs-site/dfs.web.authentication.kerberos.principal}}",
+            "connection_timeout": 5.0
+          },
+          "reporting": {
+            "ok": {
+              "text": "HTTP {0} response in {2:.3f}s"
+            },
+            "warning":{
+              "text": "HTTP {0} response from {1} in {2:.3f}s ({3})"
+            },
+            "critical": {
+              "text": "Connection failed to {1} ({3})"
+            }
+          }
+        }
+      },    
+      {
+        "name": "datanode_storage",
+        "label": "DataNode Storage",
+        "description": "This host-level alert is triggered if storage capacity if full on the DataNode. It checks the DataNode JMX Servlet for the Capacity and Remaining properties. The threshold values are in percent.",
+        "interval": 2,
+        "scope": "HOST",
+        "enabled": true,
+        "source": {
+          "type": "METRIC",
+          "uri": {
+            "http": "{{hdfs-site/dfs.datanode.http.address}}",
+            "https": "{{hdfs-site/dfs.datanode.https.address}}",
+            "kerberos_keytab": "{{hdfs-site/dfs.web.authentication.kerberos.keytab}}",
+            "kerberos_principal": "{{hdfs-site/dfs.web.authentication.kerberos.principal}}",
+            "https_property": "{{hdfs-site/dfs.http.policy}}",
+            "https_property_value": "HTTPS_ONLY",
+            "connection_timeout": 5.0
+          },
+          "reporting": {
+            "ok": {
+              "text": "Remaining Capacity:[{0}], Total Capacity:[{2:.0f}% Used, {1}]"
+            },
+            "warning": {
+              "text": "Remaining Capacity:[{0}], Total Capacity:[{2:.0f}% Used, {1}]",
+              "value": 75
+            },
+            "critical": {
+              "text": "Remaining Capacity:[{0}], Total Capacity:[{2:.0f}% Used, {1}]",
+              "value": 80
+            },
+            "units" : "%",
+            "type": "PERCENT"
+          },
+          "jmx": {
+            "property_list": [
+              "Hadoop:service=DataNode,name=FSDatasetState-*/Remaining",
+              "Hadoop:service=DataNode,name=FSDatasetState-*/Capacity"
+            ],
+            "value": "({1} - {0})/{1} * 100.0"
+          }
+        }
+      },
+      {
+        "name": "datanode_unmounted_data_dir",
+        "label": "DataNode Unmounted Data Dir",
+        "description": "This host-level alert is triggered if one of the data directories on a host was previously on a mount point and became unmounted. If the mount history file does not exist, then report an error if a host has one or more mounted data directories as well as one or more unmounted data directories on the root partition. This may indicate that a data directory is writing to the root partition, which is undesirable.",
+        "interval": 2,
+        "scope": "HOST",
+        "enabled": true,
+        "source": {
+          "type": "SCRIPT",
+          "path": "HDFS/2.1.0.2.0/package/alerts/alert_datanode_unmounted_data_dir.py"
+        }
+      },
+      {
+        "name": "datanode_heap_usage",
+        "label": "DataNode Heap Usage",
+        "description": "This host-level alert is triggered if heap usage goes past thresholds on the DataNode. It checks the DataNode JMXServlet for the MemHeapUsedM and MemHeapMaxM properties. The threshold values are in percent.",
+        "interval": 2,
+        "scope": "HOST",
+        "enabled": true,
+        "source": {
+          "type": "METRIC",
+          "uri": {
+            "http": "{{hdfs-site/dfs.datanode.http.address}}",
+            "https": "{{hdfs-site/dfs.datanode.https.address}}",
+            "kerberos_keytab": "{{hdfs-site/dfs.web.authentication.kerberos.keytab}}",
+            "kerberos_principal": "{{hdfs-site/dfs.web.authentication.kerberos.principal}}",
+            "https_property": "{{hdfs-site/dfs.http.policy}}",
+            "https_property_value": "HTTPS_ONLY",
+            "connection_timeout": 5.0
+          },
+          "reporting": {
+            "ok": {
+              "text": "Used Heap:[{2:.0f}%, {0} MB], Max Heap: {1} MB"
+            },
+            "warning": {
+              "text": "Used Heap:[{2:.0f}%, {0} MB], Max Heap: {1} MB",
+              "value": 80
+            },
+            "critical": {
+              "text": "Used Heap:[{2:.0f}%, {0} MB], Max Heap: {1} MB",
+              "value": 90
+            },
+            "units" : "%",
+            "type": "PERCENT"
+          },
+          "jmx": {
+            "property_list": [
+              "Hadoop:service=DataNode,name=JvmMetrics/MemHeapUsedM",
+              "Hadoop:service=DataNode,name=JvmMetrics/MemHeapMaxM"
+            ],
+            "value": "100.0 - (({1} - {0})/{1} * 100.0)"
+          }
+        }
+      }
+    ],
+    "ZKFC": [
+      {
+        "name": "hdfs_zookeeper_failover_controller_process",
+        "label": "ZooKeeper Failover Controller Process",
+        "description": "This host-level alert is triggered if the ZooKeeper Failover Controller process cannot be confirmed to be up and listening on the network.",
+        "interval": 1,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "PORT",
+          "uri": "{{hdfs-site/dfs.ha.zkfc.port}}",
+          "default_port": 8019,
+          "reporting": {
+            "ok": {
+              "text": "TCP OK - {0:.3f}s response on port {1}"
+            },
+            "warning": {
+              "text": "TCP OK - {0:.3f}s response on port {1}",
+              "value": 1.5
+            },
+            "critical": {
+              "text": "Connection failed: {0} to {1}:{2}",
+              "value": 5.0
+            }
+          }
+        }
+      }
+    ]
+  }
+}

+ 225 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/core-site.xml

@@ -0,0 +1,225 @@
+<?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" supports_final="true">
+  <!-- These properties exist in common-services. -->
+  <property>
+    <name>ha.failover-controller.active-standby-elector.zk.op.retries</name>
+    <value>120</value>
+    <description>ZooKeeper Failover Controller retries setting for your environment</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <!-- 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>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>io.serializations</name>
+    <value>org.apache.hadoop.io.serializer.WritableSerialization</value>
+    <description> A list of comma-delimited serialization classes that can be used for obtaining serializers and deserializers.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>io.compression.codecs</name>
+    <value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.SnappyCodec</value>
+    <description>A list of the compression codec classes that can be used
+      for compression/decompression.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <!-- file system properties -->
+  <property>
+    <name>fs.defaultFS</name>
+    <!-- cluster variant -->
+    <value>hdfs://localhost:8020</value>
+    <description>The name of the default file system.  Either the
+      literal string "local" or a host:port for HDFS.</description>
+    <final>true</final>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>fs.trash.interval</name>
+    <value>360</value>
+    <description>Number of minutes after which the checkpoint gets deleted.
+      If zero, the trash feature is disabled.
+      This option may be configured both on the server and the client.
+      If trash is disabled server side then the client side configuration is checked.
+      If trash is enabled on the server side then the value configured on the server is used and the client configuration value is ignored.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </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>
+    <on-ambari-upgrade add="true"/>
+  </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>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>ipc.client.connect.max.retries</name>
+    <value>50</value>
+    <description>Defines the maximum number of retries for IPC connections.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>ipc.server.tcpnodelay</name>
+    <value>true</value>
+    <description>Turn on/off Nagle's algorithm for the TCP socket
+      connection on
+      the server. Setting to true disables the algorithm and may
+      decrease latency
+      with a cost of more/smaller packets.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <!-- Web Interface Configuration -->
+  <property>
+    <name>mapreduce.jobtracker.webinterface.trusted</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>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hadoop.security.authentication</name>
+    <value>simple</value>
+    <description>
+      Set the authentication for the cluster. Valid values are: simple or
+      kerberos.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hadoop.security.authorization</name>
+    <value>false</value>
+    <description>
+      Enable authorization for different protocols.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hadoop.security.auth_to_local</name>
+    <value>DEFAULT</value>
+    <description>The mapping from kerberos principal names to local OS mapreduce.job.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>
+    <value-attributes>
+      <type>multiLine</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>net.topology.script.file.name</name>
+    <value>/etc/hadoop/conf/topology_script.py</value>
+    <description>
+      Location of topology script used by Hadoop to determine the rack location of nodes.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+
+  <!-- Properties from HDP 2.2 and higher -->
+  <property>
+    <name>hadoop.http.authentication.simple.anonymous.allowed</name>
+    <value>true</value>
+    <description>
+      Indicates if anonymous requests are allowed when using &apos;simple&apos; authentication.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hadoop.security.key.provider.path</name>
+    <value/>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <depends-on>
+      <property>
+        <type>hadoop-env</type>
+        <name>keyserver_host</name>
+      </property>
+      <property>
+        <type>hadoop-env</type>
+        <name>keyserver_port</name>
+      </property>
+      <property>
+        <type>kms-env</type>
+        <name>kms_port</name>
+      </property>
+      <property>
+        <type>ranger-kms-site</type>
+        <name>ranger.service.https.attrib.ssl.enabled</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="true"/>
+  </property>
+</configuration>

+ 419 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/hadoop-env.xml

@@ -0,0 +1,419 @@
+<?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 supports_adding_forbidden="true">
+  <!-- These properties exist in common services. -->
+  <property>
+    <name>hdfs_log_dir_prefix</name>
+    <value>/var/log/hadoop</value>
+    <description>Hadoop Log Dir Prefix</description>
+    <display-name>Hadoop Log Dir Prefix</display-name>
+    <value-attributes>
+      <type>directory</type>
+      <overridable>false</overridable>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hadoop_pid_dir_prefix</name>
+    <value>/var/run/hadoop</value>
+    <display-name>Hadoop PID Dir Prefix</display-name>
+    <description>Hadoop PID Dir Prefix</description>
+    <value-attributes>
+      <type>directory</type>
+      <overridable>false</overridable>
+      <editable-only-at-install>true</editable-only-at-install>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hadoop_root_logger</name>
+    <value>INFO,RFA</value>
+    <display-name>Hadoop Root Logger</display-name>
+    <description>Hadoop Root Logger</description>
+    <value-attributes>
+      <overridable>false</overridable>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hadoop_heapsize</name>
+    <value>1024</value>
+    <description>Hadoop maximum Java heap size</description>
+    <display-name>Hadoop maximum Java heap size</display-name>
+    <value-attributes>
+      <type>int</type>
+      <unit>MB</unit>
+      <overridable>false</overridable>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>namenode_heapsize</name>
+    <value>1024</value>
+    <description>NameNode Java heap size</description>
+    <display-name>NameNode Java heap size</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>0</minimum>
+      <maximum>268435456</maximum>
+      <unit>MB</unit>
+      <increment-step>256</increment-step>
+      <overridable>false</overridable>
+    </value-attributes>
+    <depends-on>
+      <property>
+        <type>hdfs-site</type>
+        <name>dfs.datanode.data.dir</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>namenode_opt_newsize</name>
+    <value>200</value>
+    <description>Default size of Java new generation for NameNode (Java option -XX:NewSize) Note: The value of NameNode new generation size (default size of Java new generation for NameNode (Java option -XX:NewSize)) should be 1/8 of maximum heap size (-Xmx). Ensure that the value of the namenode_opt_newsize property is 1/8 the value of maximum heap size (-Xmx).</description>
+    <display-name>NameNode new generation size</display-name>
+    <depends-on>
+      <property>
+        <type>hadoop-env</type>
+        <name>namenode_heapsize</name>
+      </property>
+    </depends-on>
+    <value-attributes>
+      <type>int</type>
+      <minimum>0</minimum>
+      <maximum>16384</maximum>
+      <unit>MB</unit>
+      <increment-step>256</increment-step>
+      <overridable>false</overridable>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>namenode_opt_maxnewsize</name>
+    <value>200</value>
+    <description>NameNode maximum new generation size</description>
+    <display-name>NameNode maximum new generation size</display-name>
+    <depends-on>
+      <property>
+        <type>hadoop-env</type>
+        <name>namenode_heapsize</name>
+      </property>
+    </depends-on>
+    <value-attributes>
+      <type>int</type>
+      <minimum>0</minimum>
+      <maximum>16384</maximum>
+      <unit>MB</unit>
+      <increment-step>256</increment-step>
+      <overridable>false</overridable>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>namenode_opt_permsize</name>
+    <value>128</value>
+    <description>NameNode permanent generation size</description>
+    <display-name>NameNode permanent generation size</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>0</minimum>
+      <maximum>2096</maximum>
+      <unit>MB</unit>
+      <increment-step>128</increment-step>
+      <overridable>false</overridable>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>namenode_opt_maxpermsize</name>
+    <value>256</value>
+    <description>NameNode maximum permanent generation size</description>
+    <display-name>NameNode maximum permanent generation size</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>0</minimum>
+      <maximum>2096</maximum>
+      <unit>MB</unit>
+      <increment-step>128</increment-step>
+      <overridable>false</overridable>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dtnode_heapsize</name>
+    <value>1024</value>
+    <description>DataNode maximum Java heap size</description>
+    <display-name>DataNode maximum Java heap size</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>0</minimum>
+      <maximum>268435456</maximum>
+      <unit>MB</unit>
+      <increment-step>128</increment-step>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>proxyuser_group</name>
+    <display-name>Proxy User Group</display-name>
+    <value>users</value>
+    <property-type>GROUP</property-type>
+    <description>Proxy user group.</description>
+    <value-attributes>
+      <type>user</type>
+      <overridable>false</overridable>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hdfs_user</name>
+    <display-name>HDFS User</display-name>
+    <value>hdfs</value>
+    <property-type>USER</property-type>
+    <description>User to run HDFS as</description>
+    <value-attributes>
+      <type>user</type>
+      <overridable>false</overridable>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hdfs_tmp_dir</name>
+    <value>/tmp</value>
+    <description>HDFS tmp Dir</description>
+    <display-name>HDFS tmp Dir</display-name>
+    <property-type>NOT_MANAGED_HDFS_PATH</property-type>
+    <value-attributes>
+      <read-only>true</read-only>
+      <overridable>false</overridable>
+      <visible>false</visible>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hdfs_user_nofile_limit</name>
+    <value>128000</value>
+    <description>Max open files limit setting for HDFS user.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hdfs_user_nproc_limit</name>
+    <value>65536</value>
+    <description>Max number of processes limit setting for HDFS user.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>namenode_backup_dir</name>
+    <description>Local directory for storing backup copy of NameNode images during upgrade</description>
+    <value>/tmp/upgrades</value>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hdfs_user_keytab</name>
+    <description>HDFS keytab path</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hdfs_principal_name</name>
+    <description>HDFS principal name</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+
+  <!-- These properties exist in HDP 2.2 and higher. -->
+  <property>
+    <name>keyserver_host</name>
+    <value> </value>
+    <display-name>Key Server Host</display-name>
+    <description>Hostnames where Key Management Server is installed</description>
+    <value-attributes>
+      <type>string</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>keyserver_port</name>
+    <value/>
+    <display-name>Key Server Port</display-name>
+    <description>Port number where Key Management Server is available</description>
+    <value-attributes>
+      <type>int</type>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+
+  <!-- These properties exist in HDP 2.3 and higher. -->
+  <!-- hadoop-env.sh -->
+  <property>
+    <name>content</name>
+    <display-name>hadoop-env template</display-name>
+    <description>This is the jinja template for hadoop-env.sh file</description>
+    <value>
+# Set Hadoop-specific environment variables here.
+
+# The only required environment variable is JAVA_HOME.  All others are
+# optional.  When running a distributed configuration it is best to
+# set JAVA_HOME in this file, so that it is correctly defined on
+# remote nodes.
+
+# The java implementation to use.  Required.
+export JAVA_HOME={{java_home}}
+export HADOOP_HOME_WARN_SUPPRESS=1
+
+# Hadoop home directory
+export HADOOP_HOME=${HADOOP_HOME:-{{hadoop_home}}}
+
+# Hadoop Configuration Directory
+
+{# this is different for HDP1 #}
+# Path to jsvc required by secure HDP 2.0 datanode
+export JSVC_HOME={{jsvc_path}}
+
+
+# The maximum amount of heap to use, in MB. Default is 1000.
+export HADOOP_HEAPSIZE="{{hadoop_heapsize}}"
+
+export HADOOP_NAMENODE_INIT_HEAPSIZE="-Xms{{namenode_heapsize}}"
+
+# Extra Java runtime options.  Empty by default.
+export HADOOP_OPTS="-Djava.net.preferIPv4Stack=true ${HADOOP_OPTS}"
+
+# Command specific options appended to HADOOP_OPTS when specified
+HADOOP_JOBTRACKER_OPTS="-server -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -XX:ErrorFile={{hdfs_log_dir_prefix}}/$USER/hs_err_pid%p.log -XX:NewSize={{jtnode_opt_newsize}} -XX:MaxNewSize={{jtnode_opt_maxnewsize}} -Xloggc:{{hdfs_log_dir_prefix}}/$USER/gc.log-`date +'%Y%m%d%H%M'` -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xmx{{jtnode_heapsize}} -Dhadoop.security.logger=INFO,DRFAS -Dmapred.audit.logger=INFO,MRAUDIT -Dhadoop.mapreduce.jobsummary.logger=INFO,JSA ${HADOOP_JOBTRACKER_OPTS}"
+
+HADOOP_TASKTRACKER_OPTS="-server -Xmx{{ttnode_heapsize}} -Dhadoop.security.logger=ERROR,console -Dmapred.audit.logger=ERROR,console ${HADOOP_TASKTRACKER_OPTS}"
+
+{% if java_version &lt; 8 %}
+SHARED_HADOOP_NAMENODE_OPTS="-server -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -XX:ErrorFile={{hdfs_log_dir_prefix}}/$USER/hs_err_pid%p.log -XX:NewSize={{namenode_opt_newsize}} -XX:MaxNewSize={{namenode_opt_maxnewsize}} -XX:PermSize={{namenode_opt_permsize}} -XX:MaxPermSize={{namenode_opt_maxpermsize}} -Xloggc:{{hdfs_log_dir_prefix}}/$USER/gc.log-`date +'%Y%m%d%H%M'` -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -Xms{{namenode_heapsize}} -Xmx{{namenode_heapsize}} -Dhadoop.security.logger=INFO,DRFAS -Dhdfs.audit.logger=INFO,DRFAAUDIT"
+export HADOOP_NAMENODE_OPTS="${SHARED_HADOOP_NAMENODE_OPTS} -XX:OnOutOfMemoryError=\"/usr/hdp/current/hadoop-hdfs-namenode/bin/kill-name-node\" -Dorg.mortbay.jetty.Request.maxFormContentSize=-1 ${HADOOP_NAMENODE_OPTS}"
+export HADOOP_DATANODE_OPTS="-server -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC -XX:ErrorFile=/var/log/hadoop/$USER/hs_err_pid%p.log -XX:NewSize=200m -XX:MaxNewSize=200m -XX:PermSize=128m -XX:MaxPermSize=256m -Xloggc:/var/log/hadoop/$USER/gc.log-`date +'%Y%m%d%H%M'` -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xms{{dtnode_heapsize}} -Xmx{{dtnode_heapsize}} -Dhadoop.security.logger=INFO,DRFAS -Dhdfs.audit.logger=INFO,DRFAAUDIT ${HADOOP_DATANODE_OPTS} -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly"
+
+export HADOOP_SECONDARYNAMENODE_OPTS="${SHARED_HADOOP_NAMENODE_OPTS} -XX:OnOutOfMemoryError=\"/usr/hdp/current/hadoop-hdfs-secondarynamenode/bin/kill-secondary-name-node\" ${HADOOP_SECONDARYNAMENODE_OPTS}"
+
+# The following applies to multiple commands (fs, dfs, fsck, distcp etc)
+export HADOOP_CLIENT_OPTS="-Xmx${HADOOP_HEAPSIZE}m -XX:MaxPermSize=512m $HADOOP_CLIENT_OPTS"
+
+{% else %}
+SHARED_HADOOP_NAMENODE_OPTS="-server -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -XX:ErrorFile={{hdfs_log_dir_prefix}}/$USER/hs_err_pid%p.log -XX:NewSize={{namenode_opt_newsize}} -XX:MaxNewSize={{namenode_opt_maxnewsize}} -Xloggc:{{hdfs_log_dir_prefix}}/$USER/gc.log-`date +'%Y%m%d%H%M'` -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -Xms{{namenode_heapsize}} -Xmx{{namenode_heapsize}} -Dhadoop.security.logger=INFO,DRFAS -Dhdfs.audit.logger=INFO,DRFAAUDIT"
+export HADOOP_NAMENODE_OPTS="${SHARED_HADOOP_NAMENODE_OPTS} -XX:OnOutOfMemoryError=\"/usr/hdp/current/hadoop-hdfs-namenode/bin/kill-name-node\" -Dorg.mortbay.jetty.Request.maxFormContentSize=-1 ${HADOOP_NAMENODE_OPTS}"
+export HADOOP_DATANODE_OPTS="-server -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC -XX:ErrorFile=/var/log/hadoop/$USER/hs_err_pid%p.log -XX:NewSize=200m -XX:MaxNewSize=200m -Xloggc:/var/log/hadoop/$USER/gc.log-`date +'%Y%m%d%H%M'` -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xms{{dtnode_heapsize}} -Xmx{{dtnode_heapsize}} -Dhadoop.security.logger=INFO,DRFAS -Dhdfs.audit.logger=INFO,DRFAAUDIT ${HADOOP_DATANODE_OPTS} -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly"
+
+export HADOOP_SECONDARYNAMENODE_OPTS="${SHARED_HADOOP_NAMENODE_OPTS} -XX:OnOutOfMemoryError=\"/usr/hdp/current/hadoop-hdfs-secondarynamenode/bin/kill-secondary-name-node\" ${HADOOP_SECONDARYNAMENODE_OPTS}"
+
+# The following applies to multiple commands (fs, dfs, fsck, distcp etc)
+export HADOOP_CLIENT_OPTS="-Xmx${HADOOP_HEAPSIZE}m $HADOOP_CLIENT_OPTS"
+{% endif %}
+
+HADOOP_NFS3_OPTS="-Xmx{{nfsgateway_heapsize}}m -Dhadoop.security.logger=ERROR,DRFAS ${HADOOP_NFS3_OPTS}"
+HADOOP_BALANCER_OPTS="-server -Xmx{{hadoop_heapsize}}m ${HADOOP_BALANCER_OPTS}"
+
+
+# On secure datanodes, user to run the datanode as after dropping privileges
+export HADOOP_SECURE_DN_USER=${HADOOP_SECURE_DN_USER:-{{hadoop_secure_dn_user}}}
+
+# Extra ssh options.  Empty by default.
+export HADOOP_SSH_OPTS="-o ConnectTimeout=5 -o SendEnv=HADOOP_CONF_DIR"
+
+# Where log files are stored.  $HADOOP_HOME/logs by default.
+export HADOOP_LOG_DIR={{hdfs_log_dir_prefix}}/$USER
+
+# History server logs
+export HADOOP_MAPRED_LOG_DIR={{mapred_log_dir_prefix}}/$USER
+
+# Where log files are stored in the secure data environment.
+export HADOOP_SECURE_DN_LOG_DIR={{hdfs_log_dir_prefix}}/$HADOOP_SECURE_DN_USER
+
+# File naming remote slave hosts.  $HADOOP_HOME/conf/slaves by default.
+# export HADOOP_SLAVES=${HADOOP_HOME}/conf/slaves
+
+# host:path where hadoop code should be rsync'd from.  Unset by default.
+# export HADOOP_MASTER=master:/home/$USER/src/hadoop
+
+# Seconds to sleep between slave commands.  Unset by default.  This
+# can be useful in large clusters, where, e.g., slave rsyncs can
+# otherwise arrive faster than the master can service them.
+# export HADOOP_SLAVE_SLEEP=0.1
+
+# The directory where pid files are stored. /tmp by default.
+export HADOOP_PID_DIR={{hadoop_pid_dir_prefix}}/$USER
+export HADOOP_SECURE_DN_PID_DIR={{hadoop_pid_dir_prefix}}/$HADOOP_SECURE_DN_USER
+
+# History server pid
+export HADOOP_MAPRED_PID_DIR={{mapred_pid_dir_prefix}}/$USER
+
+YARN_RESOURCEMANAGER_OPTS="-Dyarn.server.resourcemanager.appsummary.logger=INFO,RMSUMMARY"
+
+# A string representing this instance of hadoop. $USER by default.
+export HADOOP_IDENT_STRING=$USER
+
+# The scheduling priority for daemon processes.  See 'man nice'.
+
+# export HADOOP_NICENESS=10
+
+# Add database libraries
+JAVA_JDBC_LIBS=""
+if [ -d "/usr/share/java" ]; then
+  for jarFile in `ls /usr/share/java | grep -E "(mysql|ojdbc|postgresql|sqljdbc)" 2&gt;/dev/null`
+  do
+    JAVA_JDBC_LIBS=${JAVA_JDBC_LIBS}:$jarFile
+  done
+fi
+
+# Add libraries to the hadoop classpath - some may not need a colon as they already include it
+export HADOOP_CLASSPATH=${HADOOP_CLASSPATH}${JAVA_JDBC_LIBS}
+
+# Setting path to hdfs command line
+export HADOOP_LIBEXEC_DIR={{hadoop_libexec_dir}}
+
+# Mostly required for hadoop 2.0
+export JAVA_LIBRARY_PATH=${JAVA_LIBRARY_PATH}
+
+export HADOOP_OPTS="-Dhdp.version=$HDP_VERSION $HADOOP_OPTS"
+
+
+# Fix temporary bug, when ulimit from conf files is not picked up, without full relogin. 
+# Makes sense to fix only when runing DN as root 
+if [ "$command" == "datanode" ] &amp;&amp; [ "$EUID" -eq 0 ] &amp;&amp; [ -n "$HADOOP_SECURE_DN_USER" ]; then
+  {% if is_datanode_max_locked_memory_set %}
+  ulimit -l {{datanode_max_locked_memory}}
+  {% endif %}
+  ulimit -n {{hdfs_user_nofile_limit}}
+fi
+    </value>
+    <value-attributes>
+      <type>content</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>nfsgateway_heapsize</name>
+    <display-name>NFSGateway maximum Java heap size</display-name>
+    <value>1024</value>
+    <description>Maximum Java heap size for NFSGateway (Java option -Xmx)</description>
+    <value-attributes>
+      <type>int</type>
+      <unit>MB</unit>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+</configuration>

+ 125 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/hadoop-metrics2.properties.xml

@@ -0,0 +1,125 @@
+<?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>
+  <!-- hadoop-metrics2.properties -->
+  <property>
+    <name>content</name>
+    <display-name>hadoop-metrics2.properties template</display-name>
+    <description>This is the jinja template for hadoop-metrics2.properties file</description>
+    <value>
+# 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.
+
+# syntax: [prefix].[source|sink|jmx].[instance].[options]
+# See package.html for org.apache.hadoop.metrics2 for details
+
+{% if has_ganglia_server %}
+*.period=60
+
+*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
+*.sink.ganglia.period=10
+
+# default for supportsparse is false
+*.sink.ganglia.supportsparse=true
+
+.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both
+.sink.ganglia.dmax=jvm.metrics.threadsBlocked=70,jvm.metrics.memHeapUsedM=40
+
+# Hook up to the server
+namenode.sink.ganglia.servers={{ganglia_server_host}}:8661
+datanode.sink.ganglia.servers={{ganglia_server_host}}:8659
+jobtracker.sink.ganglia.servers={{ganglia_server_host}}:8662
+tasktracker.sink.ganglia.servers={{ganglia_server_host}}:8658
+maptask.sink.ganglia.servers={{ganglia_server_host}}:8660
+reducetask.sink.ganglia.servers={{ganglia_server_host}}:8660
+resourcemanager.sink.ganglia.servers={{ganglia_server_host}}:8664
+nodemanager.sink.ganglia.servers={{ganglia_server_host}}:8657
+historyserver.sink.ganglia.servers={{ganglia_server_host}}:8666
+journalnode.sink.ganglia.servers={{ganglia_server_host}}:8654
+nimbus.sink.ganglia.servers={{ganglia_server_host}}:8649
+supervisor.sink.ganglia.servers={{ganglia_server_host}}:8650
+
+resourcemanager.sink.ganglia.tagsForPrefix.yarn=Queue
+
+{% endif %}
+
+{% if has_metric_collector %}
+
+*.period={{metrics_collection_period}}
+*.sink.timeline.plugin.urls=file:///usr/lib/ambari-metrics-hadoop-sink/ambari-metrics-hadoop-sink.jar
+*.sink.timeline.class=org.apache.hadoop.metrics2.sink.timeline.HadoopTimelineMetricsSink
+*.sink.timeline.period={{metrics_collection_period}}
+*.sink.timeline.sendInterval={{metrics_report_interval}}000
+*.sink.timeline.slave.host.name={{hostname}}
+*.sink.timeline.zookeeper.quorum={{zookeeper_quorum}}
+*.sink.timeline.protocol={{metric_collector_protocol}}
+*.sink.timeline.port={{metric_collector_port}}
+
+# HTTPS properties
+*.sink.timeline.truststore.path = {{metric_truststore_path}}
+*.sink.timeline.truststore.type = {{metric_truststore_type}}
+*.sink.timeline.truststore.password = {{metric_truststore_password}}
+
+datanode.sink.timeline.collector.hosts={{ams_collector_hosts}}
+namenode.sink.timeline.collector.hosts={{ams_collector_hosts}}
+resourcemanager.sink.timeline.collector.hosts={{ams_collector_hosts}}
+nodemanager.sink.timeline.collector.hosts={{ams_collector_hosts}}
+jobhistoryserver.sink.timeline.collector.hosts={{ams_collector_hosts}}
+journalnode.sink.timeline.collector.hosts={{ams_collector_hosts}}
+maptask.sink.timeline.collector.hosts={{ams_collector_hosts}}
+reducetask.sink.timeline.collector.hosts={{ams_collector_hosts}}
+applicationhistoryserver.sink.timeline.collector.hosts={{ams_collector_hosts}}
+
+resourcemanager.sink.timeline.tagsForPrefix.yarn=Queue
+
+{% if is_nn_client_port_configured %}
+# Namenode rpc ports customization
+namenode.sink.timeline.metric.rpc.client.port={{nn_rpc_client_port}}
+{% endif %}
+{% if is_nn_dn_port_configured %}
+namenode.sink.timeline.metric.rpc.datanode.port={{nn_rpc_dn_port}}
+{% endif %}
+{% if is_nn_healthcheck_port_configured %}
+namenode.sink.timeline.metric.rpc.healthcheck.port={{nn_rpc_healthcheck_port}}
+{% endif %}
+
+{% endif %}
+    </value>
+    <value-attributes>
+      <type>content</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+</configuration>

+ 130 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/hadoop-policy.xml

@@ -0,0 +1,130 @@
+<?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 supports_final="true">
+  <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>
+    <on-ambari-upgrade add="true"/>
+  </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>
+    <on-ambari-upgrade add="true"/>
+  </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>
+    <on-ambari-upgrade add="true"/>
+  </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>
+    <on-ambari-upgrade add="true"/>
+  </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>
+    <on-ambari-upgrade add="true"/>
+  </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>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>security.job.client.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>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>security.job.task.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>
+    <on-ambari-upgrade add="true"/>
+  </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>
+    <on-ambari-upgrade add="true"/>
+  </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>
+    <on-ambari-upgrade add="true"/>
+  </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>
+    <on-ambari-upgrade add="true"/>
+  </property>
+</configuration>

+ 225 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/hdfs-log4j.xml

@@ -0,0 +1,225 @@
+<?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 supports_final="false" supports_adding_forbidden="true">
+  <property>
+    <name>content</name>
+    <display-name>hdfs-log4j template</display-name>
+    <description>Custom log4j.properties</description>
+    <value>
+#
+# 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.
+#
+
+
+# Define some default values that can be overridden by system properties
+# To change daemon root logger use hadoop_root_logger in hadoop-env
+hadoop.root.logger=INFO,console
+hadoop.log.dir=.
+hadoop.log.file=hadoop.log
+
+
+# Define the root logger to the system property "hadoop.root.logger".
+log4j.rootLogger=${hadoop.root.logger}, EventCounter
+
+# Logging Threshold
+log4j.threshhold=ALL
+
+#
+# Daily Rolling File Appender
+#
+
+log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.DRFA.File=${hadoop.log.dir}/${hadoop.log.file}
+
+# Rollver at midnight
+log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
+
+# 30-day backup
+#log4j.appender.DRFA.MaxBackupIndex=30
+log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout
+
+# Pattern format: Date LogLevel LoggerName LogMessage
+log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
+# Debugging Pattern format
+#log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
+
+
+#
+# console
+# Add "console" to rootlogger above if you want to use this
+#
+
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.target=System.err
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
+
+#
+# TaskLog Appender
+#
+
+#Default values
+hadoop.tasklog.taskid=null
+hadoop.tasklog.iscleanup=false
+hadoop.tasklog.noKeepSplits=4
+hadoop.tasklog.totalLogFileSize=100
+hadoop.tasklog.purgeLogSplits=true
+hadoop.tasklog.logsRetainHours=12
+
+log4j.appender.TLA=org.apache.hadoop.mapred.TaskLogAppender
+log4j.appender.TLA.taskId=${hadoop.tasklog.taskid}
+log4j.appender.TLA.isCleanup=${hadoop.tasklog.iscleanup}
+log4j.appender.TLA.totalLogFileSize=${hadoop.tasklog.totalLogFileSize}
+
+log4j.appender.TLA.layout=org.apache.log4j.PatternLayout
+log4j.appender.TLA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
+
+#
+#Security audit appender
+#
+hadoop.security.logger=INFO,console
+hadoop.security.log.maxfilesize=256MB
+hadoop.security.log.maxbackupindex=20
+log4j.category.SecurityLogger=${hadoop.security.logger}
+hadoop.security.log.file=SecurityAuth.audit
+log4j.appender.DRFAS=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.DRFAS.File=${hadoop.log.dir}/${hadoop.security.log.file}
+log4j.appender.DRFAS.layout=org.apache.log4j.PatternLayout
+log4j.appender.DRFAS.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
+log4j.appender.DRFAS.DatePattern=.yyyy-MM-dd
+
+log4j.appender.RFAS=org.apache.log4j.RollingFileAppender
+log4j.appender.RFAS.File=${hadoop.log.dir}/${hadoop.security.log.file}
+log4j.appender.RFAS.layout=org.apache.log4j.PatternLayout
+log4j.appender.RFAS.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
+log4j.appender.RFAS.MaxFileSize=${hadoop.security.log.maxfilesize}
+log4j.appender.RFAS.MaxBackupIndex=${hadoop.security.log.maxbackupindex}
+
+#
+# hdfs audit logging
+#
+hdfs.audit.logger=INFO,console
+log4j.logger.org.apache.hadoop.hdfs.server.namenode.FSNamesystem.audit=${hdfs.audit.logger}
+log4j.additivity.org.apache.hadoop.hdfs.server.namenode.FSNamesystem.audit=false
+log4j.appender.DRFAAUDIT=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.DRFAAUDIT.File=${hadoop.log.dir}/hdfs-audit.log
+log4j.appender.DRFAAUDIT.layout=org.apache.log4j.PatternLayout
+log4j.appender.DRFAAUDIT.layout.ConversionPattern=%d{ISO8601} %p %c{2}: %m%n
+log4j.appender.DRFAAUDIT.DatePattern=.yyyy-MM-dd
+
+#
+# NameNode metrics logging.
+# The default is to retain two namenode-metrics.log files up to 64MB each.
+#
+namenode.metrics.logger=INFO,NullAppender
+log4j.logger.NameNodeMetricsLog=${namenode.metrics.logger}
+log4j.additivity.NameNodeMetricsLog=false
+log4j.appender.NNMETRICSRFA=org.apache.log4j.RollingFileAppender
+log4j.appender.NNMETRICSRFA.File=${hadoop.log.dir}/namenode-metrics.log
+log4j.appender.NNMETRICSRFA.layout=org.apache.log4j.PatternLayout
+log4j.appender.NNMETRICSRFA.layout.ConversionPattern=%d{ISO8601} %m%n
+log4j.appender.NNMETRICSRFA.MaxBackupIndex=1
+log4j.appender.NNMETRICSRFA.MaxFileSize=64MB
+
+#
+# mapred audit logging
+#
+mapred.audit.logger=INFO,console
+log4j.logger.org.apache.hadoop.mapred.AuditLogger=${mapred.audit.logger}
+log4j.additivity.org.apache.hadoop.mapred.AuditLogger=false
+log4j.appender.MRAUDIT=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.MRAUDIT.File=${hadoop.log.dir}/mapred-audit.log
+log4j.appender.MRAUDIT.layout=org.apache.log4j.PatternLayout
+log4j.appender.MRAUDIT.layout.ConversionPattern=%d{ISO8601} %p %c{2}: %m%n
+log4j.appender.MRAUDIT.DatePattern=.yyyy-MM-dd
+
+#
+# Rolling File Appender
+#
+
+log4j.appender.RFA=org.apache.log4j.RollingFileAppender
+log4j.appender.RFA.File=${hadoop.log.dir}/${hadoop.log.file}
+
+# Logfile size and and 30-day backups
+log4j.appender.RFA.MaxFileSize=256MB
+log4j.appender.RFA.MaxBackupIndex=10
+
+log4j.appender.RFA.layout=org.apache.log4j.PatternLayout
+log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} - %m%n
+log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
+
+
+# Custom Logging levels
+
+hadoop.metrics.log.level=INFO
+#log4j.logger.org.apache.hadoop.mapred.JobTracker=DEBUG
+#log4j.logger.org.apache.hadoop.mapred.TaskTracker=DEBUG
+#log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG
+log4j.logger.org.apache.hadoop.metrics2=${hadoop.metrics.log.level}
+
+# Jets3t library
+log4j.logger.org.jets3t.service.impl.rest.httpclient.RestS3Service=ERROR
+
+#
+# Null Appender
+# Trap security logger on the hadoop client side
+#
+log4j.appender.NullAppender=org.apache.log4j.varia.NullAppender
+
+#
+# Event Counter Appender
+# Sends counts of logging messages at different severity levels to Hadoop Metrics.
+#
+log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter
+
+# Removes "deprecated" messages
+log4j.logger.org.apache.hadoop.conf.Configuration.deprecation=WARN
+
+#
+# HDFS block state change log from block manager
+#
+# Uncomment the following to suppress normal block state change
+# messages from BlockManager in NameNode.
+#log4j.logger.BlockStateChange=WARN
+    </value>
+    <value-attributes>
+      <type>content</type>
+      <show-property-name>false</show-property-name>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+</configuration>

+ 248 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/hdfs-logsearch-conf.xml

@@ -0,0 +1,248 @@
+<?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 supports_final="false" supports_adding_forbidden="true">
+  <property>
+    <name>service_name</name>
+    <display-name>Service name</display-name>
+    <description>Service name for Logsearch Portal (label)</description>
+    <value>HDFS</value>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>component_mappings</name>
+    <display-name>Component mapping</display-name>
+    <description>Logsearch component logid mapping list (e.g.: COMPONENT1:logid1,logid2;COMPONENT2:logid3)</description>
+    <value>NAMENODE:hdfs_namenode;DATANODE:hdfs_datanode;SECONDARY_NAMENODE:hdfs_secondarynamenode;JOURNALNODE:hdfs_journalnode;ZKFC:hdfs_zkfc;NFS_GATEWAY:hdfs_nfs3</value>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>content</name>
+    <display-name>Logfeeder Config</display-name>
+    <description>Metadata jinja template for Logfeeder which contains grok patterns for reading service specific logs.</description>
+    <value>
+{
+  "input":[
+    {
+      "type":"hdfs_datanode",
+      "rowtype":"service",
+      "path":"{{default('/configurations/hadoop-env/hdfs_log_dir_prefix', '/var/log/hadoop')}}/{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}/hadoop-{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}-datanode-*.log"
+    },
+    {
+      "type":"hdfs_namenode",
+      "rowtype":"service",
+      "path":"{{default('/configurations/hadoop-env/hdfs_log_dir_prefix', '/var/log/hadoop')}}/{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}/hadoop-{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}-namenode-*.log"
+    },
+    {
+      "type":"hdfs_journalnode",
+      "rowtype":"service",
+      "path":"{{default('/configurations/hadoop-env/hdfs_log_dir_prefix', '/var/log/hadoop')}}/{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}/hadoop-{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}-journalnode-*.log"
+    },
+    {
+      "type":"hdfs_secondarynamenode",
+      "rowtype":"service",
+      "path":"{{default('/configurations/hadoop-env/hdfs_log_dir_prefix', '/var/log/hadoop')}}/{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}/hadoop-{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}-secondarynamenode-*.log"
+    },
+    {
+      "type":"hdfs_zkfc",
+      "rowtype":"service",
+      "path":"{{default('/configurations/hadoop-env/hdfs_log_dir_prefix', '/var/log/hadoop')}}/{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}/hadoop-{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}-zkfc-*.log"
+    },
+    {
+      "type":"hdfs_nfs3",
+      "rowtype":"service",
+      "path":"{{default('/configurations/hadoop-env/hdfs_log_dir_prefix', '/var/log/hadoop')}}/{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}/hadoop-{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}-nfs3-*.log"
+    },
+    {
+      "type":"hdfs_audit",
+      "rowtype":"audit",
+      "is_enabled":"true",
+      "add_fields":{
+        "logType":"HDFSAudit",
+        "enforcer":"hadoop-acl",
+        "repoType":"1",
+        "repo":"hdfs"
+      },
+      "path":"{{default('/configurations/hadoop-env/hdfs_log_dir_prefix', '/var/log/hadoop')}}/{{default('configurations/hadoop-env/hdfs_user', 'hdfs')}}/hdfs-audit.log"
+    }
+   ],
+  "filter":[
+    {
+      "filter":"grok",
+      "conditions":{
+        "fields":{
+          "type":[
+            "hdfs_datanode",
+            "hdfs_journalnode",
+            "hdfs_secondarynamenode",
+            "hdfs_namenode",
+            "hdfs_zkfc",
+            "hdfs_nfs3"
+          ]
+         }
+       },
+      "log4j_format":"%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n",
+      "multiline_pattern":"^(%{TIMESTAMP_ISO8601:logtime})",
+      "message_pattern":"(?m)^%{TIMESTAMP_ISO8601:logtime}%{SPACE}%{LOGLEVEL:level}%{SPACE}%{JAVACLASS:logger_name}%{SPACE}\\(%{JAVAFILE:file}:%{JAVAMETHOD:method}\\(%{INT:line_number}\\)\\)%{SPACE}-%{SPACE}%{GREEDYDATA:log_message}",
+      "post_map_values":{
+        "logtime":{
+          "map_date":{
+            "target_date_pattern":"yyyy-MM-dd HH:mm:ss,SSS"
+          }
+        }
+       }
+     },
+    {
+      "filter":"grok",
+      "conditions":{
+        "fields":{
+          "type":[
+            "hdfs_audit"
+          ]
+         }
+       },
+      "log4j_format":"%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n",
+      "multiline_pattern":"^(%{TIMESTAMP_ISO8601:evtTime})",
+      "message_pattern":"(?m)^%{TIMESTAMP_ISO8601:evtTime}%{SPACE}%{LOGLEVEL:level}%{SPACE}%{JAVACLASS:logger_name}:%{SPACE}%{GREEDYDATA:log_message}",
+      "post_map_values":{
+        "evtTime":{
+          "map_date":{
+            "target_date_pattern":"yyyy-MM-dd HH:mm:ss,SSS"
+          }
+         }
+       }
+     },
+    {
+      "filter":"keyvalue",
+      "sort_order":1,
+      "conditions":{
+        "fields":{
+          "type":[
+            "hdfs_audit"
+          ]
+         }
+       },
+      "source_field":"log_message",
+      "value_split":"=",
+      "field_split":"\t",
+      "post_map_values":{
+        "src":{
+          "map_fieldname":{
+            "new_fieldname":"resource"
+          }
+         },
+        "ip":{
+          "map_fieldname":{
+            "new_fieldname":"cliIP"
+          }
+         },
+        "allowed":[
+          {
+            "map_fieldvalue":{
+              "pre_value":"true",
+              "post_value":"1"
+            }
+           },
+          {
+            "map_fieldvalue":{
+              "pre_value":"false",
+              "post_value":"0"
+            }
+           },
+          {
+            "map_fieldname":{
+              "new_fieldname":"result"
+            }
+           }
+         ],
+        "cmd":{
+          "map_fieldname":{
+            "new_fieldname":"action"
+          }
+         },
+        "proto":{
+          "map_fieldname":{
+            "new_fieldname":"cliType"
+          }
+         },
+        "callerContext":{
+          "map_fieldname":{
+            "new_fieldname":"req_caller_id"
+          }
+         }
+       }
+     },
+    {
+      "filter":"grok",
+      "sort_order":2,
+      "source_field":"ugi",
+      "remove_source_field":"false",
+      "conditions":{
+        "fields":{
+          "type":[
+            "hdfs_audit"
+          ]
+         }
+       },
+      "message_pattern":"%{USERNAME:p_user}.+auth:%{USERNAME:p_authType}.+via %{USERNAME:k_user}.+auth:%{USERNAME:k_authType}|%{USERNAME:user}.+auth:%{USERNAME:authType}|%{USERNAME:x_user}",
+      "post_map_values":{
+        "user":{
+          "map_fieldname":{
+            "new_fieldname":"reqUser"
+          }
+         },
+        "x_user":{
+          "map_fieldname":{
+            "new_fieldname":"reqUser"
+          }
+         },
+        "p_user":{
+          "map_fieldname":{
+            "new_fieldname":"reqUser"
+          }
+         },
+        "k_user":{
+          "map_fieldname":{
+            "new_fieldname":"proxyUsers"
+          }
+         },
+        "p_authType":{
+          "map_fieldname":{
+            "new_fieldname":"authType"
+          }
+         },
+        "k_authType":{
+          "map_fieldname":{
+            "new_fieldname":"proxyAuthType"
+          }
+         }
+       }
+     }
+   ]
+ }
+    </value>
+    <value-attributes>
+      <type>content</type>
+      <show-property-name>false</show-property-name>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+</configuration>

+ 633 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/hdfs-site.xml

@@ -0,0 +1,633 @@
+<?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 supports_final="true">
+  <!-- These properties exist in common services. -->
+  <!-- file system properties -->
+  <property>
+    <name>dfs.namenode.name.dir</name>
+    <!-- cluster variant -->
+    <value>/hadoop/hdfs/namenode</value>
+    <display-name>NameNode directories</display-name>
+    <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>
+    <value-attributes>
+      <type>directories</type>
+      <overridable>false</overridable>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.support.append</name>
+    <value>true</value>
+    <description>to enable dfs append</description>
+    <final>true</final>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.webhdfs.enabled</name>
+    <value>true</value>
+    <display-name>WebHDFS enabled</display-name>
+    <description>Whether to enable WebHDFS feature</description>
+    <final>true</final>
+    <value-attributes>
+      <type>boolean</type>
+      <overridable>false</overridable>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.datanode.failed.volumes.tolerated</name>
+    <value>0</value>
+    <description> Number of failed disks a DataNode would tolerate before it stops offering service</description>
+    <final>true</final>
+    <display-name>DataNode failed disk tolerance</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>0</minimum>
+      <maximum>2</maximum>
+      <increment-step>1</increment-step>
+    </value-attributes>
+    <depends-on>
+      <property>
+        <type>hdfs-site</type>
+        <name>dfs.datanode.data.dir</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.datanode.data.dir</name>
+    <value>/hadoop/hdfs/data</value>
+    <display-name>DataNode directories</display-name>
+    <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>
+    <value-attributes>
+      <type>directories</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.hosts.exclude</name>
+    <value>/etc/hadoop/conf/dfs.exclude</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>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <!--
+    <property>
+      <name>dfs.hosts</name>
+      <value>/etc/hadoop/conf/dfs.include</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.namenode.checkpoint.dir</name>
+    <value>/hadoop/hdfs/namesecondary</value>
+    <display-name>SecondaryNameNode Checkpoint directories</display-name>
+    <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>
+    <value-attributes>
+      <type>directories</type>
+      <overridable>false</overridable>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.namenode.checkpoint.edits.dir</name>
+    <value>${dfs.namenode.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 directories then the edits are
+      replicated in all of the directories for redundancy.
+      Default value is same as dfs.namenode.checkpoint.dir
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.namenode.checkpoint.period</name>
+    <value>21600</value>
+    <display-name>HDFS Maximum Checkpoint Delay</display-name>
+    <description>The number of seconds between two periodic checkpoints.</description>
+    <value-attributes>
+      <type>int</type>
+      <unit>seconds</unit>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.namenode.checkpoint.txns</name>
+    <value>1000000</value>
+    <description>The Secondary NameNode or CheckpointNode will create a checkpoint
+      of the namespace every 'dfs.namenode.checkpoint.txns' transactions,
+      regardless of whether 'dfs.namenode.checkpoint.period' has expired.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.replication.max</name>
+    <value>50</value>
+    <description>Maximal block replication.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.replication</name>
+    <value>3</value>
+    <display-name>Block replication</display-name>
+    <description>Default block replication.
+    </description>
+    <value-attributes>
+      <type>int</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.heartbeat.interval</name>
+    <value>3</value>
+    <description>Determines datanode heartbeat interval in seconds.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.namenode.safemode.threshold-pct</name>
+    <value>0.999</value>
+    <description>
+      Specifies the percentage of blocks that should satisfy
+      the minimal replication requirement defined by dfs.namenode.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>
+    <display-name>Minimum replicated blocks %</display-name>
+    <value-attributes>
+      <type>float</type>
+      <minimum>0.990</minimum>
+      <maximum>1.000</maximum>
+      <increment-step>0.001</increment-step>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.datanode.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>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.https.port</name>
+    <value>50470</value>
+    <description>
+      This property is used by HftpFileSystem.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.datanode.address</name>
+    <value>0.0.0.0:50010</value>
+    <description>
+      The datanode server address and port for data transfer.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.datanode.http.address</name>
+    <value>0.0.0.0:50075</value>
+    <description>
+      The datanode http server address and port.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.datanode.https.address</name>
+    <value>0.0.0.0:50475</value>
+    <description>
+      The datanode https server address and port.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.blocksize</name>
+    <value>134217728</value>
+    <description>The default block size for new files.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.namenode.http-address</name>
+    <value>localhost:50070</value>
+    <description>The name of the default file system.  Either the
+      literal string "local" or a host:port for HDFS.</description>
+    <final>true</final>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>dfs.namenode.rpc-address</name>
+    <value>localhost:8020</value>
+    <description>RPC address that handles all clients requests.</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>dfs.datanode.du.reserved</name>
+    <!-- cluster variant -->
+    <value>1073741824</value>
+    <display-name>Reserved space for HDFS</display-name>
+    <description>Reserved space in bytes per volume. Always leave this much space free for non dfs use.
+    </description>
+    <value-attributes>
+      <type>int</type>
+      <unit>bytes</unit>
+    </value-attributes>
+    <depends-on>
+      <property>
+        <type>hdfs-site</type>
+        <name>dfs.datanode.data.dir</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="true"/>
+  </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>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.blockreport.initialDelay</name>
+    <value>120</value>
+    <description>Delay for first block report in seconds.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.datanode.max.transfer.threads</name>
+    <value>1024</value>
+    <description>Specifies the maximum number of threads to use for transferring data in and out of the datanode.</description>
+    <display-name>DataNode max data transfer threads</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>0</minimum>
+      <maximum>48000</maximum>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <!-- Permissions configuration -->
+  <property>
+    <name>fs.permissions.umask-mode</name>
+    <value>022</value>
+    <description>
+      The octal umask used when creating files and directories.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.permissions.enabled</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>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.permissions.superusergroup</name>
+    <value>hdfs</value>
+    <description>The name of the group of super-users.</description>
+    <on-ambari-upgrade add="true"/>
+  </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>
+    <display-name>NameNode Server threads</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>1</minimum>
+      <maximum>200</maximum>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </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>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <!-- cluster variant -->
+    <name>dfs.namenode.secondary.http-address</name>
+    <value>localhost:50090</value>
+    <description>Address of secondary namenode web server</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>dfs.namenode.https-address</name>
+    <value>localhost:50470</value>
+    <description>The https address where namenode binds</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>dfs.datanode.data.dir.perm</name>
+    <value>750</value>
+    <display-name>DataNode directories permission</display-name>
+    <description>The permissions that should be there on dfs.datanode.data.dir
+      directories. The datanode will not come up if the permissions are
+      different on existing dfs.datanode.data.dir directories. If the directories
+      don't exist, they will be created with this permission.</description>
+    <value-attributes>
+      <type>int</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.namenode.accesstime.precision</name>
+    <value>0</value>
+    <display-name>Access time precision</display-name>
+    <description>The access time for HDFS file is precise up to this value.
+      The default value is 1 hour. Setting a value of 0 disables
+      access times for HDFS.
+    </description>
+    <value-attributes>
+      <type>int</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.cluster.administrators</name>
+    <value> hdfs</value>
+    <description>ACL for who all can view the default servlets in the HDFS</description>
+    <on-ambari-upgrade add="true"/>
+  </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>
+    <on-ambari-upgrade add="true"/>
+  </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>
+    <on-ambari-upgrade add="true"/>
+  </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>
+    <on-ambari-upgrade add="true"/>
+  </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>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.journalnode.http-address</name>
+    <value>0.0.0.0:8480</value>
+    <description>The address and port the JournalNode web UI listens on.
+      If the port is 0 then the server will start on a free port. </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.journalnode.https-address</name>
+    <value>0.0.0.0:8481</value>
+    <description>The address and port the JournalNode HTTPS server listens on.
+      If the port is 0 then the server will start on a free port. </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <!-- HDFS Short-Circuit Local Reads -->
+  <property>
+    <name>dfs.client.read.shortcircuit</name>
+    <value>true</value>
+    <display-name>HDFS Short-circuit read</display-name>
+    <description>
+      This configuration parameter turns on short-circuit local reads.
+    </description>
+    <value-attributes>
+      <type>boolean</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.domain.socket.path</name>
+    <value>/var/lib/hadoop-hdfs/dn_socket</value>
+    <description>
+      This is a path to a UNIX domain socket that will be used for communication between the DataNode and local HDFS clients.
+      If the string "_PORT" is present in this path, it will be replaced by the TCP port of the DataNode.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.client.read.shortcircuit.streams.cache.size</name>
+    <value>4096</value>
+    <description>
+      The DFSClient maintains a cache of recently opened file descriptors. This
+      parameter controls the size of that cache. Setting this higher will use
+      more file descriptors, but potentially provide better performance on
+      workloads involving lots of seeks.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.namenode.name.dir.restore</name>
+    <value>true</value>
+    <description>Set to true to enable NameNode to attempt recovering a previously failed dfs.namenode.name.dir.
+      When enabled, a recovery of any failed directory is attempted during checkpoint.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.http.policy</name>
+    <value>HTTP_ONLY</value>
+    <description>
+      Decide if HTTPS(SSL) is supported on HDFS This configures the HTTP endpoint for HDFS daemons:
+      The following values are supported: - HTTP_ONLY : Service is provided only on http - HTTPS_ONLY :
+      Service is provided only on https - HTTP_AND_HTTPS : Service is provided both on http and https
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+
+  <!-- These properties exist in HDP 2.1 and higher. -->
+  <property>
+    <name>dfs.namenode.audit.log.async</name>
+    <value>true</value>
+    <description>Whether to enable async auditlog</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.namenode.fslock.fair</name>
+    <value>false</value>
+    <description>Whether fsLock is fair</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+
+  <!-- These properties exist in HDP 2.2 and higher. -->
+  <property>
+    <name>dfs.namenode.startup.delay.block.deletion.sec</name>
+    <value>3600</value>
+    <description>
+      The delay in seconds at which we will pause the blocks deletion
+      after Namenode startup. By default it's disabled.
+      In the case a directory has large number of directories and files are
+      deleted, suggested delay is one hour to give the administrator enough time
+      to notice large number of pending deletion blocks and take corrective
+      action.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.journalnode.edits.dir</name>
+    <value>/hadoop/hdfs/journalnode</value>
+    <description>The path where the JournalNode daemon will store its local state. </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.client.retry.policy.enabled</name>
+    <value>false</value>
+    <description>Enables HDFS client retry in the event of a NameNode failure.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.content-summary.limit</name>
+    <value>5000</value>
+    <description>Dfs content summary limit.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.encryption.key.provider.uri</name>
+    <description>
+      The KeyProvider to use when interacting with encryption keys used
+      when reading and writing to an encryption zone.
+    </description>
+    <value/>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <depends-on>
+      <property>
+        <type>hadoop-env</type>
+        <name>keyserver_host</name>
+      </property>
+      <property>
+        <type>hadoop-env</type>
+        <name>keyserver_port</name>
+      </property>
+      <property>
+        <type>kms-env</type>
+        <name>kms_port</name>
+      </property>
+      <property>
+        <type>ranger-kms-site</type>
+        <name>ranger.service.https.attrib.ssl.enabled</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="true"/>
+  </property>
+
+  <!-- These properties exist in HDP 2.3 and higher. -->
+  <property>
+    <name>nfs.file.dump.dir</name>
+    <value>/tmp/.hdfs-nfs</value>
+    <display-name>NFSGateway dump directory</display-name>
+    <description>
+      This directory is used to temporarily save out-of-order writes before
+      writing to HDFS. For each file, the out-of-order writes are dumped after
+      they are accumulated to exceed certain threshold (e.g., 1MB) in memory.
+      One needs to make sure the directory has enough space.
+    </description>
+    <value-attributes>
+      <type>directory</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>nfs.exports.allowed.hosts</name>
+    <value>* rw</value>
+    <description>
+      By default, the export can be mounted by any client. To better control the access,
+      users can update the following property. The value string contains machine name and access privilege,
+      separated by whitespace characters. Machine name format can be single host, wildcards, and IPv4
+      networks.The access privilege uses rw or ro to specify readwrite or readonly access of the machines
+      to exports. If the access privilege is not provided, the default is read-only. Entries are separated
+      by &quot;;&quot;. For example: &quot;192.168.0.0/22 rw ; host*.example.com ; host1.test.org ro;&quot;.
+    </description>
+    <display-name>Allowed hosts</display-name>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.encrypt.data.transfer.cipher.suites</name>
+    <value>AES/CTR/NoPadding</value>
+    <description>
+      This value may be either undefined or AES/CTR/NoPadding. If defined, then 
+      dfs.encrypt.data.transfer uses the specified cipher suite for data encryption. 
+      If not defined, then only the algorithm specified in dfs.encrypt.data.transfer.algorithm 
+      is used. By default, the property is not defined.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>dfs.namenode.inode.attributes.provider.class</name>
+    <description>Enable ranger hdfs plugin</description>
+    <depends-on>
+      <property>
+        <type>ranger-hdfs-plugin-properties</type>
+        <name>ranger-hdfs-plugin-enabled</name>
+      </property>
+    </depends-on>
+    <value-attributes>
+      <overridable>false</overridable>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+</configuration>

+ 124 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/ranger-hdfs-audit.xml

@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?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>
+  <!-- These properties exist in HDP 2.3 and higher. -->
+  <property>
+    <name>xasecure.audit.is.enabled</name>
+    <value>true</value>
+    <description>Is Audit enabled?</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.hdfs</name>
+    <value>true</value>
+    <display-name>Audit to HDFS</display-name>
+    <description>Is Audit to HDFS enabled?</description>
+    <value-attributes>
+      <type>boolean</type>
+    </value-attributes>
+    <depends-on>
+      <property>
+        <type>ranger-env</type>
+        <name>xasecure.audit.destination.hdfs</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.hdfs.dir</name>
+    <value>hdfs://NAMENODE_HOSTNAME:8020/ranger/audit</value>
+    <description>HDFS folder to write audit to, make sure the service user has requried permissions</description>
+    <depends-on>
+      <property>
+        <type>ranger-env</type>
+        <name>xasecure.audit.destination.hdfs.dir</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.hdfs.batch.filespool.dir</name>
+    <value>/var/log/hadoop/hdfs/audit/hdfs/spool</value>
+    <description>/var/log/hadoop/hdfs/audit/hdfs/spool</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.solr</name>
+    <value>false</value>
+    <display-name>Audit to SOLR</display-name>
+    <description>Is Solr audit enabled?</description>
+    <value-attributes>
+      <type>boolean</type>
+    </value-attributes>
+    <depends-on>
+      <property>
+        <type>ranger-env</type>
+        <name>xasecure.audit.destination.solr</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.solr.urls</name>
+    <value/>
+    <description>Solr URL</description>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <depends-on>
+      <property>
+        <type>ranger-admin-site</type>
+        <name>ranger.audit.solr.urls</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.solr.zookeepers</name>
+    <value>NONE</value>
+    <description>Solr Zookeeper string</description>
+    <depends-on>
+      <property>
+        <type>ranger-admin-site</type>
+        <name>ranger.audit.solr.zookeepers</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.solr.batch.filespool.dir</name>
+    <value>/var/log/hadoop/hdfs/audit/solr/spool</value>
+    <description>/var/log/hadoop/hdfs/audit/solr/spool</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.provider.summary.enabled</name>
+    <value>false</value>
+    <display-name>Audit provider summary enabled</display-name>
+    <description>Enable Summary audit?</description>
+    <value-attributes>
+      <type>boolean</type>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+
+</configuration>

+ 88 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/ranger-hdfs-plugin-properties.xml

@@ -0,0 +1,88 @@
+<?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.
+ */
+-->
+<configuration supports_final="true">
+  <!-- These properties exist in HDP 2.2 and higher. -->
+  <property>
+    <name>policy_user</name>
+    <value>ambari-qa</value>
+    <display-name>Policy user for HDFS</display-name>
+    <description>This user must be system user and also present at Ranger
+      admin portal</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>common.name.for.certificate</name>
+    <value/>
+    <description>Common name for certificate, this value should match what is specified in repo within ranger admin</description>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>ranger-hdfs-plugin-enabled</name>
+    <value>No</value>
+    <display-name>Enable Ranger for HDFS</display-name>
+    <description>Enable ranger hdfs plugin</description>
+    <depends-on>
+      <property>
+        <type>ranger-env</type>
+        <name>ranger-hdfs-plugin-enabled</name>
+      </property>
+    </depends-on>
+    <value-attributes>
+      <type>boolean</type>
+      <overridable>false</overridable>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>REPOSITORY_CONFIG_USERNAME</name>
+    <value>hadoop</value>
+    <display-name>Ranger repository config user</display-name>
+    <description>Used for repository creation on ranger admin
+    </description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>REPOSITORY_CONFIG_PASSWORD</name>
+    <value>hadoop</value>
+    <display-name>Ranger repository config password</display-name>
+    <property-type>PASSWORD</property-type>
+    <description>Used for repository creation on ranger admin
+    </description>
+    <value-attributes>
+      <type>password</type>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+
+  <!-- These properties exist in HDP 2.5 and higher. -->
+  <property>
+    <name>hadoop.rpc.protection</name>
+    <value>authentication</value>
+    <description>Used for repository creation on ranger admin</description>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <on-ambari-upgrade add="false" />
+  </property>
+</configuration>

+ 67 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/ranger-hdfs-policymgr-ssl.xml

@@ -0,0 +1,67 @@
+<?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>
+  <!-- These properties exist in HDP 2.3 and higher. -->
+  <property>
+    <name>xasecure.policymgr.clientssl.keystore</name>
+    <value>/usr/hdp/current/hadoop-client/conf/ranger-plugin-keystore.jks</value>
+    <description>Java Keystore files</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.policymgr.clientssl.keystore.password</name>
+    <value>myKeyFilePassword</value>
+    <property-type>PASSWORD</property-type>
+    <description>password for keystore</description>
+    <value-attributes>
+      <type>password</type>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.policymgr.clientssl.truststore</name>
+    <value>/usr/hdp/current/hadoop-client/conf/ranger-plugin-truststore.jks</value>
+    <description>java truststore file</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.policymgr.clientssl.truststore.password</name>
+    <value>changeit</value>
+    <property-type>PASSWORD</property-type>
+    <description>java truststore password</description>
+    <value-attributes>
+      <type>password</type>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.policymgr.clientssl.keystore.credential.file</name>
+    <value>jceks://file{{credential_file}}</value>
+    <description>java keystore credential file</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.policymgr.clientssl.truststore.credential.file</name>
+    <value>jceks://file{{credential_file}}</value>
+    <description>java truststore credential file</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+</configuration>

+ 65 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/ranger-hdfs-security.xml

@@ -0,0 +1,65 @@
+<?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>
+  <!-- These properties exist in HDP 2.3 and higher. -->
+  <property>
+    <name>ranger.plugin.hdfs.service.name</name>
+    <value>{{repo_name}}</value>
+    <description>Name of the Ranger service containing Hdfs policies</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>ranger.plugin.hdfs.policy.source.impl</name>
+    <value>org.apache.ranger.admin.client.RangerAdminRESTClient</value>
+    <description>Class to retrieve policies from the source</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>ranger.plugin.hdfs.policy.rest.url</name>
+    <value>{{policymgr_mgr_url}}</value>
+    <description>URL to Ranger Admin</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>ranger.plugin.hdfs.policy.rest.ssl.config.file</name>
+    <value>/etc/hadoop/conf/ranger-policymgr-ssl.xml</value>
+    <description>Path to the file containing SSL details to contact Ranger Admin</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>ranger.plugin.hdfs.policy.pollIntervalMs</name>
+    <value>30000</value>
+    <description>How often to poll for changes in policies?</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>ranger.plugin.hdfs.policy.cache.dir</name>
+    <value>/etc/ranger/{{repo_name}}/policycache</value>
+    <description>Directory where Ranger policies are cached after successful retrieval from the source</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.add-hadoop-authorization</name>
+    <value>true</value>
+    <description>Enable/Disable the default hadoop authorization (based on rwxrwxrwx permission on the resource) if Ranger Authorization fails.</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+</configuration>

+ 70 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/ssl-client.xml

@@ -0,0 +1,70 @@
+<?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>ssl.client.truststore.location</name>
+    <value>/etc/security/clientKeys/all.jks</value>
+    <description>Location of the trust store file.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>ssl.client.truststore.type</name>
+    <value>jks</value>
+    <description>Optional. Default value is "jks".</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>ssl.client.truststore.password</name>
+    <value>bigdata</value>
+    <property-type>PASSWORD</property-type>
+    <description>Password to open the trust store file.</description>
+    <value-attributes>
+      <type>password</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>ssl.client.truststore.reload.interval</name>
+    <value>10000</value>
+    <description>Truststore reload interval, in milliseconds.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>ssl.client.keystore.type</name>
+    <value>jks</value>
+    <description>Optional. Default value is "jks".</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>ssl.client.keystore.location</name>
+    <value>/etc/security/clientKeys/keystore.jks</value>
+    <description>Location of the keystore file.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>ssl.client.keystore.password</name>
+    <value>bigdata</value>
+    <property-type>PASSWORD</property-type>
+    <description>Password to open the keystore file.</description>
+    <value-attributes>
+      <type>password</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+</configuration>

+ 80 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/configuration/ssl-server.xml

@@ -0,0 +1,80 @@
+<?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>ssl.server.truststore.location</name>
+    <value>/etc/security/serverKeys/all.jks</value>
+    <description>Location of the trust store file.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>ssl.server.truststore.type</name>
+    <value>jks</value>
+    <description>Optional. Default value is "jks".</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>ssl.server.truststore.password</name>
+    <value>bigdata</value>
+    <property-type>PASSWORD</property-type>
+    <description>Password to open the trust store file.</description>
+    <value-attributes>
+      <type>password</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>ssl.server.truststore.reload.interval</name>
+    <value>10000</value>
+    <description>Truststore reload interval, in milliseconds.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>ssl.server.keystore.type</name>
+    <value>jks</value>
+    <description>Optional. Default value is "jks".</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>ssl.server.keystore.location</name>
+    <value>/etc/security/serverKeys/keystore.jks</value>
+    <description>Location of the keystore file.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>ssl.server.keystore.password</name>
+    <value>bigdata</value>
+    <property-type>PASSWORD</property-type>
+    <description>Password to open the keystore file.</description>
+    <value-attributes>
+      <type>password</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>ssl.server.keystore.keypassword</name>
+    <value>bigdata</value>
+    <property-type>PASSWORD</property-type>
+    <description>Password for private key in keystore file.</description>
+    <value-attributes>
+      <type>password</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+</configuration>

+ 246 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/kerberos.json

@@ -0,0 +1,246 @@
+{
+  "services": [
+    {
+      "name": "HDFS",
+      "identities": [
+        {
+          "name": "/spnego",
+          "principal": {
+            "configuration": "hdfs-site/dfs.web.authentication.kerberos.principal"
+          },
+          "keytab": {
+            "configuration": "hdfs-site/dfs.web.authentication.kerberos.keytab"
+          }
+        },
+        {
+          "name": "/smokeuser"
+        }
+      ],
+      "auth_to_local_properties" : [
+        "core-site/hadoop.security.auth_to_local"
+      ],
+      "configurations": [
+        {
+          "core-site": {
+            "hadoop.security.authentication": "kerberos",
+            "hadoop.security.authorization": "true",
+            "hadoop.proxyuser.HTTP.groups": "${hadoop-env/proxyuser_group}"
+          }
+        },
+        {
+          "ranger-hdfs-audit": {
+            "xasecure.audit.jaas.Client.loginModuleName": "com.sun.security.auth.module.Krb5LoginModule",
+            "xasecure.audit.jaas.Client.loginModuleControlFlag": "required",
+            "xasecure.audit.jaas.Client.option.useKeyTab": "true",
+            "xasecure.audit.jaas.Client.option.storeKey": "false",
+            "xasecure.audit.jaas.Client.option.serviceName": "solr",
+            "xasecure.audit.destination.solr.force.use.inmemory.jaas.config": "true"
+          }
+        }
+      ],
+      "components": [
+        {
+          "name":  "HDFS_CLIENT",
+          "identities": [
+            {
+              "name": "/HDFS/NAMENODE/hdfs"
+            }
+          ]
+        },
+        {
+          "name": "NAMENODE",
+          "identities": [
+            {
+              "name": "hdfs",
+              "principal": {
+                "value": "${hadoop-env/hdfs_user}-${cluster_name|toLower()}@${realm}",
+                "type" : "user" ,
+                "configuration": "hadoop-env/hdfs_principal_name",
+                "local_username" : "${hadoop-env/hdfs_user}"
+              },
+              "keytab": {
+                "file": "${keytab_dir}/hdfs.headless.keytab",
+                "owner": {
+                  "name": "${hadoop-env/hdfs_user}",
+                  "access": "r"
+                },
+                "group": {
+                  "name": "${cluster-env/user_group}",
+                  "access": "r"
+                },
+                "configuration": "hadoop-env/hdfs_user_keytab"
+              }
+            },
+            {
+              "name": "namenode_nn",
+              "principal": {
+                "value": "nn/_HOST@${realm}",
+                "type" : "service",
+                "configuration": "hdfs-site/dfs.namenode.kerberos.principal",
+                "local_username" : "${hadoop-env/hdfs_user}"
+              },
+              "keytab": {
+                "file": "${keytab_dir}/nn.service.keytab",
+                "owner": {
+                  "name": "${hadoop-env/hdfs_user}",
+                  "access": "r"
+                },
+                "group": {
+                  "name": "${cluster-env/user_group}",
+                  "access": ""
+                },
+                "configuration": "hdfs-site/dfs.namenode.keytab.file"
+              }
+            },
+            {
+              "name": "/spnego",
+              "principal": {
+                "configuration": "hdfs-site/dfs.namenode.kerberos.internal.spnego.principal"
+              }
+            },
+            {
+              "name": "/HDFS/NAMENODE/namenode_nn",
+              "principal": {
+                "configuration": "ranger-hdfs-audit/xasecure.audit.jaas.Client.option.principal"                
+              },
+              "keytab": {
+                "configuration": "ranger-hdfs-audit/xasecure.audit.jaas.Client.option.keyTab"
+              }
+            }
+          ],
+          "configurations": [
+            {
+              "hdfs-site": {
+                "dfs.block.access.token.enable": "true"
+              }
+            }
+          ]
+        },
+        {
+          "name": "DATANODE",
+          "identities": [
+            {
+              "name": "datanode_dn",
+              "principal": {
+                "value": "dn/_HOST@${realm}",
+                "type" : "service",
+                "configuration": "hdfs-site/dfs.datanode.kerberos.principal",
+                "local_username" : "${hadoop-env/hdfs_user}"
+              },
+              "keytab": {
+                "file": "${keytab_dir}/dn.service.keytab",
+                "owner": {
+                  "name": "${hadoop-env/hdfs_user}",
+                  "access": "r"
+                },
+                "group": {
+                  "name": "${cluster-env/user_group}",
+                  "access": ""
+                },
+                "configuration": "hdfs-site/dfs.datanode.keytab.file"
+              }
+            }
+          ],
+          "configurations" : [
+            {
+              "hdfs-site" : {
+                "dfs.datanode.address" : "0.0.0.0:1019",
+                "dfs.datanode.http.address": "0.0.0.0:1022"
+              }
+            }
+          ]
+        },
+        {
+          "name": "SECONDARY_NAMENODE",
+          "identities": [
+            {
+              "name": "secondary_namenode_nn",
+              "principal": {
+                "value": "nn/_HOST@${realm}",
+                "type" : "service",
+                "configuration": "hdfs-site/dfs.secondary.namenode.kerberos.principal",
+                "local_username" : "${hadoop-env/hdfs_user}"
+              },
+              "keytab": {
+                "file": "${keytab_dir}/nn.service.keytab",
+                "owner": {
+                  "name": "${hadoop-env/hdfs_user}",
+                  "access": "r"
+                },
+                "group": {
+                  "name": "${cluster-env/user_group}",
+                  "access": ""
+                },
+                "configuration": "hdfs-site/dfs.secondary.namenode.keytab.file"
+              }
+            },
+            {
+              "name": "/spnego",
+              "principal": {
+                "configuration": "hdfs-site/dfs.secondary.namenode.kerberos.internal.spnego.principal"
+              }
+            }
+          ]
+        },
+        {
+          "name": "NFS_GATEWAY",
+          "identities": [
+            {
+              "name": "nfsgateway",
+              "principal": {
+                "value": "nfs/_HOST@${realm}",
+                "type" : "service",
+                "configuration": "hdfs-site/nfs.kerberos.principal",
+                "local_username" : "${hadoop-env/hdfs_user}"
+              },
+              "keytab": {
+                "file": "${keytab_dir}/nfs.service.keytab",
+                "owner": {
+                  "name": "${hadoop-env/hdfs_user}",
+                  "access": "r"
+                },
+                "group": {
+                  "name": "${cluster-env/user_group}",
+                  "access": ""
+                },
+                "configuration": "hdfs-site/nfs.keytab.file"
+              }
+            }
+          ]
+        },
+        {
+          "name": "JOURNALNODE",
+          "identities": [
+            {
+              "name": "journalnode_jn",
+              "principal": {
+                "value": "jn/_HOST@${realm}",
+                "type" : "service",
+                "configuration": "hdfs-site/dfs.journalnode.kerberos.principal",
+                "local_username" : "${hadoop-env/hdfs_user}"
+              },
+              "keytab": {
+                "file": "${keytab_dir}/jn.service.keytab",
+                "owner": {
+                  "name": "${hadoop-env/hdfs_user}",
+                  "access": "r"
+                },
+                "group": {
+                  "name": "${cluster-env/user_group}",
+                  "access": ""
+                },
+                "configuration": "hdfs-site/dfs.journalnode.keytab.file"
+              }
+            },
+            {
+              "name": "/spnego",
+              "principal": {
+                "configuration": "hdfs-site/dfs.journalnode.kerberos.internal.spnego.principal"
+              }
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}

+ 265 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/metainfo.xml

@@ -0,0 +1,265 @@
+<?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>
+  <schemaVersion>2.0</schemaVersion>
+  <services>
+    <service>
+      <name>HDFS</name>
+      <displayName>HDFS</displayName>
+      <comment>Apache Hadoop Distributed File System</comment>
+      <version>2.7.1.2.3</version>
+
+      <components>
+        <component>
+          <name>NAMENODE</name>
+          <displayName>NameNode</displayName>
+          <category>MASTER</category>
+          <cardinality>1-2</cardinality>
+          <versionAdvertised>true</versionAdvertised>
+          <reassignAllowed>true</reassignAllowed>
+          <commandScript>
+            <script>scripts/namenode.py</script>
+            <scriptType>PYTHON</scriptType>
+            <timeout>1800</timeout>
+          </commandScript>
+          <logs>
+            <log>
+              <logId>hdfs_namenode</logId>
+              <primary>true</primary>
+            </log>
+            <log>
+              <logId>hdfs_audit</logId>
+            </log>
+          </logs>
+          <customCommands>
+            <customCommand>
+              <name>DECOMMISSION</name>
+              <commandScript>
+                <script>scripts/namenode.py</script>
+                <scriptType>PYTHON</scriptType>
+                <timeout>600</timeout>
+              </commandScript>
+            </customCommand>
+            <customCommand>
+              <name>REBALANCEHDFS</name>
+              <background>true</background>
+              <commandScript>
+                <script>scripts/namenode.py</script>
+                <scriptType>PYTHON</scriptType>
+              </commandScript>
+            </customCommand>
+          </customCommands>
+        </component>
+
+        <component>
+          <name>DATANODE</name>
+          <displayName>DataNode</displayName>
+          <category>SLAVE</category>
+          <cardinality>1+</cardinality>
+          <versionAdvertised>true</versionAdvertised>
+          <decommissionAllowed>true</decommissionAllowed>
+          <commandScript>
+            <script>scripts/datanode.py</script>
+            <scriptType>PYTHON</scriptType>
+            <timeout>1200</timeout>
+          </commandScript>
+          <bulkCommands>
+            <displayName>DataNodes</displayName>
+            <!-- Used by decommission and recommission -->
+            <masterComponent>NAMENODE</masterComponent>
+          </bulkCommands>
+          <logs>
+            <log>
+              <logId>hdfs_datanode</logId>
+              <primary>true</primary>
+            </log>
+          </logs>
+        </component>
+
+        <component>
+          <name>SECONDARY_NAMENODE</name>
+          <displayName>SNameNode</displayName>
+          <cardinality>1</cardinality>
+          <versionAdvertised>true</versionAdvertised>
+          <reassignAllowed>true</reassignAllowed>
+          <category>MASTER</category>
+          <commandScript>
+            <script>scripts/snamenode.py</script>
+            <scriptType>PYTHON</scriptType>
+            <timeout>1200</timeout>
+          </commandScript>
+          <logs>
+            <log>
+              <logId>hdfs_secondarynamenode</logId>
+              <primary>true</primary>
+            </log>
+          </logs>
+        </component>
+
+        <component>
+          <name>HDFS_CLIENT</name>
+          <displayName>HDFS Client</displayName>
+          <category>CLIENT</category>
+          <cardinality>1+</cardinality>
+          <versionAdvertised>true</versionAdvertised>
+          <commandScript>
+            <script>scripts/hdfs_client.py</script>
+            <scriptType>PYTHON</scriptType>
+            <timeout>1200</timeout>
+          </commandScript>
+          <configFiles>
+            <configFile>
+              <type>xml</type>
+              <fileName>hdfs-site.xml</fileName>
+              <dictionaryName>hdfs-site</dictionaryName>
+            </configFile>
+            <configFile>
+              <type>xml</type>
+              <fileName>core-site.xml</fileName>
+              <dictionaryName>core-site</dictionaryName>
+            </configFile>
+            <configFile>
+              <type>env</type>
+              <fileName>log4j.properties</fileName>
+              <dictionaryName>hdfs-log4j,yarn-log4j</dictionaryName>
+            </configFile>
+            <configFile>
+              <type>env</type>
+              <fileName>hadoop-env.sh</fileName>
+              <dictionaryName>hadoop-env</dictionaryName>
+            </configFile>
+          </configFiles>
+        </component>
+
+        <component>
+          <name>JOURNALNODE</name>
+          <displayName>JournalNode</displayName>
+          <category>SLAVE</category>
+          <cardinality>0+</cardinality>
+          <versionAdvertised>true</versionAdvertised>
+          <commandScript>
+            <script>scripts/journalnode.py</script>
+            <scriptType>PYTHON</scriptType>
+            <timeout>1200</timeout>
+          </commandScript>
+          <logs>
+            <log>
+              <logId>hdfs_journalnode</logId>
+              <primary>true</primary>
+            </log>
+          </logs>
+          <dependencies>
+            <dependency>
+              <name>HDFS/HDFS_CLIENT</name>
+              <scope>host</scope>
+              <auto-deploy>
+                <enabled>true</enabled>
+              </auto-deploy>
+            </dependency>
+          </dependencies>
+        </component>
+
+        <component>
+          <name>ZKFC</name>
+          <displayName>ZKFailoverController</displayName>
+          <category>SLAVE</category>
+          <cardinality>0+</cardinality>
+          <versionAdvertised>true</versionAdvertised>
+          <commandScript>
+            <script>scripts/zkfc_slave.py</script>
+            <scriptType>PYTHON</scriptType>
+            <timeout>1200</timeout>
+          </commandScript>
+          <logs>
+            <log>
+              <logId>hdfs_zkfc</logId>
+              <primary>true</primary>
+            </log>
+          </logs>
+        </component>
+
+        <component>
+          <name>NFS_GATEWAY</name>
+          <displayName>NFSGateway</displayName>
+          <cardinality>0+</cardinality>
+          <versionAdvertised>true</versionAdvertised>
+          <category>SLAVE</category>
+          <commandScript>
+            <script>scripts/nfsgateway.py</script>
+            <scriptType>PYTHON</scriptType>
+            <timeout>1200</timeout>
+          </commandScript>
+          <dependencies>
+            <dependency>
+              <name>HDFS/HDFS_CLIENT</name>
+              <scope>host</scope>
+              <auto-deploy>
+                <enabled>true</enabled>
+              </auto-deploy>
+            </dependency>
+          </dependencies>
+        </component>
+      </components>
+
+      <commandScript>
+        <script>scripts/service_check.py</script>
+        <scriptType>PYTHON</scriptType>
+        <timeout>300</timeout>
+      </commandScript>
+
+      <requiredServices>
+        <service>ZOOKEEPER</service>
+      </requiredServices>
+
+      <configuration-dependencies>
+        <config-type>core-site</config-type>
+        <config-type>hdfs-site</config-type>
+        <config-type>hadoop-env</config-type>
+        <config-type>hadoop-policy</config-type>
+        <config-type>hdfs-log4j</config-type>
+        <config-type>ranger-hdfs-plugin-properties</config-type>
+        <config-type>ssl-client</config-type>
+        <config-type>ssl-server</config-type>
+        <config-type>ranger-hdfs-audit</config-type>
+        <config-type>ranger-hdfs-policymgr-ssl</config-type>
+        <config-type>ranger-hdfs-security</config-type>
+        <config-type>ams-ssl-client</config-type>
+        <config-type>hadoop-metrics2.properties</config-type>
+      </configuration-dependencies>
+      <restartRequiredAfterRackChange>true</restartRequiredAfterRackChange>
+
+      <!-- No packages to install. -->
+      <osSpecifics></osSpecifics>
+
+      <quickLinksConfigurations>
+        <quickLinksConfiguration>
+          <fileName>quicklinks.json</fileName>
+          <default>true</default>
+        </quickLinksConfiguration>
+      </quickLinksConfigurations>
+
+      <themes>
+        <theme>
+          <fileName>theme.json</fileName>
+          <default>true</default>
+        </theme>
+      </themes>
+
+    </service>
+  </services>
+</metainfo>

+ 7905 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/metrics.json

@@ -0,0 +1,7905 @@
+{
+  "NAMENODE": {
+    "Component": [
+      {
+        "type": "ganglia",
+        "metrics": {
+          "default": {
+            "metrics/cpu/cpu_idle":{
+              "metric":"cpu_idle",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/cpu/cpu_nice":{
+              "metric":"cpu_nice",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/cpu/cpu_system":{
+              "metric":"cpu_system",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/cpu/cpu_user":{
+              "metric":"cpu_user",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/cpu/cpu_wio":{
+              "metric":"cpu_wio",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/disk_free":{
+              "metric":"disk_free",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/disk_total":{
+              "metric":"disk_total",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/load/load_fifteen":{
+              "metric":"load_fifteen",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/load/load_five":{
+              "metric":"load_five",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/load/load_one":{
+              "metric":"load_one",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_buffers":{
+              "metric":"mem_buffers",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_cached":{
+              "metric":"mem_cached",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_free":{
+              "metric":"mem_free",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_shared":{
+              "metric":"mem_shared",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_total":{
+              "metric":"mem_total",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/swap_free":{
+              "metric":"swap_free",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/swap_total":{
+              "metric":"swap_total",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/network/bytes_in":{
+              "metric":"bytes_in",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/network/bytes_out":{
+              "metric":"bytes_out",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/network/pkts_in":{
+              "metric":"pkts_in",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/network/pkts_out":{
+              "metric":"pkts_out",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/process/proc_run":{
+              "metric":"proc_run",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/process/proc_total":{
+              "metric":"proc_total",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/read_count":{
+              "metric":"read_count",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/write_count":{
+              "metric":"write_count",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/read_bytes":{
+              "metric":"read_bytes",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/write_bytes":{
+              "metric":"write_bytes",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/read_time":{
+              "metric":"read_time",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/write_time":{
+              "metric":"write_time",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/dfs/FSNamesystem/TotalLoad": {
+              "metric": "dfs.FSNamesystem.TotalLoad",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/CapacityTotal": {
+              "metric": "dfs.FSNamesystem.CapacityTotal",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/CapacityUsed": {
+              "metric": "dfs.FSNamesystem.CapacityUsed",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/CapacityRemaining": {
+              "metric": "dfs.FSNamesystem.CapacityRemaining",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/CapacityNonDFSUsed": {
+              "metric": "dfs.FSNamesystem.CapacityUsedNonDFS",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/BlockCapacity": {
+              "metric": "dfs.FSNamesystem.BlockCapacity",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/GetListingOps": {
+              "metric": "dfs.namenode.GetListingOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/FilesAppended": {
+              "metric": "dfs.namenode.FilesAppended",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/TotalFileOps": {
+              "metric": "dfs.namenode.TotalFileOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/fsync_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.FsyncAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginSuccess_avg_time": {
+              "metric": "ugi.UgiMetrics.LoginSuccessAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/renewLease_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.RenewLeaseNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/getFileInfo_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.GetFileInfoAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapUsedM",
+              "unit": "MB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/complete_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.CompleteAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/setPermission_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.SetPermissionNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/CapacityTotalGB": {
+              "metric": "dfs.FSNamesystem.CapacityTotalGB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/setOwner_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.SetOwnerNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/getBlockLocations_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.GetBlockLocationsNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/CapacityUsedGB": {
+              "metric": "dfs.FSNamesystem.CapacityUsedGB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/AddBlockOps": {
+              "metric": "dfs.namenode.AddBlockOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/FilesDeleted": {
+              "metric": "dfs.namenode.FilesDeleted",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/Syncs_avg_time": {
+              "metric": "dfs.namenode.SyncsAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsBlocked": {
+              "metric": "jvm.JvmMetrics.ThreadsBlocked",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_num_ops": {
+              "metric": "rpc.rpc.RpcQueueTimeNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/blockReport_avg_time": {
+              "metric": "dfs.namenode.BlockReportAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/disk/part_max_used": {
+              "metric": "part_max_used",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/getFileInfo_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.GetFileInfoNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/getEditLogSize_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.GetEditLogManifestAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginSuccess_num_ops": {
+              "metric": "ugi.UgiMetrics.LoginSuccessNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/blockReceived_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.BlockReceivedAndDeletedAvgTime",
+              "pointInTime": false,
+              "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/rpcdetailed/addBlock_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.AddBlockNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/FilesCreated": {
+              "metric": "dfs.namenode.FilesCreated",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rename_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.RenameAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/setSafeMode_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.SetSafeModeNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapCommittedM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/setPermission_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.SetPermissionAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/FilesRenamed": {
+              "metric": "dfs.namenode.FilesRenamed",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/register_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.RegisterDatanodeAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/setReplication_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.SetReplicationNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/loginFailure_num_ops": {
+              "metric": "ugi.UgiMetrics.LoginFailureNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/GetBlockLocations": {
+              "metric": "dfs.namenode.GetBlockLocations",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/fsync_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.FsyncNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/create_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.CreateAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/PendingReplicationBlocks": {
+              "metric": "dfs.FSNamesystem.PendingReplicationBlocks",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/delete_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.DeleteAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/FileInfoOps": {
+              "metric": "dfs.namenode.FileInfoOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/sendHeartbeat_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.SendHeartbeatNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/DeleteFileOps": {
+              "metric": "dfs.namenode.DeleteFileOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_avg_time": {
+              "metric": "rpc.rpc.RpcProcessingTimeAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/blockReport_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.BlockReportNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/setSafeMode_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.SetSafeModeAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthenticationSuccesses": {
+              "metric": "rpc.rpc.RpcAuthenticationSuccesses",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/PendingDeletionBlocks": {
+              "metric": "dfs.FSNamesystem.PendingDeletionBlocks",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthenticationFailures": {
+              "metric": "rpc.rpc.RpcAuthenticationFailures",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/getEditLogSize_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.GetEditLogManifestNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemHeapCommittedM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/FilesInGetListingOps": {
+              "metric": "dfs.namenode.FilesInGetListingOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsRunnable": {
+              "metric": "jvm.JvmMetrics.ThreadsRunnable",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/complete_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.CompleteNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsNew": {
+              "metric": "jvm.JvmMetrics.ThreadsNew",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationFailures": {
+              "metric": "rpc.rpc.RpcAuthorizationFailures",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/Syncs_num_ops": {
+              "metric": "dfs.namenode.SyncsNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_avg_time": {
+              "metric": "rpc.rpc.RpcQueueTimeAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/blockReceived_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.BlockReceivedAndDeletedNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/setReplication_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.SetReplicationAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rollEditLog_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.RollEditLogAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/SentBytes": {
+              "metric": "rpc.rpc.SentBytes",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/FilesTotal": {
+              "metric": "dfs.FSNamesystem.FilesTotal",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logWarn": {
+              "metric": "jvm.JvmMetrics.LogWarn",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/ExcessBlocks": {
+              "metric": "dfs.FSNamesystem.ExcessBlocks",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTimedWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsTimedWaiting",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/gcCount": {
+              "metric": "jvm.JvmMetrics.GcCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/ReceivedBytes": {
+              "metric": "rpc.rpc.ReceivedBytes",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/blockReport_num_ops": {
+              "metric": "dfs.namenode.BlockReportNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/SafemodeTime": {
+              "metric": "dfs.namenode.SafemodeTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/mkdirs_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.MkdirsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/NumOpenConnections": {
+              "metric": "rpc.rpc.NumOpenConnections",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemHeapUsedM",
+              "unit": "MB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/ScheduledReplicationBlocks": {
+              "metric": "dfs.FSNamesystem.ScheduledReplicationBlocks",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsWaiting",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/BlocksTotal": {
+              "metric": "dfs.FSNamesystem.BlocksTotal",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/gcTimeMillis": {
+              "metric": "jvm.JvmMetrics.GcTimeMillis",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/getBlockLocations_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.GetBlockLocationsAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/Transactions_num_ops": {
+              "metric": "dfs.namenode.TransactionsNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/create_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.CreateNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTerminated": {
+              "metric": "jvm.JvmMetrics.ThreadsTerminated",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/CapacityRemainingGB": {
+              "metric": "dfs.FSNamesystem.CapacityRemainingGB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/Transactions_avg_time": {
+              "metric": "dfs.namenode.TransactionsAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/boottime": {
+              "metric": "boottime",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/dfs/FSNamesystem/MissingBlocks": {
+              "metric": "dfs.FSNamesystem.MissingBlocks",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/callQueueLen": {
+              "metric": "rpc.rpc.CallQueueLength",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/delete_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.DeleteNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/CorruptBlocks": {
+              "metric": "dfs.FSNamesystem.CorruptBlocks",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rename_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.RenameNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/blockReport_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.BlockReportAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/mkdirs_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.MkdirsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logInfo": {
+              "metric": "jvm.JvmMetrics.LogInfo",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/fsImageLoadTime": {
+              "metric": "dfs.namenode.FsImageLoadTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/getListing_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.GetListingNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rollEditLog_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.RollEditLogNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/addBlock_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.AddBlockAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/setOwner_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.SetOwnerAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_num_ops": {
+              "metric": "rpc.rpc.RpcProcessingTimeNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/UnderReplicatedBlocks": {
+              "metric": "dfs.FSNamesystem.UnderReplicatedBlocks",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/sendHeartbeat_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.SendHeartbeatAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/CreateFileOps": {
+              "metric": "dfs.namenode.CreateFileOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logError": {
+              "metric": "jvm.JvmMetrics.LogError",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginFailure_avg_time": {
+              "metric": "ugi.UgiMetrics.LoginFailureAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/register_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.RegisterDatanodeNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationSuccesses": {
+              "metric": "rpc.rpc.RpcAuthorizationSuccesses",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/getListing_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.GetListingAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logFatal": {
+              "metric": "jvm.JvmMetrics.LogFatal",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/renewLease_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.RenewLeaseAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/ElapsedTime": {
+              "metric": "default.StartupProgress.ElapsedTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/LoadingEditsCount": {
+              "metric": "default.StartupProgress.LoadingEditsCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/LoadingEditsElapsedTime": {
+              "metric": "default.StartupProgress.LoadingEditsElapsedTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/LoadingEditsPercentComplete": {
+              "metric": "default.StartupProgress.LoadingEditsPercentComplete",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/LoadingEditsTotal": {
+              "metric": "default.StartupProgress.LoadingEditsTotal",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/LoadingFsImageCount": {
+              "metric": "default.StartupProgress.LoadingFsImageCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/LoadingFsImageElapsedTime": {
+              "metric": "default.StartupProgress.LoadingFsImageElapsedTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/LoadingFsImagePercentComplete": {
+              "metric": "default.StartupProgress.LoadingFsImagePercentComplete",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/LoadingFsImageTotal": {
+              "metric": "default.StartupProgress.LoadingFsImageTotal",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/PercentComplete": {
+              "metric": "default.StartupProgress.PercentComplete",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/SafeModeCount": {
+              "metric": "default.StartupProgress.SafeModeCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/SafeModeElapsedTime": {
+              "metric": "default.StartupProgress.SafeModeElapsedTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/SafeModePercentComplete": {
+              "metric": "default.StartupProgress.SafeModePercentComplete",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/SafeModeTotal": {
+              "metric": "default.StartupProgress.SafeModeTotal",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/SavingCheckpointCount": {
+              "metric": "default.StartupProgress.SavingCheckpointCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/SavingCheckpointElapsedTime": {
+              "metric": "default.StartupProgress.SavingCheckpointElapsedTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/SavingCheckpointPercentComplete": {
+              "metric": "default.StartupProgress.SavingCheckpointPercentComplete",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/SavingCheckpointTotal": {
+              "metric": "default.StartupProgress.SavingCheckpointTotal",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/ExpiredHeartbeats": {
+              "metric": "dfs.FSNamesystem.ExpiredHeartbeats",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/LastCheckpointTime": {
+              "metric": "dfs.FSNamesystem.LastCheckpointTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/LastWrittenTransactionId": {
+              "metric": "dfs.FSNamesystem.LastWrittenTransactionId",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/MillisSinceLastLoadedEdits": {
+              "metric": "dfs.FSNamesystem.MillisSinceLastLoadedEdits",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/MissingReplOneBlocks": {
+              "metric": "dfs.FSNamesystem.MissingReplOneBlocks",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/PendingDataNodeMessageCount": {
+              "metric": "dfs.FSNamesystem.PendingDataNodeMessageCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/PostponedMisreplicatedBlocks": {
+              "metric": "dfs.FSNamesystem.PostponedMisreplicatedBlocks",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/Snapshots": {
+              "metric": "dfs.FSNamesystem.Snapshots",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/SnapshottableDirectories": {
+              "metric": "dfs.FSNamesystem.SnapshottableDirectories",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/StaleDataNodes": {
+              "metric": "dfs.FSNamesystem.StaleDataNodes",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/TotalFiles": {
+              "metric": "dfs.FSNamesystem.TotalFiles",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/TransactionsSinceLastCheckpoint": {
+              "metric": "dfs.FSNamesystem.TransactionsSinceLastCheckpoint",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/TransactionsSinceLastLogRoll": {
+              "metric": "dfs.FSNamesystem.TransactionsSinceLastLogRoll",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/AllowSnapshotOps": {
+              "metric": "dfs.namenode.AllowSnapshotOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/BlockReceivedAndDeletedOps": {
+              "metric": "dfs.namenode.BlockReceivedAndDeletedOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/CacheReportAvgTime": {
+              "metric": "dfs.namenode.CacheReportAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/CacheReportNumOps": {
+              "metric": "dfs.namenode.CacheReportNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/CreateSnapshotOps": {
+              "metric": "dfs.namenode.CreateSnapshotOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/CreateSymlinkOps": {
+              "metric": "dfs.namenode.CreateSymlinkOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/DeleteSnapshotOps": {
+              "metric": "dfs.namenode.DeleteSnapshotOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/DisallowSnapshotOps": {
+              "metric": "dfs.namenode.DisallowSnapshotOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/FilesTruncated": {
+              "metric": "dfs.namenode.FilesTruncated",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/GetAdditionalDatanodeOps": {
+              "metric": "dfs.namenode.GetAdditionalDatanodeOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/GetEditAvgTime": {
+              "metric": "dfs.namenode.GetEditAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/GetEditNumOps": {
+              "metric": "dfs.namenode.GetEditNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/GetImageAvgTime": {
+              "metric": "dfs.namenode.GetImageAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/GetImageNumOps": {
+              "metric": "dfs.namenode.GetImageNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/GetLinkTargetOps": {
+              "metric": "dfs.namenode.GetLinkTargetOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/ListSnapshottableDirOps": {
+              "metric": "dfs.namenode.ListSnapshottableDirOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/PutImageAvgTime": {
+              "metric": "dfs.namenode.PutImageAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/PutImageNumOps": {
+              "metric": "dfs.namenode.PutImageNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/RenameSnapshotOps": {
+              "metric": "dfs.namenode.RenameSnapshotOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/SnapshotDiffReportOps": {
+              "metric": "dfs.namenode.SnapshotDiffReportOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/StorageBlockReportOps": {
+              "metric": "dfs.namenode.StorageBlockReportOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/TransactionsBatchedInSync": {
+              "metric": "dfs.namenode.TransactionsBatchedInSync",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcCountConcurrentMarkSweep": {
+              "metric": "jvm.JvmMetrics.GcCountConcurrentMarkSweep",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcCountParNew": {
+              "metric": "jvm.JvmMetrics.GcCountParNew",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcNumInfoThresholdExceeded": {
+              "metric": "jvm.JvmMetrics.GcNumInfoThresholdExceeded",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcNumWarnThresholdExceeded": {
+              "metric": "jvm.JvmMetrics.GcNumWarnThresholdExceeded",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcTimeMillisConcurrentMarkSweep": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisConcurrentMarkSweep",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcTimeMillisParNew": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisParNew",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcTotalExtraSleepTime": {
+              "metric": "jvm.JvmMetrics.GcTotalExtraSleepTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemHeapMaxM": {
+              "metric": "jvm.JvmMetrics.MemHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemMaxM": {
+              "metric": "jvm.JvmMetrics.MemMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemNonHeapMaxM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/DroppedPubAll": {
+              "metric": "metricssystem.MetricsSystem.DroppedPubAll",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumActiveSinks": {
+              "metric": "metricssystem.MetricsSystem.NumActiveSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumActiveSources": {
+              "metric": "metricssystem.MetricsSystem.NumActiveSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumAllSinks": {
+              "metric": "metricssystem.MetricsSystem.NumAllSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumAllSources": {
+              "metric": "metricssystem.MetricsSystem.NumAllSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/PublishAvgTime": {
+              "metric": "metricssystem.MetricsSystem.PublishAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/PublishNumOps": {
+              "metric": "metricssystem.MetricsSystem.PublishNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineAvgTime": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineDropped": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineDropped",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineNumOps": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineQsize": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineQsize",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/SnapshotAvgTime": {
+              "metric": "metricssystem.MetricsSystem.SnapshotAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/SnapshotNumOps": {
+              "metric": "metricssystem.MetricsSystem.SnapshotNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RetryCache/NameNodeRetryCache/CacheCleared": {
+              "metric": "rpc.RetryCache.NameNodeRetryCache.CacheCleared",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RetryCache/NameNodeRetryCache/CacheHit": {
+              "metric": "rpc.RetryCache.NameNodeRetryCache.CacheHit",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RetryCache/NameNodeRetryCache/CacheUpdated": {
+              "metric": "rpc.RetryCache.NameNodeRetryCache.CacheUpdated",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetServerDefaultsAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.GetServerDefaultsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetServerDefaultsNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.GetServerDefaultsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetTransactionIdAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.GetTransactionIdAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetTransactionIdNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.GetTransactionIdNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/IOExceptionAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.IOExceptionAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/IOExceptionNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.IOExceptionNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/PathIsNotEmptyDirectoryExceptionAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.PathIsNotEmptyDirectoryExceptionAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/PathIsNotEmptyDirectoryExceptionNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.PathIsNotEmptyDirectoryExceptionNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/RecoverLeaseAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.RecoverLeaseAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/RecoverLeaseNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.RecoverLeaseNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/Rename2AvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.Rename2AvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/Rename2NumOps": {
+              "metric": "rpcdetailed.rpcdetailed.Rename2NumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/SetTimesAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.SetTimesAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/SetTimesNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.SetTimesNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/GetGroupsAvgTime": {
+              "metric": "ugi.UgiMetrics.GetGroupsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/GetGroupsNumOps": {
+              "metric": "ugi.UgiMetrics.GetGroupsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            }
+          }
+        }
+      },
+      {
+        "type": "jmx",
+        "metrics": {
+          "default": {
+            "metrics/dfs/namenode/Used": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.Used",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/TotalLoad": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.TotalLoad",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/TransactionsSinceLastCheckpoint": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.TransactionsSinceLastCheckpoint",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/TransactionsSinceLastLogRoll": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.TransactionsSinceLastLogRoll",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/ExpiredHeartbeats": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.ExpiredHeartbeats",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/LastCheckpointTime": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.LastCheckpointTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/LastWrittenTransactionId": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.LastWrittenTransactionId",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/MillisSinceLastLoadedEdits": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.MillisSinceLastLoadedEdits",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/MissingReplOneBlocks": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.MissingReplOneBlocks",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/PendingDataNodeMessageCount": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.PendingDataNodeMessageCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/PostponedMisreplicatedBlocks": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.PostponedMisreplicatedBlocks",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/Snapshots": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.Snapshots",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/SnapshottableDirectories": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.SnapshottableDirectories",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/StaleDataNodes": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.StaleDataNodes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/TotalFiles": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.TotalFiles",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memMaxM": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.MemMaxM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/BlockCapacity": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.BlockCapacity",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/TotalFiles": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.TotalFiles",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/HostName": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.HostName",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/GetListingOps": {
+              "metric": "Hadoop:service=NameNode,name=NameNode.GetListingOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/UpgradeFinalized": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.UpgradeFinalized",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getProtocolVersion_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.getProtocolVersion_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/ugi/loginSuccess_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=ugi.loginSuccess_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/Safemode": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.Safemode",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/CorruptBlocks": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystemMetrics.CorruptBlocks",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/LiveNodes": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.LiveNodes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/renewLease_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.renewLease_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/dfs/FSNamesystem/CapacityRemaining": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.CapacityRemaining",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/PercentRemaining": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.PercentRemaining",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memNonHeapUsedM": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.MemNonHeapUsedM",
+              "unit": "MB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/complete_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.complete_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/CapacityTotalGB": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.CapacityTotalGB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getBlockLocations_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.getBlockLocations_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/AddBlockOps": {
+              "metric": "Hadoop:service=NameNode,name=NameNode.AddBlockOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/CapacityUsedGB": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.CapacityUsedGB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/Syncs_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=NameNode.Syncs_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsBlocked": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.ThreadsBlocked",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcQueueTime_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.RpcQueueTime_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/PercentUsed": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.PercentUsed",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/DecomNodes": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.DecomNodes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/blockReport_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=NameNode.blockReport_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/NonDfsUsedSpace": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.NonDfsUsedSpace",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/UpgradeFinalized": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.UpgradeFinalized",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getFileInfo_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.getFileInfo_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/ugi/loginSuccess_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=ugi.loginSuccess_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/dfs/namenode/Safemode": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.Safemode",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/FilesCreated": {
+              "metric": "Hadoop:service=NameNode,name=NameNode.FilesCreated",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/addBlock_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.addBlock_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/DecomNodes": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.DecomNodes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/CapacityUsed": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.CapacityUsed",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/NonHeapMemoryUsed": {
+              "metric": "java.lang:type=Memory.NonHeapMemoryUsage[used]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memNonHeapCommittedM": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.MemNonHeapCommittedM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/DeadNodes": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.DeadNodes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/PercentUsed": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.PercentUsed",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/Free": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.Free",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/Total": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.Total",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/GetBlockLocations": {
+              "metric": "Hadoop:service=NameNode,name=NameNode.GetBlockLocations",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginFailure_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=ugi.loginFailure_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/fsync_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.fsync_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/HeapMemoryMax": {
+              "metric": "java.lang:type=Memory.HeapMemoryUsage[max]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/create_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.create_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/PendingReplicationBlocks": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.PendingReplicationBlocks",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/UnderReplicatedBlocks": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystemMetrics.UnderReplicatedBlocks",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/FileInfoOps": {
+              "metric": "Hadoop:service=NameNode,name=NameNode.FileInfoOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/MissingBlocks": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystemMetrics.MissingBlocks",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/sendHeartbeat_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.sendHeartbeat_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcProcessingTime_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.RpcProcessingTime_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/blockReport_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.blockReport_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/CapacityRemaining": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystemState.CapacityRemaining",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthenticationSuccesses": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.rpcAuthenticationSuccesses",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/PendingDeletionBlocks": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.PendingDeletionBlocks",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthenticationFailures": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.rpcAuthenticationFailures",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getEditLogSize_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.getEditLogSize_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memHeapCommittedM": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.MemHeapCommittedM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/FilesInGetListingOps": {
+              "metric": "Hadoop:service=NameNode,name=NameNode.FilesInGetListingOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsRunnable": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.ThreadsRunnable",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/BlocksTotal": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystemMetrics.BlocksTotal",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/CapacityTotal": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.CapacityTotal",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/complete_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.complete_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/LiveNodes": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.LiveNodes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsNew": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.ThreadsNew",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/rollFsImage_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.rollFsImage_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthorizationFailures": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.rpcAuthorizationFailures",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/Syncs_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=NameNode.Syncs_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/StartTime": {
+              "metric": "java.lang:type=Runtime.StartTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcQueueTime_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.RpcQueueTime_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/rollEditLog_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.rollEditLog_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/DeadNodes": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.DeadNodes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/SentBytes": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.SentBytes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/HeapMemoryUsed": {
+              "metric": "java.lang:type=Memory.HeapMemoryUsage[used]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/FilesTotal": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.FilesTotal",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/Version": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.Version",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logWarn": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.LogWarn",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/ExcessBlocks": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.ExcessBlocks",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsTimedWaiting": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.ThreadsTimedWaiting",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/gcCount": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.GcCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/PercentRemaining": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.PercentRemaining",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/ReceivedBytes": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.ReceivedBytes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/blockReport_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=NameNode.blockReport_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/NonHeapMemoryMax": {
+              "metric": "java.lang:type=Memory.NonHeapMemoryUsage[max]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/rollFsImage_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.rollFsImage_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/NumOpenConnections": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.NumOpenConnections",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memHeapUsedM": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.MemHeapUsedM",
+              "unit": "MB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/ScheduledReplicationBlocks": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.ScheduledReplicationBlocks",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsWaiting": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.ThreadsWaiting",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/BlocksTotal": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.BlocksTotal",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/gcTimeMillis": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.GcTimeMillis",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getBlockLocations_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.getBlockLocations_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/rpcdetailed/create_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.create_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/CapacityTotal": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.Total",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsTerminated": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.ThreadsTerminated",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/CapacityRemainingGB": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.CapacityRemainingGB",
+              "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/FSNamesystem/MissingBlocks": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.MissingBlocks",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/Threads": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.Threads",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/callQueueLen": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.callQueueLen",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/CorruptBlocks": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.CorruptBlocks",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/blockReport_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.blockReport_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/TotalFiles": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.TotalFiles",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logInfo": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.LogInfo",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/NameDirStatuses": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.NameDirStatuses",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getListing_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.getListing_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/rollEditLog_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.rollEditLog_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/addBlock_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.addBlock_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcProcessingTime_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.RpcProcessingTime_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/CapacityUsed": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.Used",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/UnderReplicatedBlocks": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.UnderReplicatedBlocks",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/sendHeartbeat_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.sendHeartbeat_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/CreateFileOps": {
+              "metric": "Hadoop:service=NameNode,name=NameNode.CreateFileOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logError": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.LogError",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginFailure_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=ugi.loginFailure_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getProtocolVersion_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.getProtocolVersion_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthorizationSuccesses": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.rpcAuthorizationSuccesses",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/Version": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.Version",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getListing_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.getListing_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logFatal": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.LogFatal",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/NonDfsUsedSpace": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.NonDfsUsedSpace",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/renewLease_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.renewLease_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/TotalBlocks": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.TotalBlocks",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/CapacityNonDFSUsed": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.CapacityNonDFSUsed",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/GcTimeMillisConcurrentMarkSweep": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.GcTimeMillisConcurrentMarkSweep",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/GcCountConcurrentMarkSweep": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.GcCountConcurrentMarkSweep",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcQueueTimeAvgTime": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.RpcQueueTimeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcProcessingTimeAvgTime": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.RpcProcessingTimeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/CorruptFiles": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.CorruptFiles",
+              "pointInTime": true,
+              "temporal": false
+            }
+          }
+        }
+      }
+    ],
+    "HostComponent": [
+      {
+        "type": "ganglia",
+        "metrics": {
+          "default": {
+            "metrics/cpu/cpu_idle":{
+              "metric":"cpu_idle",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/cpu/cpu_nice":{
+              "metric":"cpu_nice",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/cpu/cpu_system":{
+              "metric":"cpu_system",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/cpu/cpu_user":{
+              "metric":"cpu_user",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/cpu/cpu_wio":{
+              "metric":"cpu_wio",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/disk_free":{
+              "metric":"disk_free",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/disk_total":{
+              "metric":"disk_total",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/load/load_fifteen":{
+              "metric":"load_fifteen",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/load/load_five":{
+              "metric":"load_five",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/load/load_one":{
+              "metric":"load_one",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_buffers":{
+              "metric":"mem_buffers",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_cached":{
+              "metric":"mem_cached",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_free":{
+              "metric":"mem_free",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_shared":{
+              "metric":"mem_shared",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_total":{
+              "metric":"mem_total",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/swap_free":{
+              "metric":"swap_free",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/swap_total":{
+              "metric":"swap_total",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/network/bytes_in":{
+              "metric":"bytes_in",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/network/bytes_out":{
+              "metric":"bytes_out",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/network/pkts_in":{
+              "metric":"pkts_in",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/network/pkts_out":{
+              "metric":"pkts_out",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/process/proc_run":{
+              "metric":"proc_run",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/process/proc_total":{
+              "metric":"proc_total",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/read_count":{
+              "metric":"read_count",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/write_count":{
+              "metric":"write_count",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/read_bytes":{
+              "metric":"read_bytes",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/write_bytes":{
+              "metric":"write_bytes",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/read_time":{
+              "metric":"read_time",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/write_time":{
+              "metric":"write_time",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/dfs/FSNamesystem/TotalLoad": {
+              "metric": "dfs.FSNamesystem.TotalLoad",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/CapacityTotal": {
+              "metric": "dfs.FSNamesystem.CapacityTotal",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/CapacityUsed": {
+              "metric": "dfs.FSNamesystem.CapacityUsed",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/CapacityRemaining": {
+              "metric": "dfs.FSNamesystem.CapacityRemaining",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/CapacityNonDFSUsed": {
+              "metric": "dfs.FSNamesystem.CapacityUsedNonDFS",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/BlockCapacity": {
+              "metric": "dfs.FSNamesystem.BlockCapacity",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/GetListingOps": {
+              "metric": "dfs.namenode.GetListingOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/FilesAppended": {
+              "metric": "dfs.namenode.FilesAppended",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/TotalFileOps": {
+              "metric": "dfs.namenode.TotalFileOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/fsync_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.FsyncAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginSuccess_avg_time": {
+              "metric": "ugi.UgiMetrics.LoginSuccessAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/renewLease_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.RenewLeaseNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/getFileInfo_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.GetFileInfoAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapUsedM",
+              "unit": "MB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/complete_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.CompleteAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/setPermission_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.SetPermissionNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/CapacityTotalGB": {
+              "metric": "dfs.FSNamesystem.CapacityTotalGB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/setOwner_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.SetOwnerNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/getBlockLocations_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.GetBlockLocationsNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/CapacityUsedGB": {
+              "metric": "dfs.FSNamesystem.CapacityUsedGB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/AddBlockOps": {
+              "metric": "dfs.namenode.AddBlockOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/FilesDeleted": {
+              "metric": "dfs.namenode.FilesDeleted",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/Syncs_avg_time": {
+              "metric": "dfs.namenode.SyncsAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsBlocked": {
+              "metric": "jvm.JvmMetrics.ThreadsBlocked",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_num_ops": {
+              "metric": "rpc.rpc.RpcQueueTimeNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/blockReport_avg_time": {
+              "metric": "dfs.namenode.BlockReportAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/disk/part_max_used": {
+              "metric": "part_max_used",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/getFileInfo_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.GetFileInfoNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/getEditLogSize_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.GetEditLogManifestAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginSuccess_num_ops": {
+              "metric": "ugi.UgiMetrics.LoginSuccessNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/blockReceived_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.BlockReceivedAndDeletedAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/versionRequest_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.VersionRequestAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/cpu/cpu_aidle": {
+              "metric": "cpu_aidle",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/versionRequest_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.VersionRequestNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/addBlock_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.AddBlockNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/FilesCreated": {
+              "metric": "dfs.namenode.FilesCreated",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rename_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.RenameAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/setSafeMode_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.SetSafeModeNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapCommittedM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/setPermission_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.SetPermissionAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/FilesRenamed": {
+              "metric": "dfs.namenode.FilesRenamed",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/register_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.RegisterDatanodeAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/setReplication_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.SetReplicationNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/loginFailure_num_ops": {
+              "metric": "ugi.UgiMetrics.LoginFailureNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/GetBlockLocations": {
+              "metric": "dfs.namenode.GetBlockLocations",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/fsync_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.FsyncNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/create_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.CreateAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/PendingReplicationBlocks": {
+              "metric": "dfs.FSNamesystem.PendingReplicationBlocks",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/delete_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.DeleteAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/FileInfoOps": {
+              "metric": "dfs.namenode.FileInfoOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/sendHeartbeat_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.SendHeartbeatNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/DeleteFileOps": {
+              "metric": "dfs.namenode.DeleteFileOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_avg_time": {
+              "metric": "rpc.rpc.RpcProcessingTimeAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/blockReport_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.BlockReportNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/setSafeMode_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.SetSafeModeAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthenticationSuccesses": {
+              "metric": "rpc.rpc.RpcAuthenticationSuccesses",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/PendingDeletionBlocks": {
+              "metric": "dfs.FSNamesystem.PendingDeletionBlocks",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthenticationFailures": {
+              "metric": "rpc.rpc.RpcAuthenticationFailures",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/getEditLogSize_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.GetEditLogManifestNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemHeapCommittedM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/FilesInGetListingOps": {
+              "metric": "dfs.namenode.FilesInGetListingOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsRunnable": {
+              "metric": "jvm.JvmMetrics.ThreadsRunnable",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/complete_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.CompleteNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsNew": {
+              "metric": "jvm.JvmMetrics.ThreadsNew",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationFailures": {
+              "metric": "rpc.rpc.RpcAuthorizationFailures",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/Syncs_num_ops": {
+              "metric": "dfs.namenode.SyncsNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_avg_time": {
+              "metric": "rpc.rpc.RpcQueueTimeAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/blockReceived_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.BlockReceivedAndDeletedNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/setReplication_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.SetReplicationAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rollEditLog_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.RollEditLogAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/SentBytes": {
+              "metric": "rpc.rpc.SentBytes",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/FilesTotal": {
+              "metric": "dfs.FSNamesystem.FilesTotal",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logWarn": {
+              "metric": "jvm.JvmMetrics.LogWarn",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/ExcessBlocks": {
+              "metric": "dfs.FSNamesystem.ExcessBlocks",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTimedWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsTimedWaiting",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/gcCount": {
+              "metric": "jvm.JvmMetrics.GcCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/GcTimeMillisConcurrentMarkSweep": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisConcurrentMarkSweep",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/GcCountConcurrentMarkSweep": {
+              "metric": "jvm.JvmMetrics.GcCountConcurrentMarkSweep",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/ReceivedBytes": {
+              "metric": "rpc.rpc.ReceivedBytes",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/blockReport_num_ops": {
+              "metric": "dfs.namenode.BlockReportNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/SafemodeTime": {
+              "metric": "dfs.namenode.SafemodeTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/mkdirs_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.MkdirsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/NumOpenConnections": {
+              "metric": "rpc.rpc.NumOpenConnections",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemHeapUsedM",
+              "unit": "MB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/ScheduledReplicationBlocks": {
+              "metric": "dfs.FSNamesystem.ScheduledReplicationBlocks",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsWaiting",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/BlocksTotal": {
+              "metric": "dfs.FSNamesystem.BlocksTotal",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/gcTimeMillis": {
+              "metric": "jvm.JvmMetrics.GcTimeMillis",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/getBlockLocations_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.GetBlockLocationsAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/Transactions_num_ops": {
+              "metric": "dfs.namenode.TransactionsNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/create_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.CreateNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTerminated": {
+              "metric": "jvm.JvmMetrics.ThreadsTerminated",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/CapacityRemainingGB": {
+              "metric": "dfs.FSNamesystem.CapacityRemainingGB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/Transactions_avg_time": {
+              "metric": "dfs.namenode.TransactionsAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/boottime": {
+              "metric": "boottime",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/dfs/FSNamesystem/MissingBlocks": {
+              "metric": "dfs.FSNamesystem.MissingBlocks",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/callQueueLen": {
+              "metric": "rpc.rpc.CallQueueLength",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/delete_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.DeleteNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/CorruptBlocks": {
+              "metric": "dfs.FSNamesystem.CorruptBlocks",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rename_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.RenameNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/blockReport_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.BlockReportAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/mkdirs_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.MkdirsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logInfo": {
+              "metric": "jvm.JvmMetrics.LogInfo",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/fsImageLoadTime": {
+              "metric": "dfs.namenode.FsImageLoadTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/getListing_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.GetListingNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rollEditLog_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.RollEditLogNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/addBlock_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.AddBlockAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/setOwner_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.SetOwnerAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_num_ops": {
+              "metric": "rpc.rpc.RpcProcessingTimeNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/UnderReplicatedBlocks": {
+              "metric": "dfs.FSNamesystem.UnderReplicatedBlocks",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/sendHeartbeat_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.SendHeartbeatAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/CreateFileOps": {
+              "metric": "dfs.namenode.CreateFileOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logError": {
+              "metric": "jvm.JvmMetrics.LogError",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginFailure_avg_time": {
+              "metric": "ugi.UgiMetrics.LoginFailureAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/register_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.RegisterDatanodeNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationSuccesses": {
+              "metric": "rpc.rpc.RpcAuthorizationSuccesses",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/getListing_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.GetListingAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logFatal": {
+              "metric": "jvm.JvmMetrics.LogFatal",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/renewLease_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.RenewLeaseAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/ElapsedTime": {
+              "metric": "default.StartupProgress.ElapsedTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/LoadingEditsCount": {
+              "metric": "default.StartupProgress.LoadingEditsCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/LoadingEditsElapsedTime": {
+              "metric": "default.StartupProgress.LoadingEditsElapsedTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/LoadingEditsPercentComplete": {
+              "metric": "default.StartupProgress.LoadingEditsPercentComplete",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/LoadingEditsTotal": {
+              "metric": "default.StartupProgress.LoadingEditsTotal",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/LoadingFsImageCount": {
+              "metric": "default.StartupProgress.LoadingFsImageCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/LoadingFsImageElapsedTime": {
+              "metric": "default.StartupProgress.LoadingFsImageElapsedTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/LoadingFsImagePercentComplete": {
+              "metric": "default.StartupProgress.LoadingFsImagePercentComplete",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/LoadingFsImageTotal": {
+              "metric": "default.StartupProgress.LoadingFsImageTotal",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/PercentComplete": {
+              "metric": "default.StartupProgress.PercentComplete",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/SafeModeCount": {
+              "metric": "default.StartupProgress.SafeModeCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/SafeModeElapsedTime": {
+              "metric": "default.StartupProgress.SafeModeElapsedTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/SafeModePercentComplete": {
+              "metric": "default.StartupProgress.SafeModePercentComplete",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/SafeModeTotal": {
+              "metric": "default.StartupProgress.SafeModeTotal",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/SavingCheckpointCount": {
+              "metric": "default.StartupProgress.SavingCheckpointCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/SavingCheckpointElapsedTime": {
+              "metric": "default.StartupProgress.SavingCheckpointElapsedTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/SavingCheckpointPercentComplete": {
+              "metric": "default.StartupProgress.SavingCheckpointPercentComplete",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/default/StartupProgress/SavingCheckpointTotal": {
+              "metric": "default.StartupProgress.SavingCheckpointTotal",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/ExpiredHeartbeats": {
+              "metric": "dfs.FSNamesystem.ExpiredHeartbeats",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/LastCheckpointTime": {
+              "metric": "dfs.FSNamesystem.LastCheckpointTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/LastWrittenTransactionId": {
+              "metric": "dfs.FSNamesystem.LastWrittenTransactionId",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/MillisSinceLastLoadedEdits": {
+              "metric": "dfs.FSNamesystem.MillisSinceLastLoadedEdits",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/MissingReplOneBlocks": {
+              "metric": "dfs.FSNamesystem.MissingReplOneBlocks",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/PendingDataNodeMessageCount": {
+              "metric": "dfs.FSNamesystem.PendingDataNodeMessageCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/PostponedMisreplicatedBlocks": {
+              "metric": "dfs.FSNamesystem.PostponedMisreplicatedBlocks",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/Snapshots": {
+              "metric": "dfs.FSNamesystem.Snapshots",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/SnapshottableDirectories": {
+              "metric": "dfs.FSNamesystem.SnapshottableDirectories",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/StaleDataNodes": {
+              "metric": "dfs.FSNamesystem.StaleDataNodes",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/TotalFiles": {
+              "metric": "dfs.FSNamesystem.TotalFiles",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/TransactionsSinceLastCheckpoint": {
+              "metric": "dfs.FSNamesystem.TransactionsSinceLastCheckpoint",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/FSNamesystem/TransactionsSinceLastLogRoll": {
+              "metric": "dfs.FSNamesystem.TransactionsSinceLastLogRoll",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/AllowSnapshotOps": {
+              "metric": "dfs.namenode.AllowSnapshotOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/BlockReceivedAndDeletedOps": {
+              "metric": "dfs.namenode.BlockReceivedAndDeletedOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/CacheReportAvgTime": {
+              "metric": "dfs.namenode.CacheReportAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/CacheReportNumOps": {
+              "metric": "dfs.namenode.CacheReportNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/CreateSnapshotOps": {
+              "metric": "dfs.namenode.CreateSnapshotOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/CreateSymlinkOps": {
+              "metric": "dfs.namenode.CreateSymlinkOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/DeleteSnapshotOps": {
+              "metric": "dfs.namenode.DeleteSnapshotOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/DisallowSnapshotOps": {
+              "metric": "dfs.namenode.DisallowSnapshotOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/FilesTruncated": {
+              "metric": "dfs.namenode.FilesTruncated",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/GetAdditionalDatanodeOps": {
+              "metric": "dfs.namenode.GetAdditionalDatanodeOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/GetEditAvgTime": {
+              "metric": "dfs.namenode.GetEditAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/GetEditNumOps": {
+              "metric": "dfs.namenode.GetEditNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/GetImageAvgTime": {
+              "metric": "dfs.namenode.GetImageAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/GetImageNumOps": {
+              "metric": "dfs.namenode.GetImageNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/GetLinkTargetOps": {
+              "metric": "dfs.namenode.GetLinkTargetOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/ListSnapshottableDirOps": {
+              "metric": "dfs.namenode.ListSnapshottableDirOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/PutImageAvgTime": {
+              "metric": "dfs.namenode.PutImageAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/PutImageNumOps": {
+              "metric": "dfs.namenode.PutImageNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/RenameSnapshotOps": {
+              "metric": "dfs.namenode.RenameSnapshotOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/SnapshotDiffReportOps": {
+              "metric": "dfs.namenode.SnapshotDiffReportOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/StorageBlockReportOps": {
+              "metric": "dfs.namenode.StorageBlockReportOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/namenode/TransactionsBatchedInSync": {
+              "metric": "dfs.namenode.TransactionsBatchedInSync",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcCountConcurrentMarkSweep": {
+              "metric": "jvm.JvmMetrics.GcCountConcurrentMarkSweep",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcCountParNew": {
+              "metric": "jvm.JvmMetrics.GcCountParNew",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcNumInfoThresholdExceeded": {
+              "metric": "jvm.JvmMetrics.GcNumInfoThresholdExceeded",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcNumWarnThresholdExceeded": {
+              "metric": "jvm.JvmMetrics.GcNumWarnThresholdExceeded",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcTimeMillisConcurrentMarkSweep": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisConcurrentMarkSweep",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcTimeMillisParNew": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisParNew",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcTotalExtraSleepTime": {
+              "metric": "jvm.JvmMetrics.GcTotalExtraSleepTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemHeapMaxM": {
+              "metric": "jvm.JvmMetrics.MemHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemMaxM": {
+              "metric": "jvm.JvmMetrics.MemMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemNonHeapMaxM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/DroppedPubAll": {
+              "metric": "metricssystem.MetricsSystem.DroppedPubAll",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumActiveSinks": {
+              "metric": "metricssystem.MetricsSystem.NumActiveSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumActiveSources": {
+              "metric": "metricssystem.MetricsSystem.NumActiveSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumAllSinks": {
+              "metric": "metricssystem.MetricsSystem.NumAllSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumAllSources": {
+              "metric": "metricssystem.MetricsSystem.NumAllSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/PublishAvgTime": {
+              "metric": "metricssystem.MetricsSystem.PublishAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/PublishNumOps": {
+              "metric": "metricssystem.MetricsSystem.PublishNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineAvgTime": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineDropped": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineDropped",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineNumOps": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineQsize": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineQsize",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/SnapshotAvgTime": {
+              "metric": "metricssystem.MetricsSystem.SnapshotAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/SnapshotNumOps": {
+              "metric": "metricssystem.MetricsSystem.SnapshotNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RetryCache/NameNodeRetryCache/CacheCleared": {
+              "metric": "rpc.RetryCache.NameNodeRetryCache.CacheCleared",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RetryCache/NameNodeRetryCache/CacheHit": {
+              "metric": "rpc.RetryCache.NameNodeRetryCache.CacheHit",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RetryCache/NameNodeRetryCache/CacheUpdated": {
+              "metric": "rpc.RetryCache.NameNodeRetryCache.CacheUpdated",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetServerDefaultsAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.GetServerDefaultsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetServerDefaultsNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.GetServerDefaultsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetTransactionIdAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.GetTransactionIdAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetTransactionIdNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.GetTransactionIdNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/IOExceptionAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.IOExceptionAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/IOExceptionNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.IOExceptionNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/PathIsNotEmptyDirectoryExceptionAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.PathIsNotEmptyDirectoryExceptionAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/PathIsNotEmptyDirectoryExceptionNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.PathIsNotEmptyDirectoryExceptionNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/RecoverLeaseAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.RecoverLeaseAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/RecoverLeaseNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.RecoverLeaseNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/Rename2AvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.Rename2AvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/Rename2NumOps": {
+              "metric": "rpcdetailed.rpcdetailed.Rename2NumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/SetTimesAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.SetTimesAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/SetTimesNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.SetTimesNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/GetGroupsAvgTime": {
+              "metric": "ugi.UgiMetrics.GetGroupsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/GetGroupsNumOps": {
+              "metric": "ugi.UgiMetrics.GetGroupsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            }
+          }
+        }
+      },
+      {
+        "type": "jmx",
+        "metrics": {
+          "default": {
+            "metrics/dfs/namenode/Used": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.Used",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/TotalLoad": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.TotalLoad",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/TransactionsSinceLastCheckpoint": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.TransactionsSinceLastCheckpoint",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/TransactionsSinceLastLogRoll": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.TransactionsSinceLastLogRoll",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/ExpiredHeartbeats": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.ExpiredHeartbeats",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/LastCheckpointTime": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.LastCheckpointTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/LastWrittenTransactionId": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.LastWrittenTransactionId",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/MillisSinceLastLoadedEdits": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.MillisSinceLastLoadedEdits",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/MissingReplOneBlocks": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.MissingReplOneBlocks",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/PendingDataNodeMessageCount": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.PendingDataNodeMessageCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/PostponedMisreplicatedBlocks": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.PostponedMisreplicatedBlocks",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/Snapshots": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.Snapshots",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/SnapshottableDirectories": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.SnapshottableDirectories",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/StaleDataNodes": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.StaleDataNodes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/TotalFiles": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.TotalFiles",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memMaxM": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.MemMaxM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/BlockCapacity": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.BlockCapacity",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/TotalFiles": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.TotalFiles",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/GetListingOps": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeActivity.GetListingOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/HostName": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeActivity.tag.Hostname",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/runtime/StartTime": {
+              "metric": "java.lang:type=Runtime.StartTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/UpgradeFinalized": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.UpgradeFinalized",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getProtocolVersion_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.VersionRequestNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/fsync_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.FsyncAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginSuccess_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=UgiMetrics.LoginSuccessAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/renewLease_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.renewLease_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/CapacityRemaining": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.CapacityRemaining",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getFileInfo_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.GetFileInfoAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/PercentRemaining": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.PercentRemaining",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memNonHeapUsedM": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.MemNonHeapUsedM",
+              "unit": "MB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/complete_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.CompleteAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/CapacityTotalGB": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.CapacityTotalGB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getBlockLocations_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.GetBlockLocationsNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/CapacityUsedGB": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.CapacityUsedGB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/AddBlockOps": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeActivity.AddBlockOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/Syncs_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeActivity.SyncsAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsBlocked": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.ThreadsBlocked",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/PercentUsed": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.PercentUsed",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcQueueTime_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.RpcQueueTimeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/blockReport_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeActivity.BlockReportAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/HeapMemoryMax": {
+              "metric": "java.lang:type=Memory.HeapMemoryUsage[max]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/HeapMemoryUsed": {
+              "metric": "java.lang:type=Memory.HeapMemoryUsage[used]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getFileInfo_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.GetFileInfoNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getEditLogSize_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.GetEditLogManifestAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginSuccess_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=UgiMetrics.LoginSuccessNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/blockReceived_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.BlockReceivedAndDeletedAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/addBlock_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.AddBlockNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/FilesCreated": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeActivity.FilesCreated",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/Safemode": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.Safemode",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/CapacityUsed": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.CapacityUsed",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/DecomNodes": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.DecomNodes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memNonHeapCommittedM": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.MemNonHeapCommittedM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/Free": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.Free",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/Total": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.Total",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/HAState": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.tag#HAState",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/GetBlockLocations": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeActivity.GetBlockLocations",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginFailure_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=UgiMetrics.LoginFailureNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/fsync_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.FsyncNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/NonHeapMemoryMax": {
+              "metric": "java.lang:type=Memory.NonHeapMemoryUsage[max]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/create_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.CreateAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/PendingReplicationBlocks": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.PendingReplicationBlocks",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/FileInfoOps": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeActivity.FileInfoOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/sendHeartbeat_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.SendHeartbeatNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcProcessingTime_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.RpcProcessingTimeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/blockReport_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.BlockReportNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthenticationSuccesses": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.RpcAuthenticationSuccesses",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/PendingDeletionBlocks": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.PendingDeletionBlocks",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthenticationFailures": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.RpcAuthenticationFailures",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memHeapCommittedM": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.MemHeapCommittedM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getEditLogSize_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.GetEditLogManifestNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/NonHeapMemoryUsed": {
+              "metric": "java.lang:type=Memory.NonHeapMemoryUsage[used]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/FilesInGetListingOps": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeActivity.FilesInGetListingOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsRunnable": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.ThreadsRunnable",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/CapacityTotal": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.CapacityTotal",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/LiveNodes": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.LiveNodes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/complete_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.CompleteNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsNew": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.ThreadsNew",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/rollFsImage_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.rollFsImage_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthorizationFailures": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.RpcAuthorizationFailures",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/Syncs_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeActivity.SyncsNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcQueueTime_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.RpcQueueTimeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/blockReceived_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.BlockReceivedAndDeletedNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/rollEditLog_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.RollEditLogAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/DeadNodes": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.DeadNodes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/SentBytes": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.SentBytes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/FilesTotal": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.FilesTotal",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/Version": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.Version",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logWarn": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.LogWarn",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/ExcessBlocks": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.ExcessBlocks",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsTimedWaiting": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.ThreadsTimedWaiting",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/gcCount": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.GcCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/ReceivedBytes": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.ReceivedBytes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/blockReport_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeActivity.BlockReportNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/rollFsImage_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.rollFsImage_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/NumOpenConnections": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.NumOpenConnections",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memHeapUsedM": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.MemHeapUsedM",
+              "unit": "MB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/ScheduledReplicationBlocks": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.ScheduledReplicationBlocks",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsWaiting": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.ThreadsWaiting",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/BlocksTotal": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.BlocksTotal",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/gcTimeMillis": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.GcTimeMillis",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getBlockLocations_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.GetBlockLocationsAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/Transactions_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeActivity.TransactionsNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/create_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.CreateNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsTerminated": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.ThreadsTerminated",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/CapacityRemainingGB": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.CapacityRemainingGB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/Transactions_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeActivity.TransactionsAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/MissingBlocks": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.MissingBlocks",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/Threads": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.Threads",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/callQueueLen": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.CallQueueLength",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/CorruptBlocks": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.CorruptBlocks",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/blockReport_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.BlockReportAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logInfo": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.LogInfo",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/NameDirStatuses": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.NameDirStatuses",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getListing_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.GetListingNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/rollEditLog_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.RollEditLogNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/addBlock_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.AddBlockAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcProcessingTime_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.RpcProcessingTimeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/UnderReplicatedBlocks": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.UnderReplicatedBlocks",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/sendHeartbeat_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.SendHeartbeatAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/CreateFileOps": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeActivity.CreateFileOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logError": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.LogError",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginFailure_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=UgiMetrics.LoginFailureAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getProtocolVersion_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.VersionRequestAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthorizationSuccesses": {
+              "metric": "Hadoop:service=NameNode,name=RpcActivity.RpcAuthorizationSuccesses",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getListing_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.GetListingAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logFatal": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.LogFatal",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/NonDfsUsedSpace": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.NonDfsUsedSpace",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/renewLease_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=RpcDetailedActivity.renewLease_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/JournalTransactionInfo": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.JournalTransactionInfo",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/CapacityNonDFSUsed": {
+              "metric": "Hadoop:service=NameNode,name=FSNamesystem.CapacityUsedNonDFS",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/TotalBlocks": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.TotalBlocks",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/GcTimeMillisConcurrentMarkSweep": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.GcTimeMillisConcurrentMarkSweep",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/GcCountConcurrentMarkSweep": {
+              "metric": "Hadoop:service=NameNode,name=JvmMetrics.GcCountConcurrentMarkSweep",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/namenode/CorruptFiles": {
+              "metric": "Hadoop:service=NameNode,name=NameNodeInfo.CorruptFiles",
+              "pointInTime": true,
+              "temporal": false
+            }
+          }
+        }
+      }
+    ]
+  },
+  "DATANODE": {
+    "Component": [
+      {
+        "type": "ganglia",
+        "metrics": {
+          "default": {
+            "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_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/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/disk/read_count":{
+              "metric":"read_count",
+              "pointInTime":true,
+              "temporal":true
+            },
+            "metrics/disk/write_count":{
+              "metric":"write_count",
+              "pointInTime":true,
+              "temporal":true
+            },
+            "metrics/disk/read_bytes":{
+              "metric":"read_bytes",
+              "pointInTime":true,
+              "temporal":true
+            },
+            "metrics/disk/write_bytes":{
+              "metric":"write_bytes",
+              "pointInTime":true,
+              "temporal":true
+            },
+            "metrics/disk/read_time":{
+              "metric":"read_time",
+              "pointInTime":true,
+              "temporal":true
+            },
+            "metrics/disk/write_time":{
+              "metric":"write_time",
+              "pointInTime":true,
+              "temporal":true
+            },
+            "metrics/dfs/datanode/heartBeats_avg_time": {
+              "metric": "dfs.datanode.HeartbeatsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/NumFailedVolumes": {
+              "metric": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.NumFailedVolumes",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/DfsUsed": {
+              "metric": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.DfsUsed",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/Capacity": {
+              "metric": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Capacity",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/loginSuccess_avg_time": {
+              "metric": "ugi.UgiMetrics.LoginSuccessAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/writes_from_remote_client": {
+              "metric": "dfs.datanode.WritesFromRemoteClient",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/blocks_replicated": {
+              "metric": "dfs.datanode.BlocksReplicated",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapUsedM",
+              "unit": "MB",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/blocks_get_local_pathinfo": {
+              "metric": "dfs.datanode.BlocksGetLocalPathInfo",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/disk/part_max_used": {
+              "metric": "part_max_used",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/readBlockOp_num_ops": {
+              "metric": "dfs.datanode.ReadBlockOpNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/writeBlockOp_num_ops": {
+              "metric": "dfs.datanode.WriteBlockOpNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/loginSuccess_num_ops": {
+              "metric": "ugi.UgiMetrics.LoginSuccessNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/blockChecksumOp_num_ops": {
+              "metric": "dfs.datanode.BlockChecksumOpNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapCommittedM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/loginFailure_num_ops": {
+              "metric": "ugi.UgiMetrics.LoginFailureNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/reads_from_local_client": {
+              "metric": "dfs.datanode.ReadsFromLocalClient",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/blockReports_num_ops": {
+              "metric": "dfs.datanode.BlockReportsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthenticationSuccesses": {
+              "metric": "rpc.rpc.RpcAuthenticationSuccesses",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemHeapCommittedM",
+              "unit": "MB",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsRunnable": {
+              "metric": "jvm.JvmMetrics.ThreadsRunnable",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsNew": {
+              "metric": "jvm.JvmMetrics.ThreadsNew",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationFailures": {
+              "metric": "rpc.rpc.RpcAuthorizationFailures",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_avg_time": {
+              "metric": "rpc.rpc.RpcQueueTimeAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/ReceivedBytes": {
+              "metric": "rpc.rpc.ReceivedBytes",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/NumOpenConnections": {
+              "metric": "rpc.rpc.NumOpenConnections",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcTimeMillis": {
+              "metric": "jvm.JvmMetrics.GcTimeMillis",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTerminated": {
+              "metric": "jvm.JvmMetrics.ThreadsTerminated",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/blocks_read": {
+              "metric": "dfs.datanode.BlocksRead",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/boottime": {
+              "metric": "boottime",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/rpc/callQueueLen": {
+              "metric": "rpc.rpc.CallQueueLength",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/blocks_removed": {
+              "metric": "dfs.datanode.BlocksRemoved",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/readBlockOp_avg_time": {
+              "metric": "dfs.datanode.ReadBlockOpAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_num_ops": {
+              "metric": "rpc.rpc.RpcProcessingTimeNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/blockChecksumOp_avg_time": {
+              "metric": "dfs.datanode.BlockChecksumOpAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/copyBlockOp_avg_time": {
+              "metric": "dfs.datanode.CopyBlockOpAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logError": {
+              "metric": "jvm.JvmMetrics.LogError",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/writeBlockOp_avg_time": {
+              "metric": "dfs.datanode.WriteBlockOpAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsBlocked": {
+              "metric": "jvm.JvmMetrics.ThreadsBlocked",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_num_ops": {
+              "metric": "rpc.rpc.RpcQueueTimeNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/writes_from_local_client": {
+              "metric": "dfs.datanode.WritesFromLocalClient",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/heartBeats_num_ops": {
+              "metric": "dfs.datanode.HeartbeatsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/replaceBlockOp_num_ops": {
+              "metric": "dfs.datanode.ReplaceBlockOpNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/copyBlockOp_num_ops": {
+              "metric": "dfs.datanode.CopyBlockOpNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/reads_from_remote_client": {
+              "metric": "dfs.datanode.ReadsFromRemoteClient",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/bytes_read": {
+              "metric": "dfs.datanode.BytesRead",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/blocks_verified": {
+              "metric": "dfs.datanode.BlocksVerified",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/cpu/cpu_speed": {
+              "metric": "cpu_speed",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_avg_time": {
+              "metric": "rpc.rpc.RpcProcessingTimeAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthenticationFailures": {
+              "metric": "rpc.rpc.RpcAuthenticationFailures",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/bytes_written": {
+              "metric": "dfs.datanode.BytesWritten",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/blockReports_avg_time": {
+              "metric": "dfs.datanode.BlockReportsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/replaceBlockOp_avg_time": {
+              "metric": "dfs.datanode.ReplaceBlockOpAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/SentBytes": {
+              "metric": "rpc.rpc.SentBytes",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logWarn": {
+              "metric": "jvm.JvmMetrics.LogWarn",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTimedWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsTimedWaiting",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcCount": {
+              "metric": "jvm.JvmMetrics.GcCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemHeapUsedM",
+              "unit": "MB",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsWaiting",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/block_verification_failures": {
+              "metric": "dfs.datanode.BlockVerificationFailures",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logInfo": {
+              "metric": "jvm.JvmMetrics.LogInfo",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/blocks_written": {
+              "metric": "dfs.datanode.BlocksWritten",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/loginFailure_avg_time": {
+              "metric": "ugi.UgiMetrics.LoginFailureAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationSuccesses": {
+              "metric": "rpc.rpc.RpcAuthorizationSuccesses",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logFatal": {
+              "metric": "jvm.JvmMetrics.LogFatal",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/FSDatasetState/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl/CacheCapacity": {
+              "metric": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.CacheCapacity",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/FSDatasetState/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl/CacheUsed": {
+              "metric": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.CacheUsed",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/FSDatasetState/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl/EstimatedCapacityLostTotal": {
+              "metric": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.EstimatedCapacityLostTotal",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/FSDatasetState/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl/LastVolumeFailureDate": {
+              "metric": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.LastVolumeFailureDate",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/FSDatasetState/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl/NumBlocksCached": {
+              "metric": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.NumBlocksCached",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/FSDatasetState/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl/NumBlocksFailedToCache": {
+              "metric": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.NumBlocksFailedToCache",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/FSDatasetState/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl/NumBlocksFailedToUnCache": {
+              "metric": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.NumBlocksFailedToUnCache",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/FSDatasetState/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl/Remaining": {
+              "metric": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Remaining",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/BlocksCached": {
+              "metric": "dfs.datanode.BlocksCached",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/BlocksUncached": {
+              "metric": "dfs.datanode.BlocksUncached",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/CacheReportsAvgTime": {
+              "metric": "dfs.datanode.CacheReportsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/CacheReportsNumOps": {
+              "metric": "dfs.datanode.CacheReportsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/DatanodeNetworkErrors": {
+              "metric": "dfs.datanode.DatanodeNetworkErrors",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/FlushNanosAvgTime": {
+              "metric": "dfs.datanode.FlushNanosAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/FlushNanosNumOps": {
+              "metric": "dfs.datanode.FlushNanosNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/FsyncCount": {
+              "metric": "dfs.datanode.FsyncCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/FsyncNanosAvgTime": {
+              "metric": "dfs.datanode.FsyncNanosAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/FsyncNanosNumOps": {
+              "metric": "dfs.datanode.FsyncNanosNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/IncrementalBlockReportsAvgTime": {
+              "metric": "dfs.datanode.IncrementalBlockReportsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/IncrementalBlockReportsNumOps": {
+              "metric": "dfs.datanode.IncrementalBlockReportsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/PacketAckRoundTripTimeNanosAvgTime": {
+              "metric": "dfs.datanode.PacketAckRoundTripTimeNanosAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/PacketAckRoundTripTimeNanosNumOps": {
+              "metric": "dfs.datanode.PacketAckRoundTripTimeNanosNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBlocksDeletedBeforeLazyPersisted": {
+              "metric": "dfs.datanode.RamDiskBlocksDeletedBeforeLazyPersisted",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBlocksEvicted": {
+              "metric": "dfs.datanode.RamDiskBlocksEvicted",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBlocksEvictedWithoutRead": {
+              "metric": "dfs.datanode.RamDiskBlocksEvictedWithoutRead",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBlocksEvictionWindowMsAvgTime": {
+              "metric": "dfs.datanode.RamDiskBlocksEvictionWindowMsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBlocksEvictionWindowMsNumOps": {
+              "metric": "dfs.datanode.RamDiskBlocksEvictionWindowMsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBlocksLazyPersistWindowMsAvgTime": {
+              "metric": "dfs.datanode.RamDiskBlocksLazyPersistWindowMsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBlocksLazyPersistWindowMsNumOps": {
+              "metric": "dfs.datanode.RamDiskBlocksLazyPersistWindowMsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBlocksLazyPersisted": {
+              "metric": "dfs.datanode.RamDiskBlocksLazyPersisted",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBlocksReadHits": {
+              "metric": "dfs.datanode.RamDiskBlocksReadHits",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBlocksWrite": {
+              "metric": "dfs.datanode.RamDiskBlocksWrite",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBlocksWriteFallback": {
+              "metric": "dfs.datanode.RamDiskBlocksWriteFallback",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBytesLazyPersisted": {
+              "metric": "dfs.datanode.RamDiskBytesLazyPersisted",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBytesWrite": {
+              "metric": "dfs.datanode.RamDiskBytesWrite",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RemoteBytesRead": {
+              "metric": "dfs.datanode.RemoteBytesRead",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RemoteBytesWritten": {
+              "metric": "dfs.datanode.RemoteBytesWritten",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/SendDataPacketBlockedOnNetworkNanosAvgTime": {
+              "metric": "dfs.datanode.SendDataPacketBlockedOnNetworkNanosAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/SendDataPacketBlockedOnNetworkNanosNumOps": {
+              "metric": "dfs.datanode.SendDataPacketBlockedOnNetworkNanosNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/SendDataPacketTransferNanosAvgTime": {
+              "metric": "dfs.datanode.SendDataPacketTransferNanosAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/SendDataPacketTransferNanosNumOps": {
+              "metric": "dfs.datanode.SendDataPacketTransferNanosNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/TotalReadTime": {
+              "metric": "dfs.datanode.TotalReadTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/TotalWriteTime": {
+              "metric": "dfs.datanode.TotalWriteTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/VolumeFailures": {
+              "metric": "dfs.datanode.VolumeFailures",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcCountConcurrentMarkSweep": {
+              "metric": "jvm.JvmMetrics.GcCountConcurrentMarkSweep",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcCountParNew": {
+              "metric": "jvm.JvmMetrics.GcCountParNew",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcNumInfoThresholdExceeded": {
+              "metric": "jvm.JvmMetrics.GcNumInfoThresholdExceeded",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcNumWarnThresholdExceeded": {
+              "metric": "jvm.JvmMetrics.GcNumWarnThresholdExceeded",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcTimeMillisConcurrentMarkSweep": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisConcurrentMarkSweep",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcTimeMillisParNew": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisParNew",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcTotalExtraSleepTime": {
+              "metric": "jvm.JvmMetrics.GcTotalExtraSleepTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemHeapMaxM": {
+              "metric": "jvm.JvmMetrics.MemHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemMaxM": {
+              "metric": "jvm.JvmMetrics.MemMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemNonHeapMaxM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/DroppedPubAll": {
+              "metric": "metricssystem.MetricsSystem.DroppedPubAll",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumActiveSinks": {
+              "metric": "metricssystem.MetricsSystem.NumActiveSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumActiveSources": {
+              "metric": "metricssystem.MetricsSystem.NumActiveSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumAllSinks": {
+              "metric": "metricssystem.MetricsSystem.NumAllSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumAllSources": {
+              "metric": "metricssystem.MetricsSystem.NumAllSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/PublishAvgTime": {
+              "metric": "metricssystem.MetricsSystem.PublishAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/PublishNumOps": {
+              "metric": "metricssystem.MetricsSystem.PublishNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineAvgTime": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineDropped": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineDropped",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineNumOps": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineQsize": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineQsize",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/SnapshotAvgTime": {
+              "metric": "metricssystem.MetricsSystem.SnapshotAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/SnapshotNumOps": {
+              "metric": "metricssystem.MetricsSystem.SnapshotNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/GetGroupsAvgTime": {
+              "metric": "ugi.UgiMetrics.GetGroupsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/GetGroupsNumOps": {
+              "metric": "ugi.UgiMetrics.GetGroupsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            }
+          }
+        }
+      }
+    ],
+    "HostComponent": [
+      {
+        "type": "ganglia",
+        "metrics": {
+          "default": {
+            "metrics/cpu/cpu_idle":{
+              "metric":"cpu_idle",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/cpu/cpu_nice":{
+              "metric":"cpu_nice",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/cpu/cpu_system":{
+              "metric":"cpu_system",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/cpu/cpu_user":{
+              "metric":"cpu_user",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/cpu/cpu_wio":{
+              "metric":"cpu_wio",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/disk_free":{
+              "metric":"disk_free",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/disk_total":{
+              "metric":"disk_total",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/load/load_fifteen":{
+              "metric":"load_fifteen",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/load/load_five":{
+              "metric":"load_five",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/load/load_one":{
+              "metric":"load_one",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_buffers":{
+              "metric":"mem_buffers",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_cached":{
+              "metric":"mem_cached",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_free":{
+              "metric":"mem_free",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_shared":{
+              "metric":"mem_shared",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_total":{
+              "metric":"mem_total",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/swap_free":{
+              "metric":"swap_free",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/swap_total":{
+              "metric":"swap_total",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/network/bytes_in":{
+              "metric":"bytes_in",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/network/bytes_out":{
+              "metric":"bytes_out",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/network/pkts_in":{
+              "metric":"pkts_in",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/network/pkts_out":{
+              "metric":"pkts_out",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/process/proc_run":{
+              "metric":"proc_run",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/process/proc_total":{
+              "metric":"proc_total",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/read_count":{
+              "metric":"read_count",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/write_count":{
+              "metric":"write_count",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/read_bytes":{
+              "metric":"read_bytes",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/write_bytes":{
+              "metric":"write_bytes",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/read_time":{
+              "metric":"read_time",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/write_time":{
+              "metric":"write_time",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/dfs/datanode/heartBeats_avg_time": {
+              "metric": "dfs.datanode.HeartbeatsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/NumFailedVolumes": {
+              "metric": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.NumFailedVolumes",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/DfsUsed": {
+              "metric": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.DfsUsed",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/Capacity": {
+              "metric": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Capacity",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/loginSuccess_avg_time": {
+              "metric": "ugi.UgiMetrics.LoginSuccessAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/writes_from_remote_client": {
+              "metric": "dfs.datanode.WritesFromRemoteClient",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/blocks_replicated": {
+              "metric": "dfs.datanode.BlocksReplicated",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapUsedM",
+              "unit": "MB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/blocks_get_local_pathinfo": {
+              "metric": "dfs.datanode.BlocksGetLocalPathInfo",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/disk/part_max_used": {
+              "metric": "part_max_used",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/readBlockOp_num_ops": {
+              "metric": "dfs.datanode.ReadBlockOpNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/writeBlockOp_num_ops": {
+              "metric": "dfs.datanode.WriteBlockOpNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/loginSuccess_num_ops": {
+              "metric": "ugi.UgiMetrics.LoginSuccessNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/blockChecksumOp_num_ops": {
+              "metric": "dfs.datanode.BlockChecksumOpNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapCommittedM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginFailure_num_ops": {
+              "metric": "ugi.UgiMetrics.LoginFailureNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/reads_from_local_client": {
+              "metric": "dfs.datanode.ReadsFromLocalClient",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/blockReports_num_ops": {
+              "metric": "dfs.datanode.BlockReportsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthenticationSuccesses": {
+              "metric": "rpc.rpc.RpcAuthenticationSuccesses",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemHeapCommittedM",
+              "unit": "MB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsRunnable": {
+              "metric": "jvm.JvmMetrics.ThreadsRunnable",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsNew": {
+              "metric": "jvm.JvmMetrics.ThreadsNew",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationFailures": {
+              "metric": "rpc.rpc.RpcAuthorizationFailures",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_avg_time": {
+              "metric": "rpc.rpc.RpcQueueTimeAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/ReceivedBytes": {
+              "metric": "rpc.rpc.ReceivedBytes",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/NumOpenConnections": {
+              "metric": "rpc.rpc.NumOpenConnections",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/gcTimeMillis": {
+              "metric": "jvm.JvmMetrics.GcTimeMillis",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTerminated": {
+              "metric": "jvm.JvmMetrics.ThreadsTerminated",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/blocks_read": {
+              "metric": "dfs.datanode.BlocksRead",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/boottime": {
+              "metric": "boottime",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/rpc/callQueueLen": {
+              "metric": "rpc.rpc.CallQueueLength",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/blocks_removed": {
+              "metric": "dfs.datanode.BlocksRemoved",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/readBlockOp_avg_time": {
+              "metric": "dfs.datanode.ReadBlockOpAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_num_ops": {
+              "metric": "rpc.rpc.RpcProcessingTimeNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/blockChecksumOp_avg_time": {
+              "metric": "dfs.datanode.BlockChecksumOpAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/copyBlockOp_avg_time": {
+              "metric": "dfs.datanode.CopyBlockOpAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logError": {
+              "metric": "jvm.JvmMetrics.LogError",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/writeBlockOp_avg_time": {
+              "metric": "dfs.datanode.WriteBlockOpAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsBlocked": {
+              "metric": "jvm.JvmMetrics.ThreadsBlocked",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_num_ops": {
+              "metric": "rpc.rpc.RpcQueueTimeNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/writes_from_local_client": {
+              "metric": "dfs.datanode.WritesFromLocalClient",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/heartBeats_num_ops": {
+              "metric": "dfs.datanode.HeartbeatsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/replaceBlockOp_num_ops": {
+              "metric": "dfs.datanode.ReplaceBlockOpNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/copyBlockOp_num_ops": {
+              "metric": "dfs.datanode.CopyBlockOpNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/reads_from_remote_client": {
+              "metric": "dfs.datanode.ReadsFromRemoteClient",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/bytes_read": {
+              "metric": "dfs.datanode.BytesRead",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/blocks_verified": {
+              "metric": "dfs.datanode.BlocksVerified",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/cpu/cpu_speed": {
+              "metric": "cpu_speed",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_avg_time": {
+              "metric": "rpc.rpc.RpcProcessingTimeAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthenticationFailures": {
+              "metric": "rpc.rpc.RpcAuthenticationFailures",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/bytes_written": {
+              "metric": "dfs.datanode.BytesWritten",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/blockReports_avg_time": {
+              "metric": "dfs.datanode.BlockReportsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/replaceBlockOp_avg_time": {
+              "metric": "dfs.datanode.ReplaceBlockOpAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/SentBytes": {
+              "metric": "rpc.rpc.SentBytes",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logWarn": {
+              "metric": "jvm.JvmMetrics.LogWarn",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTimedWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsTimedWaiting",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/gcCount": {
+              "metric": "jvm.JvmMetrics.GcCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemHeapUsedM",
+              "unit": "MB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsWaiting",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/block_verification_failures": {
+              "metric": "dfs.datanode.BlockVerificationFailures",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logInfo": {
+              "metric": "jvm.JvmMetrics.LogInfo",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/blocks_written": {
+              "metric": "dfs.datanode.BlocksWritten",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/loginFailure_avg_time": {
+              "metric": "ugi.UgiMetrics.LoginFailureAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationSuccesses": {
+              "metric": "rpc.rpc.RpcAuthorizationSuccesses",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logFatal": {
+              "metric": "jvm.JvmMetrics.LogFatal",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/FSDatasetState/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl/CacheCapacity": {
+              "metric": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.CacheCapacity",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/FSDatasetState/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl/CacheUsed": {
+              "metric": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.CacheUsed",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/FSDatasetState/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl/EstimatedCapacityLostTotal": {
+              "metric": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.EstimatedCapacityLostTotal",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/FSDatasetState/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl/LastVolumeFailureDate": {
+              "metric": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.LastVolumeFailureDate",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/FSDatasetState/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl/NumBlocksCached": {
+              "metric": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.NumBlocksCached",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/FSDatasetState/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl/NumBlocksFailedToCache": {
+              "metric": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.NumBlocksFailedToCache",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/FSDatasetState/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl/NumBlocksFailedToUnCache": {
+              "metric": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.NumBlocksFailedToUnCache",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/FSDatasetState/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl/Remaining": {
+              "metric": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Remaining",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/BlocksCached": {
+              "metric": "dfs.datanode.BlocksCached",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/BlocksUncached": {
+              "metric": "dfs.datanode.BlocksUncached",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/CacheReportsAvgTime": {
+              "metric": "dfs.datanode.CacheReportsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/CacheReportsNumOps": {
+              "metric": "dfs.datanode.CacheReportsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/DatanodeNetworkErrors": {
+              "metric": "dfs.datanode.DatanodeNetworkErrors",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/FlushNanosAvgTime": {
+              "metric": "dfs.datanode.FlushNanosAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/FlushNanosNumOps": {
+              "metric": "dfs.datanode.FlushNanosNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/FsyncCount": {
+              "metric": "dfs.datanode.FsyncCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/FsyncNanosAvgTime": {
+              "metric": "dfs.datanode.FsyncNanosAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/FsyncNanosNumOps": {
+              "metric": "dfs.datanode.FsyncNanosNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/IncrementalBlockReportsAvgTime": {
+              "metric": "dfs.datanode.IncrementalBlockReportsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/IncrementalBlockReportsNumOps": {
+              "metric": "dfs.datanode.IncrementalBlockReportsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/PacketAckRoundTripTimeNanosAvgTime": {
+              "metric": "dfs.datanode.PacketAckRoundTripTimeNanosAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/PacketAckRoundTripTimeNanosNumOps": {
+              "metric": "dfs.datanode.PacketAckRoundTripTimeNanosNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBlocksDeletedBeforeLazyPersisted": {
+              "metric": "dfs.datanode.RamDiskBlocksDeletedBeforeLazyPersisted",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBlocksEvicted": {
+              "metric": "dfs.datanode.RamDiskBlocksEvicted",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBlocksEvictedWithoutRead": {
+              "metric": "dfs.datanode.RamDiskBlocksEvictedWithoutRead",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBlocksEvictionWindowMsAvgTime": {
+              "metric": "dfs.datanode.RamDiskBlocksEvictionWindowMsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBlocksEvictionWindowMsNumOps": {
+              "metric": "dfs.datanode.RamDiskBlocksEvictionWindowMsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBlocksLazyPersistWindowMsAvgTime": {
+              "metric": "dfs.datanode.RamDiskBlocksLazyPersistWindowMsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBlocksLazyPersistWindowMsNumOps": {
+              "metric": "dfs.datanode.RamDiskBlocksLazyPersistWindowMsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBlocksLazyPersisted": {
+              "metric": "dfs.datanode.RamDiskBlocksLazyPersisted",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBlocksReadHits": {
+              "metric": "dfs.datanode.RamDiskBlocksReadHits",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBlocksWrite": {
+              "metric": "dfs.datanode.RamDiskBlocksWrite",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBlocksWriteFallback": {
+              "metric": "dfs.datanode.RamDiskBlocksWriteFallback",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBytesLazyPersisted": {
+              "metric": "dfs.datanode.RamDiskBytesLazyPersisted",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RamDiskBytesWrite": {
+              "metric": "dfs.datanode.RamDiskBytesWrite",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RemoteBytesRead": {
+              "metric": "dfs.datanode.RemoteBytesRead",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/RemoteBytesWritten": {
+              "metric": "dfs.datanode.RemoteBytesWritten",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/SendDataPacketBlockedOnNetworkNanosAvgTime": {
+              "metric": "dfs.datanode.SendDataPacketBlockedOnNetworkNanosAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/SendDataPacketBlockedOnNetworkNanosNumOps": {
+              "metric": "dfs.datanode.SendDataPacketBlockedOnNetworkNanosNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/SendDataPacketTransferNanosAvgTime": {
+              "metric": "dfs.datanode.SendDataPacketTransferNanosAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/SendDataPacketTransferNanosNumOps": {
+              "metric": "dfs.datanode.SendDataPacketTransferNanosNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/TotalReadTime": {
+              "metric": "dfs.datanode.TotalReadTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/TotalWriteTime": {
+              "metric": "dfs.datanode.TotalWriteTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/datanode/VolumeFailures": {
+              "metric": "dfs.datanode.VolumeFailures",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcCountConcurrentMarkSweep": {
+              "metric": "jvm.JvmMetrics.GcCountConcurrentMarkSweep",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcCountParNew": {
+              "metric": "jvm.JvmMetrics.GcCountParNew",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcNumInfoThresholdExceeded": {
+              "metric": "jvm.JvmMetrics.GcNumInfoThresholdExceeded",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcNumWarnThresholdExceeded": {
+              "metric": "jvm.JvmMetrics.GcNumWarnThresholdExceeded",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcTimeMillisConcurrentMarkSweep": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisConcurrentMarkSweep",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcTimeMillisParNew": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisParNew",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcTotalExtraSleepTime": {
+              "metric": "jvm.JvmMetrics.GcTotalExtraSleepTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemHeapMaxM": {
+              "metric": "jvm.JvmMetrics.MemHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemMaxM": {
+              "metric": "jvm.JvmMetrics.MemMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemNonHeapMaxM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/DroppedPubAll": {
+              "metric": "metricssystem.MetricsSystem.DroppedPubAll",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumActiveSinks": {
+              "metric": "metricssystem.MetricsSystem.NumActiveSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumActiveSources": {
+              "metric": "metricssystem.MetricsSystem.NumActiveSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumAllSinks": {
+              "metric": "metricssystem.MetricsSystem.NumAllSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumAllSources": {
+              "metric": "metricssystem.MetricsSystem.NumAllSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/PublishAvgTime": {
+              "metric": "metricssystem.MetricsSystem.PublishAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/PublishNumOps": {
+              "metric": "metricssystem.MetricsSystem.PublishNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineAvgTime": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineDropped": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineDropped",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineNumOps": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineQsize": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineQsize",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/SnapshotAvgTime": {
+              "metric": "metricssystem.MetricsSystem.SnapshotAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/SnapshotNumOps": {
+              "metric": "metricssystem.MetricsSystem.SnapshotNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/GetGroupsAvgTime": {
+              "metric": "ugi.UgiMetrics.GetGroupsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/GetGroupsNumOps": {
+              "metric": "ugi.UgiMetrics.GetGroupsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            }
+          }
+        }
+      },
+      {
+        "type": "jmx",
+        "metrics": {
+          "default": {
+            "metrics/rpcdetailed/getEditLogSize_num_ops": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.getEditLogSize_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memHeapCommittedM": {
+              "metric": "Hadoop:service=DataNode,name=JvmMetrics.MemHeapCommittedM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/NonHeapMemoryUsed": {
+              "metric": "java.lang:type=Memory.NonHeapMemoryUsage[used]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsRunnable": {
+              "metric": "Hadoop:service=DataNode,name=JvmMetrics.ThreadsRunnable",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/complete_num_ops": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.complete_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsNew": {
+              "metric": "Hadoop:service=DataNode,name=JvmMetrics.ThreadsNew",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/rollFsImage_num_ops": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.rollFsImage_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthorizationFailures": {
+              "metric": "Hadoop:service=DataNode,name=RpcActivity.RpcAuthorizationFailures",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/RpcPort": {
+              "metric": "Hadoop:service=DataNode,name=DataNodeInfo.RpcPort",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getProtocolVersion_num_ops": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.getProtocolVersion_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcQueueTime_avg_time": {
+              "metric": "Hadoop:service=DataNode,name=RpcActivity.RpcQueueTimeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/fsync_avg_time": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.fsync_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginSuccess_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=UgiMetrics.LoginSuccessAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/blockReceived_num_ops": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.blockReceived_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/rollEditLog_avg_time": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.rollEditLog_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/SentBytes": {
+              "metric": "Hadoop:service=DataNode,name=RpcActivity.SentBytes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/renewLease_num_ops": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.renewLease_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getFileInfo_avg_time": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.getFileInfo_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memNonHeapUsedM": {
+              "metric": "Hadoop:service=DataNode,name=JvmMetrics.MemNonHeapUsedM",
+              "unit": "MB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/VolumeInfo": {
+              "metric": "Hadoop:service=DataNode,name=DataNodeInfo.VolumeInfo",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/complete_avg_time": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.complete_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logWarn": {
+              "metric": "Hadoop:service=DataNode,name=JvmMetrics.LogWarn",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getBlockLocations_num_ops": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.getBlockLocations_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/HttpPort": {
+              "metric": "Hadoop:service=DataNode,name=DataNodeInfo.HttpPort",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsTimedWaiting": {
+              "metric": "Hadoop:service=DataNode,name=JvmMetrics.ThreadsTimedWaiting",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/gcCount": {
+              "metric": "Hadoop:service=DataNode,name=JvmMetrics.GcCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/ReceivedBytes": {
+              "metric": "Hadoop:service=DataNode,name=RpcActivity.ReceivedBytes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/HostName": {
+              "metric": "Hadoop:service=DataNode,name=MetricsSystem,sub=Stats.tag.Hostname",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsBlocked": {
+              "metric": "Hadoop:service=DataNode,name=JvmMetrics.ThreadsBlocked",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcQueueTime_num_ops": {
+              "metric": "Hadoop:service=DataNode,name=RpcActivity.RpcQueueTimeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/HeapMemoryMax": {
+              "metric": "java.lang:type=Memory.HeapMemoryUsage[max]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/HeapMemoryUsed": {
+              "metric": "java.lang:type=Memory.HeapMemoryUsage[used]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/rollFsImage_avg_time": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.rollFsImage_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/NumOpenConnections": {
+              "metric": "Hadoop:service=DataNode,name=RpcActivity.NumOpenConnections",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getFileInfo_num_ops": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.getFileInfo_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memHeapUsedM": {
+              "metric": "Hadoop:service=DataNode,name=JvmMetrics.MemHeapUsedM",
+              "unit": "MB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsWaiting": {
+              "metric": "Hadoop:service=DataNode,name=JvmMetrics.ThreadsWaiting",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginSuccess_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=UgiMetrics.LoginSuccessNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getEditLogSize_avg_time": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.getEditLogSize_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getBlockLocations_avg_time": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.getBlockLocations_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/gcTimeMillis": {
+              "metric": "Hadoop:service=DataNode,name=JvmMetrics.GcTimeMillis",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/blockReceived_avg_time": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.blockReceived_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/create_num_ops": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.create_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsTerminated": {
+              "metric": "Hadoop:service=DataNode,name=JvmMetrics.ThreadsTerminated",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/addBlock_num_ops": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.addBlock_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memNonHeapCommittedM": {
+              "metric": "Hadoop:service=DataNode,name=JvmMetrics.MemNonHeapCommittedM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/callQueueLen": {
+              "metric": "Hadoop:service=DataNode,name=RpcActivity.CallQueueLength",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/Version": {
+              "metric": "Hadoop:service=DataNode,name=DataNodeInfo.Version",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/blockReport_avg_time": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.blockReport_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logInfo": {
+              "metric": "Hadoop:service=DataNode,name=JvmMetrics.LogInfo",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getListing_num_ops": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.getListing_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/rollEditLog_num_ops": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.rollEditLog_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/addBlock_avg_time": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.addBlock_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSNamesystem/NamenodeAddress": {
+              "metric": "Hadoop:service=DataNode,name=DataNodeInfo.NamenodeAddresses",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcProcessingTime_num_ops": {
+              "metric": "Hadoop:service=DataNode,name=RpcActivity.RpcProcessingTimeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginFailure_num_ops": {
+              "metric": "Hadoop:service=NameNode,name=UgiMetrics.LoginFailureNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/fsync_num_ops": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.fsync_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/NonHeapMemoryMax": {
+              "metric": "java.lang:type=Memory.NonHeapMemoryUsage[max]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/create_avg_time": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.create_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/sendHeartbeat_avg_time": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.sendHeartbeat_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logError": {
+              "metric": "Hadoop:service=DataNode,name=JvmMetrics.LogError",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginFailure_avg_time": {
+              "metric": "Hadoop:service=NameNode,name=UgiMetrics.LoginFailureAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getProtocolVersion_avg_time": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.getProtocolVersion_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthorizationSuccesses": {
+              "metric": "Hadoop:service=DataNode,name=RpcActivity.RpcAuthorizationSuccesses",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getListing_avg_time": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.getListing_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/sendHeartbeat_num_ops": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.sendHeartbeat_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logFatal": {
+              "metric": "Hadoop:service=DataNode,name=JvmMetrics.LogFatal",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/renewLease_avg_time": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.renewLease_avg_time",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcProcessingTime_avg_time": {
+              "metric": "Hadoop:service=DataNode,name=RpcActivity.RpcProcessingTimeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/blockReport_num_ops": {
+              "metric": "Hadoop:service=DataNode,name=RpcDetailedActivity.blockReport_num_ops",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthenticationSuccesses": {
+              "metric": "Hadoop:service=DataNode,name=RpcActivity.RpcAuthenticationSuccesses",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthenticationFailures": {
+              "metric": "Hadoop:service=DataNode,name=RpcActivity.RpcAuthenticationFailures",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSDatasetState/DfsUsed": {
+              "metric": "Hadoop:service=DataNode,name=FSDatasetState.DfsUsed",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSDatasetState/Capacity": {
+              "metric": "Hadoop:service=DataNode,name=FSDatasetState.Capacity",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/FSDatasetState/NumFailedVolumes": {
+              "metric": "Hadoop:service=DataNode,name=FSDatasetState.NumFailedVolumes",
+              "pointInTime": true,
+              "temporal": false
+            }
+          }
+        }
+      }
+    ]
+  },
+  "JOURNALNODE": {
+    "Component": [
+      {
+        "type": "ganglia",
+        "metrics": {
+          "default": {
+            "metrics/cpu/cpu_idle":{
+              "metric":"cpu_idle",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/cpu/cpu_nice":{
+              "metric":"cpu_nice",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/cpu/cpu_system":{
+              "metric":"cpu_system",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/cpu/cpu_user":{
+              "metric":"cpu_user",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/cpu/cpu_wio":{
+              "metric":"cpu_wio",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/disk_free":{
+              "metric":"disk_free",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/disk_total":{
+              "metric":"disk_total",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/load/load_fifteen":{
+              "metric":"load_fifteen",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/load/load_five":{
+              "metric":"load_five",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/load/load_one":{
+              "metric":"load_one",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_buffers":{
+              "metric":"mem_buffers",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_cached":{
+              "metric":"mem_cached",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_free":{
+              "metric":"mem_free",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_shared":{
+              "metric":"mem_shared",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_total":{
+              "metric":"mem_total",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/swap_free":{
+              "metric":"swap_free",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/swap_total":{
+              "metric":"swap_total",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/network/bytes_in":{
+              "metric":"bytes_in",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/network/bytes_out":{
+              "metric":"bytes_out",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/network/pkts_in":{
+              "metric":"pkts_in",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/network/pkts_out":{
+              "metric":"pkts_out",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/process/proc_run":{
+              "metric":"proc_run",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/process/proc_total":{
+              "metric":"proc_total",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/read_count":{
+              "metric":"read_count",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/write_count":{
+              "metric":"write_count",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/read_bytes":{
+              "metric":"read_bytes",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/write_bytes":{
+              "metric":"write_bytes",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/read_time":{
+              "metric":"read_time",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/write_time":{
+              "metric":"write_time",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/dfs/journalNode/syncs300s75thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs300s75thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/lastWrittenTxId": {
+              "metric": "dfs.JournalNode.LastWrittenTxId",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs60s90thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs60s90thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/finalizeLogSegment_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.FinalizeLogSegmentNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/loginSuccess_avg_time": {
+              "metric": "ugi.UgiMetrics.LoginSuccessAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/startLogSegment_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.StartLogSegmentAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/currentLagTxns": {
+              "metric": "dfs.JournalNode.CurrentLagTxns",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapUsedM",
+              "unit": "MB",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/bytesWritten": {
+              "metric": "dfs.JournalNode.BytesWritten",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/acceptRecovery_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.AcceptRecoveryNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/txnsWritten": {
+              "metric": "dfs.JournalNode.TxnsWritten",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsBlocked": {
+              "metric": "jvm.JvmMetrics.ThreadsBlocked",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_num_ops": {
+              "metric": "rpc.rpc.RpcQueueTimeNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/disk/part_max_used": {
+              "metric": "part_max_used",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/newEpoch_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.NewEpochNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs3600s_num_ops": {
+              "metric": "dfs.JournalNode.Syncs3600sNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs3600s99thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs3600s99thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/loginSuccess_num_ops": {
+              "metric": "ugi.UgiMetrics.LoginSuccessNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs60s95thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs60s95thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs60s99thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs60s99thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs300s50thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs300s50thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs300s_num_ops": {
+              "metric": "dfs.JournalNode.Syncs300sNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs3600s90thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs3600s90thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapCommittedM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/lastPromisedEpoch": {
+              "metric": "dfs.JournalNode.LastPromisedEpoch",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/prepareRecovery_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.PrepareRecoveryAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/lastWriterEpoch": {
+              "metric": "dfs.JournalNode.LastWriterEpoch",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/loginFailure_num_ops": {
+              "metric": "ugi.UgiMetrics.LoginFailureNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/getEditLogManifest_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.GetEditLogManifestNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/acceptRecovery_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.AcceptRecoveryAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_avg_time": {
+              "metric": "rpc.rpc.RpcProcessingTimeAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthenticationSuccesses": {
+              "metric": "rpc.rpc.RpcAuthenticationSuccesses",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthenticationFailures": {
+              "metric": "rpc.rpc.RpcAuthenticationFailures",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemHeapCommittedM",
+              "unit": "MB",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsRunnable": {
+              "metric": "jvm.JvmMetrics.ThreadsRunnable",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs60s75thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs60s75thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsNew": {
+              "metric": "jvm.JvmMetrics.ThreadsNew",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationFailures": {
+              "metric": "rpc.rpc.RpcAuthorizationFailures",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs300s95thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs300s95thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_avg_time": {
+              "metric": "rpc.rpc.RpcQueueTimeAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs3600s95thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs3600s95thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/getEditLogManifest_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.GetEditLogManifestAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/SentBytes": {
+              "metric": "rpc.rpc.SentBytes",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logWarn": {
+              "metric": "jvm.JvmMetrics.LogWarn",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTimedWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsTimedWaiting",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcCount": {
+              "metric": "jvm.JvmMetrics.GcCount",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/ReceivedBytes": {
+              "metric": "rpc.rpc.ReceivedBytes",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/batchesWritten": {
+              "metric": "dfs.JournalNode.BatchesWritten",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/NumOpenConnections": {
+              "metric": "rpc.rpc.NumOpenConnections",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/batchesWrittenWhileLagging": {
+              "metric": "dfs.JournalNode.BatchesWrittenWhileLagging",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs300s99thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs300s99thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemHeapUsedM",
+              "unit": "MB",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/prepareRecovery_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.PrepareRecoveryNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsWaiting",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/newEpoch_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.NewEpochAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs60s_num_ops": {
+              "metric": "dfs.JournalNode.Syncs60sNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcTimeMillis": {
+              "metric": "jvm.JvmMetrics.GcTimeMillis",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTerminated": {
+              "metric": "jvm.JvmMetrics.ThreadsTerminated",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memMaxM": {
+              "metric": "jvm.JvmMetrics.MemMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/getJournalState_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.GetJournalStateAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/boottime": {
+              "metric": "boottime",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/dfs/journalNode/syncs300s90thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs300s90thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/callQueueLen": {
+              "metric": "rpc.rpc.CallQueueLength",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/journal_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.JournalAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/finalizeLogSegment_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.FinalizeLogSegmentAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/startLogSegment_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.StartLogSegmentNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs60s50thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs60s50thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logInfo": {
+              "metric": "jvm.JvmMetrics.LogInfo",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/getJournalState_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.GetJournalStateNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_num_ops": {
+              "metric": "rpc.rpc.RpcProcessingTimeNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs3600s50thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs3600s50thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logError": {
+              "metric": "jvm.JvmMetrics.LogError",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/loginFailure_avg_time": {
+              "metric": "ugi.UgiMetrics.LoginFailureAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/journal_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.JournalNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationSuccesses": {
+              "metric": "rpc.rpc.RpcAuthorizationSuccesses",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logFatal": {
+              "metric": "jvm.JvmMetrics.LogFatal",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs3600s75thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs3600s75thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs300sNumOps": {
+              "metric": "dfs.JournalNode.Syncs300sNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs3600sNumOps": {
+              "metric": "dfs.JournalNode.Syncs3600sNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcCountCopy": {
+              "metric": "jvm.JvmMetrics.GcCountCopy",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcCountMarkSweepCompact": {
+              "metric": "jvm.JvmMetrics.GcCountMarkSweepCompact",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcTimeMillisCopy": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisCopy",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcTimeMillisMarkSweepCompact": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisMarkSweepCompact",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapMaxM": {
+              "metric": "jvm.JvmMetrics.MemHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapMaxM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/droppedPubAll": {
+              "metric": "metricssystem.MetricsSystem.DroppedPubAll",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/numActiveSinks": {
+              "metric": "metricssystem.MetricsSystem.NumActiveSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/numActiveSources": {
+              "metric": "metricssystem.MetricsSystem.NumActiveSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/numAllSinks": {
+              "metric": "metricssystem.MetricsSystem.NumAllSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/numAllSources": {
+              "metric": "metricssystem.MetricsSystem.NumAllSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/publishAvgTime": {
+              "metric": "metricssystem.MetricsSystem.PublishAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/publishNumOps": {
+              "metric": "metricssystem.MetricsSystem.PublishNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/sink_timelineAvgTime": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/sink_timelineDropped": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineDropped",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/sink_timelineNumOps": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/sink_timelineQsize": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineQsize",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/snapshotAvgTime": {
+              "metric": "metricssystem.MetricsSystem.SnapshotAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/snapshotNumOps": {
+              "metric": "metricssystem.MetricsSystem.SnapshotNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/acceptRecoveryNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.AcceptRecoveryNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/finalizeLogSegmentNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.FinalizeLogSegmentNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/formatAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.FormatAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/formatNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.FormatNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/isFormattedAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.IsFormattedAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/isFormattedNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.IsFormattedNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/newEpochNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.NewEpochNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/prepareRecoveryAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.PrepareRecoveryAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/startLogSegmentAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.StartLogSegmentAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/getGroupsAvgTime": {
+              "metric": "ugi.UgiMetrics.GetGroupsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/getGroupsNumOps": {
+              "metric": "ugi.UgiMetrics.GetGroupsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/loginSuccessAvgTime": {
+              "metric": "ugi.UgiMetrics.LoginSuccessAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            }
+          }
+        }
+      }
+    ],
+    "HostComponent": [
+      {
+        "type": "ganglia",
+        "metrics": {
+          "default": {
+            "metrics/cpu/cpu_idle":{
+              "metric":"cpu_idle",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/cpu/cpu_nice":{
+              "metric":"cpu_nice",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/cpu/cpu_system":{
+              "metric":"cpu_system",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/cpu/cpu_user":{
+              "metric":"cpu_user",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/cpu/cpu_wio":{
+              "metric":"cpu_wio",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/disk_free":{
+              "metric":"disk_free",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/disk_total":{
+              "metric":"disk_total",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/load/load_fifteen":{
+              "metric":"load_fifteen",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/load/load_five":{
+              "metric":"load_five",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/load/load_one":{
+              "metric":"load_one",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_buffers":{
+              "metric":"mem_buffers",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_cached":{
+              "metric":"mem_cached",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_free":{
+              "metric":"mem_free",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_shared":{
+              "metric":"mem_shared",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/mem_total":{
+              "metric":"mem_total",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/swap_free":{
+              "metric":"swap_free",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/memory/swap_total":{
+              "metric":"swap_total",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/network/bytes_in":{
+              "metric":"bytes_in",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/network/bytes_out":{
+              "metric":"bytes_out",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/network/pkts_in":{
+              "metric":"pkts_in",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/network/pkts_out":{
+              "metric":"pkts_out",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/process/proc_run":{
+              "metric":"proc_run",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/process/proc_total":{
+              "metric":"proc_total",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/read_count":{
+              "metric":"read_count",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/write_count":{
+              "metric":"write_count",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/read_bytes":{
+              "metric":"read_bytes",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/write_bytes":{
+              "metric":"write_bytes",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/read_time":{
+              "metric":"read_time",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/write_time":{
+              "metric":"write_time",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/dfs/journalNode/syncs300s75thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs300s75thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/lastWrittenTxId": {
+              "metric": "dfs.JournalNode.LastWrittenTxId",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs60s90thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs60s90thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/finalizeLogSegment_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.FinalizeLogSegmentNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginSuccess_avg_time": {
+              "metric": "ugi.UgiMetrics.LoginSuccessAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/startLogSegment_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.StartLogSegmentAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/currentLagTxns": {
+              "metric": "dfs.JournalNode.CurrentLagTxns",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapUsedM",
+              "unit": "MB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/bytesWritten": {
+              "metric": "dfs.JournalNode.BytesWritten",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/acceptRecovery_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.AcceptRecoveryNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/txnsWritten": {
+              "metric": "dfs.JournalNode.TxnsWritten",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsBlocked": {
+              "metric": "jvm.JvmMetrics.ThreadsBlocked",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_num_ops": {
+              "metric": "rpc.rpc.RpcQueueTimeNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/disk/part_max_used": {
+              "metric": "part_max_used",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/newEpoch_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.NewEpochNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs3600s_num_ops": {
+              "metric": "dfs.JournalNode.Syncs3600sNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs3600s99thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs3600s99thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/loginSuccess_num_ops": {
+              "metric": "ugi.UgiMetrics.LoginSuccessNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs60s95thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs60s95thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs60s99thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs60s99thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs300s50thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs300s50thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs300s_num_ops": {
+              "metric": "dfs.JournalNode.Syncs300sNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs3600s90thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs3600s90thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapCommittedM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/lastPromisedEpoch": {
+              "metric": "dfs.JournalNode.LastPromisedEpoch",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/prepareRecovery_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.PrepareRecoveryAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/lastWriterEpoch": {
+              "metric": "dfs.JournalNode.LastWriterEpoch",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/loginFailure_num_ops": {
+              "metric": "ugi.UgiMetrics.LoginFailureNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/getEditLogManifest_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.GetEditLogManifestNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/acceptRecovery_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.AcceptRecoveryAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_avg_time": {
+              "metric": "rpc.rpc.RpcProcessingTimeAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthenticationSuccesses": {
+              "metric": "rpc.rpc.RpcAuthenticationSuccesses",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthenticationFailures": {
+              "metric": "rpc.rpc.RpcAuthenticationFailures",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemHeapCommittedM",
+              "unit": "MB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsRunnable": {
+              "metric": "jvm.JvmMetrics.ThreadsRunnable",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs60s75thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs60s75thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsNew": {
+              "metric": "jvm.JvmMetrics.ThreadsNew",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationFailures": {
+              "metric": "rpc.rpc.RpcAuthorizationFailures",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs300s95thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs300s95thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_avg_time": {
+              "metric": "rpc.rpc.RpcQueueTimeAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs3600s95thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs3600s95thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/getEditLogManifest_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.GetEditLogManifestAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/SentBytes": {
+              "metric": "rpc.rpc.SentBytes",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logWarn": {
+              "metric": "jvm.JvmMetrics.LogWarn",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTimedWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsTimedWaiting",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/gcCount": {
+              "metric": "jvm.JvmMetrics.GcCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/ReceivedBytes": {
+              "metric": "rpc.rpc.ReceivedBytes",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/batchesWritten": {
+              "metric": "dfs.JournalNode.BatchesWritten",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/NumOpenConnections": {
+              "metric": "rpc.rpc.NumOpenConnections",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/batchesWrittenWhileLagging": {
+              "metric": "dfs.JournalNode.BatchesWrittenWhileLagging",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs300s99thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs300s99thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemHeapUsedM",
+              "unit": "MB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/prepareRecovery_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.PrepareRecoveryNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsWaiting",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/newEpoch_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.NewEpochAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs60s_num_ops": {
+              "metric": "dfs.JournalNode.Syncs60sNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcTimeMillis": {
+              "metric": "jvm.JvmMetrics.GcTimeMillis",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTerminated": {
+              "metric": "jvm.JvmMetrics.ThreadsTerminated",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memMaxM": {
+              "metric": "jvm.JvmMetrics.MemMaxM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/getJournalState_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.GetJournalStateAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/boottime": {
+              "metric": "boottime",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/dfs/journalNode/syncs300s90thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs300s90thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/callQueueLen": {
+              "metric": "rpc.rpc.CallQueueLength",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/journal_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.JournalAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/finalizeLogSegment_avg_time": {
+              "metric": "rpcdetailed.rpcdetailed.FinalizeLogSegmentAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/startLogSegment_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.StartLogSegmentNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs60s50thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs60s50thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logInfo": {
+              "metric": "jvm.JvmMetrics.LogInfo",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/getJournalState_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.GetJournalStateNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_num_ops": {
+              "metric": "rpc.rpc.RpcProcessingTimeNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs3600s50thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs3600s50thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logError": {
+              "metric": "jvm.JvmMetrics.LogError",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginFailure_avg_time": {
+              "metric": "ugi.UgiMetrics.LoginFailureAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/journal_num_ops": {
+              "metric": "rpcdetailed.rpcdetailed.JournalNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationSuccesses": {
+              "metric": "rpc.rpc.RpcAuthorizationSuccesses",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logFatal": {
+              "metric": "jvm.JvmMetrics.LogFatal",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs3600s75thPercentileLatencyMicros": {
+              "metric": "dfs.JournalNode.Syncs3600s75thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs300sNumOps": {
+              "metric": "dfs.JournalNode.Syncs300sNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/dfs/journalNode/syncs3600sNumOps": {
+              "metric": "dfs.JournalNode.Syncs3600sNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcCountCopy": {
+              "metric": "jvm.JvmMetrics.GcCountCopy",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcCountMarkSweepCompact": {
+              "metric": "jvm.JvmMetrics.GcCountMarkSweepCompact",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcTimeMillisCopy": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisCopy",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcTimeMillisMarkSweepCompact": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisMarkSweepCompact",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapMaxM": {
+              "metric": "jvm.JvmMetrics.MemHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapMaxM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/droppedPubAll": {
+              "metric": "metricssystem.MetricsSystem.DroppedPubAll",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/numActiveSinks": {
+              "metric": "metricssystem.MetricsSystem.NumActiveSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/numActiveSources": {
+              "metric": "metricssystem.MetricsSystem.NumActiveSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/numAllSinks": {
+              "metric": "metricssystem.MetricsSystem.NumAllSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/numAllSources": {
+              "metric": "metricssystem.MetricsSystem.NumAllSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/publishAvgTime": {
+              "metric": "metricssystem.MetricsSystem.PublishAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/publishNumOps": {
+              "metric": "metricssystem.MetricsSystem.PublishNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/sink_timelineAvgTime": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/sink_timelineDropped": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineDropped",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/sink_timelineNumOps": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/sink_timelineQsize": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineQsize",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/snapshotAvgTime": {
+              "metric": "metricssystem.MetricsSystem.SnapshotAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/snapshotNumOps": {
+              "metric": "metricssystem.MetricsSystem.SnapshotNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/acceptRecoveryNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.AcceptRecoveryNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/finalizeLogSegmentNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.FinalizeLogSegmentNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/formatAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.FormatAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/formatNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.FormatNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/isFormattedAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.IsFormattedAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/isFormattedNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.IsFormattedNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/newEpochNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.NewEpochNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/prepareRecoveryAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.PrepareRecoveryAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/startLogSegmentAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.StartLogSegmentAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/getGroupsAvgTime": {
+              "metric": "ugi.UgiMetrics.GetGroupsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/getGroupsNumOps": {
+              "metric": "ugi.UgiMetrics.GetGroupsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/loginSuccessAvgTime": {
+              "metric": "ugi.UgiMetrics.LoginSuccessAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            }
+          }
+        }
+      },
+      {
+        "type": "jmx",
+        "metrics": {
+          "default": {
+            "metrics/jvm/memHeapCommittedM": {
+              "metric": "Hadoop:service=JournalNode,name=JvmMetrics.MemHeapCommittedM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/NonHeapMemoryUsed": {
+              "metric": "java.lang:type=Memory.NonHeapMemoryUsage[used]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsRunnable": {
+              "metric": "Hadoop:service=JournalNode,name=JvmMetrics.ThreadsRunnable",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/syncs300s95thPercentileLatencyMicros": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).Syncs300s95thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsNew": {
+              "metric": "Hadoop:service=JournalNode,name=JvmMetrics.ThreadsNew",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/finalizeLogSegment_num_ops": {
+              "metric": "Hadoop:service=JournalNode,name=RpcDetailedActivity.FinalizeLogSegmentNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthorizationFailures": {
+              "metric": "Hadoop:service=JournalNode,name=RpcActivity.RpcAuthorizationFailures",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginSuccess_avg_time": {
+              "metric": "Hadoop:service=JournalNode,name=UgiMetrics.LoginSuccessAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcQueueTime_avg_time": {
+              "metric": "Hadoop:service=JournalNode,name=RpcActivity.RpcQueueTimeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/startLogSegment_avg_time": {
+              "metric": "Hadoop:service=JournalNode,name=RpcDetailedActivity.StartLogSegmentAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/lastWriterEpoch": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).LastWriterEpoch",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getEditLogManifest_avg_time": {
+              "metric": "Hadoop:service=JournalNode,name=RpcDetailedActivity.GetEditLogManifestAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/SentBytes": {
+              "metric": "Hadoop:service=JournalNode,name=RpcActivity.SentBytes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memNonHeapUsedM": {
+              "metric": "Hadoop:service=JournalNode,name=JvmMetrics.MemNonHeapUsedM",
+              "unit": "MB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/syncs60s_num_ops": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).Syncs60sNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logWarn": {
+              "metric": "Hadoop:service=JournalNode,name=JvmMetrics.LogWarn",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/syncs3600s50thPercentileLatencyMicros": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).Syncs3600s50thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsTimedWaiting": {
+              "metric": "Hadoop:service=JournalNode,name=JvmMetrics.ThreadsTimedWaiting",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/gcCount": {
+              "metric": "Hadoop:service=JournalNode,name=JvmMetrics.GcCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/syncs3600s95thPercentileLatencyMicros": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).Syncs3600s95thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/acceptRecovery_num_ops": {
+              "metric": "Hadoop:service=JournalNode,name=RpcDetailedActivity.AcceptRecoveryNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/ReceivedBytes": {
+              "metric": "Hadoop:service=JournalNode,name=RpcActivity.ReceivedBytes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/syncs3600s99thPercentileLatencyMicros": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).Syncs3600s99thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsBlocked": {
+              "metric": "Hadoop:service=JournalNode,name=JvmMetrics.ThreadsBlocked",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/lastWrittenTxId": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).LastWrittenTxId",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcQueueTime_num_ops": {
+              "metric": "Hadoop:service=JournalNode,name=RpcActivity.RpcQueueTimeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/HeapMemoryMax": {
+              "metric": "java.lang:type=Memory.HeapMemoryUsage[max]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/HeapMemoryUsed": {
+              "metric": "java.lang:type=Memory.HeapMemoryUsage[used]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/newEpoch_num_ops": {
+              "metric": "Hadoop:service=JournalNode,name=RpcDetailedActivity.NewEpochNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/syncs60s75thPercentileLatencyMicros": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).Syncs60s75thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/NumOpenConnections": {
+              "metric": "Hadoop:service=JournalNode,name=RpcActivity.NumOpenConnections",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memHeapUsedM": {
+              "metric": "Hadoop:service=JournalNode,name=JvmMetrics.MemHeapUsedM",
+              "unit": "MB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/prepareRecovery_num_ops": {
+              "metric": "Hadoop:service=JournalNode,name=RpcDetailedActivity.PrepareRecoveryNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/batchesWrittenWhileLagging": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).BatchesWrittenWhileLagging",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsWaiting": {
+              "metric": "Hadoop:service=JournalNode,name=JvmMetrics.ThreadsWaiting",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/newEpoch_avg_time": {
+              "metric": "Hadoop:service=JournalNode,name=RpcDetailedActivity.NewEpochAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginSuccess_num_ops": {
+              "metric": "Hadoop:service=JournalNode,name=UgiMetrics.LoginSuccessNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/gcTimeMillis": {
+              "metric": "Hadoop:service=JournalNode,name=JvmMetrics.GcTimeMillis",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/syncs300s75thPercentileLatencyMicros": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).Syncs300s75thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsTerminated": {
+              "metric": "Hadoop:service=JournalNode,name=JvmMetrics.ThreadsTerminated",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memMaxM": {
+              "metric": "Hadoop:service=JournalNode,name=JvmMetrics.MemMaxM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/syncs300s_num_ops": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).Syncs300sNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/syncs300s50thPercentileLatencyMicros": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).Syncs300s50thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getJournalState_avg_time": {
+              "metric": "Hadoop:service=JournalNode,name=RpcDetailedActivity.GetJournalStateAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/lastPromisedEpoch": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).LastPromisedEpoch",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/startTime": {
+              "metric": "java.lang:type=Runtime.StartTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/syncs60s95thPercentileLatencyMicros": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).Syncs60s95thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/journalsStatus": {
+              "metric": "Hadoop:service=JournalNode,name=JournalNodeInfo.JournalsStatus",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memNonHeapCommittedM": {
+              "metric": "Hadoop:service=JournalNode,name=JvmMetrics.MemNonHeapCommittedM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/syncs60s50thPercentileLatencyMicros": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).Syncs60s50thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/callQueueLen": {
+              "metric": "Hadoop:service=JournalNode,name=RpcActivity.CallQueueLength",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/journal_avg_time": {
+              "metric": "Hadoop:service=JournalNode,name=RpcDetailedActivity.JournalAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/syncs3600s75thPercentileLatencyMicros": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).Syncs3600s75thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/finalizeLogSegment_avg_time": {
+              "metric": "Hadoop:service=JournalNode,name=RpcDetailedActivity.FinalizeLogSegmentAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/syncs3600s90thPercentileLatencyMicros": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).Syncs3600s90thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/batchesWritten": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).BatchesWritten",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/startLogSegment_num_ops": {
+              "metric": "Hadoop:service=JournalNode,name=RpcDetailedActivity.StartLogSegmentNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/syncs60s90thPercentileLatencyMicros": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).Syncs60s90thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/syncs3600s_num_ops": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).Syncs3600sNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/prepareRecovery_avg_time": {
+              "metric": "Hadoop:service=JournalNode,name=RpcDetailedActivity.PrepareRecoveryAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logInfo": {
+              "metric": "Hadoop:service=JournalNode,name=JvmMetrics.LogInfo",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getJournalState_num_ops": {
+              "metric": "Hadoop:service=JournalNode,name=RpcDetailedActivity.GetJournalStateNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/currentLagTxns": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).CurrentLagTxns",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcProcessingTime_num_ops": {
+              "metric": "Hadoop:service=JournalNode,name=RpcActivity.RpcProcessingTimeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginFailure_num_ops": {
+              "metric": "Hadoop:service=JournalNode,name=UgiMetrics.LoginFailureNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/getEditLogManifest_num_ops": {
+              "metric": "Hadoop:service=JournalNode,name=RpcDetailedActivity.GetEditLogManifestNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/syncs300s99thPercentileLatencyMicros": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).Syncs300s99thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/NonHeapMemoryMax": {
+              "metric": "java.lang:type=Memory.NonHeapMemoryUsage[max]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/syncs300s90thPercentileLatencyMicros": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).Syncs300s90thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/acceptRecovery_avg_time": {
+              "metric": "Hadoop:service=JournalNode,name=RpcDetailedActivity.AcceptRecoveryAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logError": {
+              "metric": "Hadoop:service=JournalNode,name=JvmMetrics.LogError",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginFailure_avg_time": {
+              "metric": "Hadoop:service=JournalNode,name=UgiMetrics.LoginFailureAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/syncs60s99thPercentileLatencyMicros": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).Syncs60s99thPercentileLatencyMicros",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpcdetailed/journal_num_ops": {
+              "metric": "Hadoop:service=JournalNode,name=RpcDetailedActivity.JournalNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthorizationSuccesses": {
+              "metric": "Hadoop:service=JournalNode,name=RpcActivity.RpcAuthorizationSuccesses",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/txnsWritten": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).TxnsWritten",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logFatal": {
+              "metric": "Hadoop:service=JournalNode,name=JvmMetrics.LogFatal",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcProcessingTime_avg_time": {
+              "metric": "Hadoop:service=JournalNode,name=RpcActivity.RpcProcessingTimeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthenticationSuccesses": {
+              "metric": "Hadoop:service=JournalNode,name=RpcActivity.RpcAuthenticationSuccesses",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthenticationFailures": {
+              "metric": "Hadoop:service=JournalNode,name=RpcActivity.RpcAuthenticationFailures",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/dfs/journalnode/cluster/$1.replaceAll(\"^-\",\"\")/bytesWritten": {
+              "metric": "Hadoop:service=JournalNode,name=Journal(-.+).BytesWritten",
+              "pointInTime": true,
+              "temporal": false
+            }
+          }
+        }
+      }
+    ]
+  }
+}

+ 69 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/alerts/alert_checkpoint_time.py

@@ -0,0 +1,69 @@
+#!/usr/bin/env python
+
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import logging
+
+RESULT_CODE_OK = 'OK'
+RESULT_CODE_CRITICAL = 'CRITICAL'
+RESULT_CODE_UNKNOWN = 'UNKNOWN'
+
+OK_MESSAGE = 'Ok'
+
+HDFS_SITE_KEY = '{{hdfs-site}}'
+
+NN_HTTP_ADDRESS_KEY = '{{hdfs-site/dfs.namenode.http-address}}'
+NN_HTTPS_ADDRESS_KEY = '{{hdfs-site/dfs.namenode.https-address}}'
+NN_HTTP_POLICY_KEY = '{{hdfs-site/dfs.http.policy}}'
+NN_CHECKPOINT_TX_KEY = '{{hdfs-site/dfs.namenode.checkpoint.txns}}'
+NN_CHECKPOINT_PERIOD_KEY = '{{hdfs-site/dfs.namenode.checkpoint.period}}'
+
+KERBEROS_KEYTAB = '{{hdfs-site/dfs.web.authentication.kerberos.keytab}}'
+KERBEROS_PRINCIPAL = '{{hdfs-site/dfs.web.authentication.kerberos.principal}}'
+SECURITY_ENABLED_KEY = '{{cluster-env/security_enabled}}'
+SMOKEUSER_KEY = "{{cluster-env/smokeuser}}"
+EXECUTABLE_SEARCH_PATHS = '{{kerberos-env/executable_search_paths}}'
+
+logger = logging.getLogger('ambari_alerts')
+
+def get_tokens():
+  """
+  Returns a tuple of tokens in the format {{site/property}} that will be used
+  to build the dictionary passed into execute
+  """
+  return (HDFS_SITE_KEY, NN_HTTP_ADDRESS_KEY, NN_HTTPS_ADDRESS_KEY, NN_HTTP_POLICY_KEY, EXECUTABLE_SEARCH_PATHS,
+      NN_CHECKPOINT_TX_KEY, NN_CHECKPOINT_PERIOD_KEY, KERBEROS_KEYTAB, KERBEROS_PRINCIPAL, SECURITY_ENABLED_KEY, SMOKEUSER_KEY)
+  
+
+def execute(configurations={}, parameters={}, host_name=None):
+  """
+  Returns a tuple containing the result code and a pre-formatted result label
+
+  Keyword arguments:
+  configurations (dictionary): a mapping of configuration key to value
+  parameters (dictionary): a mapping of script parameter key to value
+  host_name (string): the name of this host where the alert is running
+  """
+
+  if configurations is None:
+    return (('UNKNOWN', ['There were no configurations supplied to the script.']))
+
+  result_code = RESULT_CODE_OK
+  label = OK_MESSAGE
+  return (result_code, [label])

+ 74 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/alerts/alert_datanode_unmounted_data_dir.py

@@ -0,0 +1,74 @@
+#!/usr/bin/env python
+
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import logging
+
+RESULT_STATE_OK = 'OK'
+RESULT_STATE_WARNING = 'WARNING'
+RESULT_STATE_CRITICAL = 'CRITICAL'
+RESULT_STATE_UNKNOWN = 'UNKNOWN'
+
+OK_MESSAGE = 'Ok'
+
+DFS_DATA_DIR = '{{hdfs-site/dfs.datanode.data.dir}}'
+DATA_DIR_MOUNT_FILE = "/var/lib/ambari-agent/data/datanode/dfs_data_dir_mount.hist"
+
+logger = logging.getLogger()
+
+def get_tokens():
+  """
+  Returns a tuple of tokens in the format {{site/property}} that will be used
+  to build the dictionary passed into execute
+  """
+  return (DFS_DATA_DIR, DATA_DIR_MOUNT_FILE)
+
+
+def execute(configurations={}, parameters={}, host_name=None):
+  """
+  Returns a tuple containing the result code and a pre-formatted result label
+
+  Keyword arguments:
+  configurations (dictionary): a mapping of configuration key to value
+  parameters (dictionary): a mapping of script parameter key to value
+  host_name (string): the name of this host where the alert is running
+
+  DataNode directories can be of the following formats and each needs to be supported:
+    /grid/dn/archive0
+    [SSD]/grid/dn/archive0
+    [ARCHIVE]file:///grid/dn/archive0
+  """
+  warnings = []
+  errors = []
+
+  if configurations is None:
+    return (RESULT_STATE_UNKNOWN, ['There were no configurations supplied to the script.'])
+
+  # Check required properties
+  if DFS_DATA_DIR not in configurations:
+    return (RESULT_STATE_UNKNOWN, ['{0} is a required parameter for the script'.format(DFS_DATA_DIR)])
+
+  dfs_data_dir = configurations[DFS_DATA_DIR]
+
+  if dfs_data_dir is None:
+    return (RESULT_STATE_UNKNOWN, ['{0} is a required parameter for the script and the value is null'.format(DFS_DATA_DIR)])
+
+  result_code = RESULT_STATE_OK
+  label = OK_MESSAGE
+  return (result_code, [label])

+ 75 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/alerts/alert_ha_namenode_health.py

@@ -0,0 +1,75 @@
+#!/usr/bin/env python
+
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import logging
+
+RESULT_STATE_OK = 'OK'
+RESULT_STATE_CRITICAL = 'CRITICAL'
+RESULT_STATE_UNKNOWN = 'UNKNOWN'
+RESULT_STATE_SKIPPED = 'SKIPPED'
+
+OK_MESSAGE = 'Ok'
+
+HDFS_SITE_KEY = '{{hdfs-site}}'
+NAMESERVICE_KEY = '{{hdfs-site/dfs.internal.nameservices}}'
+NN_HTTP_ADDRESS_KEY = '{{hdfs-site/dfs.namenode.http-address}}'
+NN_HTTPS_ADDRESS_KEY = '{{hdfs-site/dfs.namenode.https-address}}'
+DFS_POLICY_KEY = '{{hdfs-site/dfs.http.policy}}'
+
+KERBEROS_KEYTAB = '{{hdfs-site/dfs.web.authentication.kerberos.keytab}}'
+KERBEROS_PRINCIPAL = '{{hdfs-site/dfs.web.authentication.kerberos.principal}}'
+SECURITY_ENABLED_KEY = '{{cluster-env/security_enabled}}'
+SMOKEUSER_KEY = '{{cluster-env/smokeuser}}'
+EXECUTABLE_SEARCH_PATHS = '{{kerberos-env/executable_search_paths}}'
+
+logger = logging.getLogger('ambari_alerts')
+
+def get_tokens():
+  """
+  Returns a tuple of tokens in the format {{site/property}} that will be used
+  to build the dictionary passed into execute
+  """
+  return (HDFS_SITE_KEY, NAMESERVICE_KEY, NN_HTTP_ADDRESS_KEY, EXECUTABLE_SEARCH_PATHS,
+  NN_HTTPS_ADDRESS_KEY, DFS_POLICY_KEY, SMOKEUSER_KEY, KERBEROS_KEYTAB, KERBEROS_PRINCIPAL, SECURITY_ENABLED_KEY)
+  
+
+def execute(configurations={}, parameters={}, host_name=None):
+  """
+  Returns a tuple containing the result code and a pre-formatted result label
+
+  Keyword arguments:
+  configurations (dictionary): a mapping of configuration key to value
+  parameters (dictionary): a mapping of script parameter key to value
+  host_name (string): the name of this host where the alert is running
+  """
+  if configurations is None:
+    return (RESULT_STATE_UNKNOWN, ['There were no configurations supplied to the script.'])
+
+  # if not in HA mode, then SKIP
+  if not NAMESERVICE_KEY in configurations:
+    return (RESULT_STATE_SKIPPED, ['NameNode HA is not enabled'])
+
+  # hdfs-site is required
+  if not HDFS_SITE_KEY in configurations:
+    return (RESULT_STATE_UNKNOWN, ['{0} is a required parameter for the script'.format(HDFS_SITE_KEY)])
+
+  result_code = RESULT_STATE_OK
+  label = OK_MESSAGE
+  return (result_code, [label])

+ 85 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/alerts/alert_metrics_deviation.py

@@ -0,0 +1,85 @@
+#!/usr/bin/env python
+
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import logging
+
+RESULT_STATE_OK = 'OK'
+RESULT_STATE_CRITICAL = 'CRITICAL'
+RESULT_STATE_WARNING = 'WARNING'
+RESULT_STATE_UNKNOWN = 'UNKNOWN'
+RESULT_STATE_SKIPPED = 'SKIPPED'
+
+OK_MESSAGE = 'Ok'
+
+HDFS_SITE_KEY = '{{hdfs-site}}'
+NAMESERVICE_KEY = '{{hdfs-site/dfs.internal.nameservices}}'
+NN_HTTP_ADDRESS_KEY = '{{hdfs-site/dfs.namenode.http-address}}'
+NN_HTTPS_ADDRESS_KEY = '{{hdfs-site/dfs.namenode.https-address}}'
+DFS_POLICY_KEY = '{{hdfs-site/dfs.http.policy}}'
+
+KERBEROS_KEYTAB = '{{hdfs-site/dfs.web.authentication.kerberos.keytab}}'
+KERBEROS_PRINCIPAL = '{{hdfs-site/dfs.web.authentication.kerberos.principal}}'
+SECURITY_ENABLED_KEY = '{{cluster-env/security_enabled}}'
+SMOKEUSER_KEY = '{{cluster-env/smokeuser}}'
+EXECUTABLE_SEARCH_PATHS = '{{kerberos-env/executable_search_paths}}'
+
+METRICS_COLLECTOR_WEBAPP_ADDRESS_KEY = '{{ams-site/timeline.metrics.service.webapp.address}}'
+METRICS_COLLECTOR_VIP_HOST_KEY = '{{cluster-env/metrics_collector_vip_host}}'
+METRICS_COLLECTOR_VIP_PORT_KEY = '{{cluster-env/metrics_collector_vip_port}}'
+
+logger = logging.getLogger()
+
+
+def get_tokens():
+  """
+  Returns a tuple of tokens in the format {{site/property}} that will be used
+  to build the dictionary passed into execute
+  """
+  return (HDFS_SITE_KEY, NAMESERVICE_KEY, NN_HTTP_ADDRESS_KEY, DFS_POLICY_KEY,
+          EXECUTABLE_SEARCH_PATHS, NN_HTTPS_ADDRESS_KEY, SMOKEUSER_KEY,
+          KERBEROS_KEYTAB, KERBEROS_PRINCIPAL, SECURITY_ENABLED_KEY,
+          METRICS_COLLECTOR_VIP_HOST_KEY, METRICS_COLLECTOR_VIP_PORT_KEY,
+          METRICS_COLLECTOR_WEBAPP_ADDRESS_KEY)
+
+def execute(configurations={}, parameters={}, host_name=None):
+  """
+  Returns a tuple containing the result code and a pre-formatted result label
+
+  Keyword arguments:
+  configurations : a mapping of configuration key to value
+  parameters : a mapping of script parameter key to value
+  host_name : the name of this host where the alert is running
+
+  :type configurations dict
+  :type parameters dict
+  :type host_name str
+  """
+
+  #parse configuration
+  if configurations is None:
+    return (RESULT_STATE_UNKNOWN, ['There were no configurations supplied to the script.'])
+
+  # hdfs-site is required
+  if not HDFS_SITE_KEY in configurations:
+    return (RESULT_STATE_UNKNOWN, ['{0} is a required parameter for the script'.format(HDFS_SITE_KEY)])
+
+  result_code = RESULT_STATE_OK
+  label = OK_MESSAGE
+  return (result_code, [label])

+ 74 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/alerts/alert_upgrade_finalized.py

@@ -0,0 +1,74 @@
+#!/usr/bin/env python
+
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import logging
+
+RESULT_STATE_OK = 'OK'
+
+OK_MESSAGE = 'Ok'
+
+NN_HTTP_ADDRESS_KEY = '{{hdfs-site/dfs.namenode.http-address}}'
+NN_HTTPS_ADDRESS_KEY = '{{hdfs-site/dfs.namenode.https-address}}'
+NN_HTTP_POLICY_KEY = '{{hdfs-site/dfs.http.policy}}'
+
+HDFS_SITE_KEY = '{{hdfs-site}}'
+KERBEROS_KEYTAB = '{{hdfs-site/dfs.web.authentication.kerberos.keytab}}'
+KERBEROS_PRINCIPAL = '{{hdfs-site/dfs.web.authentication.kerberos.principal}}'
+SECURITY_ENABLED_KEY = '{{cluster-env/security_enabled}}'
+SMOKEUSER_KEY = "{{cluster-env/smokeuser}}"
+EXECUTABLE_SEARCH_PATHS = '{{kerberos-env/executable_search_paths}}'
+
+logger = logging.getLogger('ambari_alerts')
+
+def get_tokens():
+  """
+  Returns a tuple of tokens in the format {{site/property}} that will be used
+  to build the dictionary passed into execute
+
+  :rtype tuple
+  """
+  return (HDFS_SITE_KEY, NN_HTTP_ADDRESS_KEY, NN_HTTPS_ADDRESS_KEY, NN_HTTP_POLICY_KEY, EXECUTABLE_SEARCH_PATHS,
+          KERBEROS_KEYTAB, KERBEROS_PRINCIPAL, SECURITY_ENABLED_KEY, SMOKEUSER_KEY)
+
+
+def execute(configurations={}, parameters={}, host_name=None):
+  """
+  Returns a tuple containing the result code and a pre-formatted result label
+
+  Keyword arguments:
+  configurations : a mapping of configuration key to value
+  parameters : a mapping of script parameter key to value
+  host_name : the name of this host where the alert is running
+
+  :type configurations dict
+  :type parameters dict
+  :type host_name str
+  """
+
+  if configurations is None:
+    return (('UNKNOWN', ['There were no configurations supplied to the script.']))
+
+  # hdfs-site is required
+  if not HDFS_SITE_KEY in configurations:
+    return 'SKIPPED', ['{0} is a required parameter for the script'.format(HDFS_SITE_KEY)]
+
+  result_code = RESULT_STATE_OK
+  label = OK_MESSAGE
+  return (result_code, [label])

+ 38 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/scripts/datanode.py

@@ -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.
+
+Ambari Agent
+
+"""
+
+# Python Imports
+
+# Local Imports
+from resource_management.libraries.script.dummy import Dummy
+
+
+class DataNode(Dummy):
+  """
+  Dummy script that simulates a slave component.
+  """
+
+  def __init__(self):
+    super(DataNode, self).__init__()
+    self.component_name = "DATANODE"
+
+if __name__ == "__main__":
+  DataNode().execute()

+ 38 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/scripts/hdfs_client.py

@@ -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.
+
+Ambari Agent
+
+"""
+
+# Python Imports
+
+# Local Imports
+from resource_management.libraries.script.dummy import Dummy
+
+
+class HdfsClient(Dummy):
+  """
+  Dummy script that simulates a client component.
+  """
+
+  def __init__(self):
+    super(HdfsClient, self).__init__()
+    self.component_name = "HDFS_CLIENT"
+
+if __name__ == "__main__":
+  HdfsClient().execute()

+ 38 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/scripts/journalnode.py

@@ -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.
+
+Ambari Agent
+
+"""
+
+# Python Imports
+
+# Local Imports
+from resource_management.libraries.script.dummy import Dummy
+
+
+class JournalNode(Dummy):
+  """
+  Dummy script that simulates a master component.
+  """
+
+  def __init__(self):
+    super(JournalNode, self).__init__()
+    self.component_name = "JOURNALNODE"
+
+if __name__ == "__main__":
+  JournalNode().execute()

+ 54 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/scripts/namenode.py

@@ -0,0 +1,54 @@
+"""
+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.
+
+Ambari Agent
+
+"""
+
+# Python Imports
+import json
+
+# Local Imports
+from resource_management.libraries.script.dummy import Dummy
+
+
+class NameNode(Dummy):
+  """
+  Dummy script that simulates a master component.
+  """
+
+  def __init__(self):
+    super(NameNode, self).__init__()
+    self.component_name = "NAMENODE"
+
+  def rebalancehdfs(self, env):
+    print "Rebalance HDFS"
+
+    threshold = 10
+    if "namenode" in self.config["commandParams"]:
+      name_node_params = self.config["commandParams"]["namenode"]
+      if name_node_params is not None:
+        name_node_parameters = json.loads(name_node_params)
+        threshold = name_node_parameters['threshold']
+
+    print "Threshold: %s" % str(threshold)
+
+  def decommission(self):
+    print "Rebalance HDFS"
+
+if __name__ == "__main__":
+  NameNode().execute()

+ 38 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/scripts/nfsgateway.py

@@ -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.
+
+Ambari Agent
+
+"""
+
+# Python Imports
+
+# Local Imports
+from resource_management.libraries.script.dummy import Dummy
+
+
+class NFSGateway(Dummy):
+  """
+  Dummy script that simulates a slave component.
+  """
+
+  def __init__(self):
+    super(NFSGateway, self).__init__()
+    self.component_name = "NFS_GATEWAY"
+
+if __name__ == "__main__":
+  NFSGateway().execute()

+ 30 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/scripts/service_check.py

@@ -0,0 +1,30 @@
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Ambari Agent
+
+"""
+
+from resource_management.libraries.script.script import Script
+
+class ServiceCheck(Script):
+
+  def service_check(self, env):
+    print "Service Check"
+
+if __name__ == "__main__":
+  ServiceCheck().execute()

+ 38 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/scripts/snamenode.py

@@ -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.
+
+Ambari Agent
+
+"""
+
+# Python Imports
+
+# Local Imports
+from resource_management.libraries.script.dummy import Dummy
+
+
+class SNameNode(Dummy):
+  """
+  Dummy script that simulates a slave component.
+  """
+
+  def __init__(self):
+    super(SNameNode, self).__init__()
+    self.component_name = "SECONDARY_NAMENODE"
+
+if __name__ == "__main__":
+  SNameNode().execute()

+ 38 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/package/scripts/zkfc_slave.py

@@ -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.
+
+Ambari Agent
+
+"""
+
+# Python Imports
+
+# Local Imports
+from resource_management.libraries.script.dummy import Dummy
+
+
+class ZkfcSlave(Dummy):
+  """
+  Dummy script that simulates a slave component.
+  """
+
+  def __init__(self):
+    super(ZkfcSlave, self).__init__()
+    self.component_name = "ZKFC"
+
+if __name__ == "__main__":
+  ZkfcSlave().execute()

+ 76 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/quicklinks/quicklinks.json

@@ -0,0 +1,76 @@
+{
+  "name": "default",
+  "description": "default quick links configuration",
+  "configuration": {
+    "protocol":
+    {
+      "type":"https",
+      "checks":[
+        {
+          "property":"dfs.http.policy",
+          "desired":"HTTPS_ONLY",
+          "site":"hdfs-site"
+        }
+      ]
+    },
+
+    "links": [
+      {
+        "name": "namenode_ui",
+        "label": "NameNode UI",
+        "url":"%@://%@:%@",
+        "requires_user_name": "false",
+        "port":{
+          "http_property": "dfs.namenode.http-address",
+          "http_default_port": "50070",
+          "https_property": "dfs.namenode.https-address",
+          "https_default_port": "50470",
+          "regex": "\\w*:(\\d+)",
+          "site": "hdfs-site"
+        }
+      },
+      {
+        "name": "namenode_logs",
+        "label": "NameNode Logs",
+        "url":"%@://%@:%@/logs",
+        "requires_user_name": "false",
+        "port":{
+          "http_property": "dfs.namenode.http-address",
+          "http_default_port": "50070",
+          "https_property": "dfs.namenode.https-address",
+          "https_default_port": "50470",
+          "regex": "\\w*:(\\d+)",
+          "site": "hdfs-site"
+        }
+      },
+      {
+        "name": "namenode_jmx",
+        "label": "NameNode JMX",
+        "url":"%@://%@:%@/jmx",
+        "requires_user_name": "false",
+        "port":{
+          "http_property": "dfs.namenode.http-address",
+          "http_default_port": "50070",
+          "https_property": "dfs.namenode.https-address",
+          "https_default_port": "50470",
+          "regex": "\\w*:(\\d+)",
+          "site": "hdfs-site"
+        }
+      },
+      {
+        "name": "Thread Stacks",
+        "label": "Thread Stacks",
+        "url":"%@://%@:%@/stacks",
+        "requires_user_name": "false",
+        "port":{
+          "http_property": "dfs.namenode.http-address",
+          "http_default_port": "50070",
+          "https_property": "dfs.namenode.https-address",
+          "https_default_port": "50470",
+          "regex": "\\w*:(\\d+)",
+          "site": "hdfs-site"
+        }
+      }
+    ]
+  }
+}

+ 179 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/themes/theme.json

@@ -0,0 +1,179 @@
+{
+  "name": "default",
+  "description": "Default theme for HDFS service",
+  "configuration": {
+    "layouts": [
+      {
+        "name": "default",
+        "tabs": [
+          {
+            "name": "settings",
+            "display-name": "Settings",
+            "layout": {
+              "tab-columns": "2",
+              "tab-rows": "1",
+              "sections": [
+                {
+                  "name": "section-namenode",
+                  "display-name": "NameNode",
+                  "row-index": "0",
+                  "column-index": "0",
+                  "row-span": "1",
+                  "column-span": "1",
+                  "section-columns": "1",
+                  "section-rows": "1",
+                  "subsections": [
+                    {
+                      "name": "subsection-namenode-col1",
+                      "row-index": "0",
+                      "column-index": "0",
+                      "row-span": "1",
+                      "column-span": "1"
+                    }
+                  ]
+                },
+                {
+                  "name": "section-datanode",
+                  "display-name": "DataNode",
+                  "row-index": "0",
+                  "column-index": "1",
+                  "row-span": "1",
+                  "column-span": "1",
+                  "section-columns": "1",
+                  "section-rows": "1",
+                  "subsections": [
+                    {
+                      "name": "subsection-datanode-col1",
+                      "row-index": "0",
+                      "column-index": "0",
+                      "row-span": "1",
+                      "column-span": "1"
+                    }
+                  ]
+                }
+              ]
+            }
+          }
+        ]
+      }
+    ],
+    "placement": {
+      "configuration-layout": "default",
+      "configs": [
+        {
+          "config": "hdfs-site/dfs.namenode.name.dir",
+          "subsection-name": "subsection-namenode-col1"
+        },
+        {
+          "config": "hadoop-env/namenode_heapsize",
+          "subsection-name": "subsection-namenode-col1"
+        },
+        {
+          "config": "hdfs-site/dfs.namenode.handler.count",
+          "subsection-name": "subsection-namenode-col1"
+        },
+        {
+          "config": "hdfs-site/dfs.namenode.safemode.threshold-pct",
+          "subsection-name": "subsection-namenode-col1"
+        },
+        {
+          "config": "hdfs-site/dfs.datanode.data.dir",
+          "subsection-name": "subsection-datanode-col1"
+        },
+        {
+          "config": "hdfs-site/dfs.datanode.failed.volumes.tolerated",
+          "subsection-name": "subsection-datanode-col1"
+        },
+        {
+          "config": "hadoop-env/dtnode_heapsize",
+          "subsection-name": "subsection-datanode-col1"
+        },
+        {
+          "config": "hdfs-site/dfs.datanode.max.transfer.threads",
+          "subsection-name": "subsection-datanode-col1"
+        }
+      ]
+    },
+    "widgets": [
+      {
+        "config": "hdfs-site/dfs.namenode.name.dir",
+        "widget": {
+          "type": "directories"
+        }
+      },
+      {
+        "config": "hdfs-site/dfs.namenode.safemode.threshold-pct",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "percent"
+            }
+          ]
+        }
+      },
+      {
+        "config": "hdfs-site/dfs.namenode.handler.count",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "int"
+            }
+          ]
+        }
+      },
+      {
+        "config": "hadoop-env/namenode_heapsize",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "GB"
+            }
+          ]
+        }
+      },
+      {
+        "config": "hdfs-site/dfs.datanode.failed.volumes.tolerated",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "int"
+            }
+          ]
+        }
+      },
+      {
+        "config": "hdfs-site/dfs.datanode.data.dir",
+        "widget": {
+          "type": "directories"
+        }
+      },
+      {
+        "config": "hadoop-env/dtnode_heapsize",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "GB"
+            }
+          ]
+        }
+      },
+      {
+        "config": "hdfs-site/dfs.datanode.max.transfer.threads",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "int"
+            }
+          ]
+        }
+      }
+    ]
+  }
+}
+

+ 649 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/HDFS/widgets.json

@@ -0,0 +1,649 @@
+{
+  "layouts": [
+    {
+      "layout_name": "default_hdfs_dashboard",
+      "display_name": "Standard HDFS Dashboard",
+      "section_name": "HDFS_SUMMARY",
+      "widgetLayoutInfo": [
+        {
+          "widget_name": "NameNode GC count",
+          "description": "Count of total garbage collections and count of major type garbage collections of the JVM.",
+          "widget_type": "GRAPH",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "jvm.JvmMetrics.GcCount._rate",
+              "metric_path": "metrics/jvm/gcCount._rate",
+              "service_name": "HDFS",
+              "component_name": "NAMENODE",
+              "host_component_criteria": "host_components/metrics/dfs/FSNamesystem/HAState=active"
+            },
+            {
+              "name": "jvm.JvmMetrics.GcCountConcurrentMarkSweep._rate",
+              "metric_path": "metrics/jvm/GcCountConcurrentMarkSweep._rate",
+              "service_name": "HDFS",
+              "component_name": "NAMENODE",
+              "host_component_criteria": "host_components/metrics/dfs/FSNamesystem/HAState=active"
+            }
+          ],
+          "values": [
+            {
+              "name": "GC total count",
+              "value": "${jvm.JvmMetrics.GcCount._rate}"
+            },
+            {
+              "name": "GC count of type major collection",
+              "value": "${jvm.JvmMetrics.GcCountConcurrentMarkSweep._rate}"
+            }
+          ],
+          "properties": {
+            "graph_type": "LINE",
+            "time_range": "1"
+          }
+        },
+        {
+          "widget_name": "NameNode GC time",
+          "description": "Total time taken by major type garbage collections in milliseconds.",
+          "widget_type": "GRAPH",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "jvm.JvmMetrics.GcTimeMillisConcurrentMarkSweep._rate",
+              "metric_path": "metrics/jvm/GcTimeMillisConcurrentMarkSweep._rate",
+              "service_name": "HDFS",
+              "component_name": "NAMENODE",
+              "host_component_criteria": "host_components/metrics/dfs/FSNamesystem/HAState=active"
+            }
+          ],
+          "values": [
+            {
+              "name": "GC time in major collection",
+              "value": "${jvm.JvmMetrics.GcTimeMillisConcurrentMarkSweep._rate}"
+            }
+          ],
+          "properties": {
+            "display_unit": "ms",
+            "graph_type": "LINE",
+            "time_range": "1"
+          }
+        },
+        {
+          "widget_name": "NN Connection Load",
+          "description": "Number of open RPC connections being managed by NameNode.",
+          "widget_type": "GRAPH",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "rpc.rpc.client.NumOpenConnections",
+              "metric_path": "metrics/rpc/client/NumOpenConnections",
+              "category": "",
+              "service_name": "HDFS",
+              "component_name": "NAMENODE",
+              "host_component_criteria": "host_components/metrics/dfs/FSNamesystem/HAState=active"
+            },
+            {
+              "name": "rpc.rpc.datanode.NumOpenConnections",
+              "metric_path": "metrics/rpc/datanode/NumOpenConnections",
+              "category": "",
+              "service_name": "HDFS",
+              "component_name": "NAMENODE",
+              "host_component_criteria": "host_components/metrics/dfs/FSNamesystem/HAState=active"
+            }
+          ],
+          "values": [
+            {
+              "name": "Open Client Connections",
+              "value": "${rpc.rpc.client.NumOpenConnections}"
+            },
+            {
+              "name": "Open Datanode Connections",
+              "value": "${rpc.rpc.datanode.NumOpenConnections}"
+            }
+          ],
+          "properties": {
+            "graph_type": "LINE",
+            "time_range": "1"
+          }
+        },
+        {
+          "widget_name": "NameNode Heap",
+          "description": "Heap memory committed and Heap memory used with respect to time.",
+          "widget_type": "GRAPH",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "jvm.JvmMetrics.MemHeapCommittedM",
+              "metric_path": "metrics/jvm/memHeapCommittedM",
+              "service_name": "HDFS",
+              "component_name": "NAMENODE",
+              "host_component_criteria": "host_components/metrics/dfs/FSNamesystem/HAState=active"
+            },
+            {
+              "name": "jvm.JvmMetrics.MemHeapUsedM",
+              "metric_path": "metrics/jvm/memHeapUsedM",
+              "service_name": "HDFS",
+              "component_name": "NAMENODE",
+              "host_component_criteria": "host_components/metrics/dfs/FSNamesystem/HAState=active"
+            }
+          ],
+          "values": [
+            {
+              "name": "JVM heap committed",
+              "value": "${jvm.JvmMetrics.MemHeapCommittedM}"
+            },
+            {
+              "name": "JVM heap used",
+              "value": "${jvm.JvmMetrics.MemHeapUsedM}"
+            }
+          ],
+          "properties": {
+            "display_unit": "MB",
+            "graph_type": "LINE",
+            "time_range": "1"
+          }
+        },
+        {
+          "widget_name": "NameNode Host Load",
+          "description": "Percentage of CPU and Memory resources being consumed on NameNode host.",
+          "widget_type": "GRAPH",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "cpu_system",
+              "metric_path": "metrics/cpu/cpu_system",
+              "service_name": "HDFS",
+              "component_name": "NAMENODE",
+              "host_component_criteria": "host_components/metrics/dfs/FSNamesystem/HAState=active"
+            },
+            {
+              "name": "cpu_user",
+              "metric_path": "metrics/cpu/cpu_user",
+              "service_name": "HDFS",
+              "component_name": "NAMENODE",
+              "host_component_criteria": "host_components/metrics/dfs/FSNamesystem/HAState=active"
+            },
+            {
+              "name": "cpu_nice",
+              "metric_path": "metrics/cpu/cpu_nice",
+              "service_name": "HDFS",
+              "component_name": "NAMENODE",
+              "host_component_criteria": "host_components/metrics/dfs/FSNamesystem/HAState=active"
+            },
+            {
+              "name": "cpu_idle",
+              "metric_path": "metrics/cpu/cpu_idle",
+              "service_name": "HDFS",
+              "component_name": "NAMENODE",
+              "host_component_criteria": "host_components/metrics/dfs/FSNamesystem/HAState=active"
+            },
+            {
+              "name": "cpu_wio",
+              "metric_path": "metrics/cpu/cpu_wio",
+              "service_name": "HDFS",
+              "component_name": "NAMENODE",
+              "host_component_criteria": "host_components/metrics/dfs/FSNamesystem/HAState=active"
+            },
+            {
+              "name": "mem_total",
+              "metric_path": "metrics/memory/mem_total",
+              "service_name": "HDFS",
+              "component_name": "NAMENODE",
+              "host_component_criteria": "host_components/metrics/dfs/FSNamesystem/HAState=active"
+            },
+            {
+              "name": "mem_free",
+              "metric_path": "metrics/memory/mem_free",
+              "service_name": "HDFS",
+              "component_name": "NAMENODE",
+              "host_component_criteria": "host_components/metrics/dfs/FSNamesystem/HAState=active"
+            }
+          ],
+          "values": [
+            {
+              "name": "CPU utilization",
+              "value": "${((cpu_system + cpu_user + cpu_nice)/(cpu_system + cpu_user + cpu_nice + cpu_idle + cpu_wio)) * 100}"
+            },
+            {
+              "name": "Memory utilization",
+              "value": "${((mem_total - mem_free)/mem_total) * 100}"
+            }
+          ],
+          "properties": {
+            "graph_type": "LINE",
+            "time_range": "1",
+            "display_unit": "%"
+          }
+        },
+        {
+          "widget_name": "NameNode RPC",
+          "description": "Compares the average time spent for RPC request in a queue and RPC request being processed.",
+          "widget_type": "GRAPH",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "rpc.rpc.client.RpcQueueTimeAvgTime",
+              "metric_path": "metrics/rpc/client/RpcQueueTime_avg_time",
+              "service_name": "HDFS",
+              "component_name": "NAMENODE",
+              "host_component_criteria": "host_components/metrics/dfs/FSNamesystem/HAState=active"
+            },
+            {
+              "name": "rpc.rpc.client.RpcProcessingTimeAvgTime",
+              "metric_path": "metrics/rpc/client/RpcProcessingTime_avg_time",
+              "service_name": "HDFS",
+              "component_name": "NAMENODE",
+              "host_component_criteria": "host_components/metrics/dfs/FSNamesystem/HAState=active"
+            },
+            {
+              "name": "rpc.rpc.datanode.RpcQueueTimeAvgTime",
+              "metric_path": "metrics/rpc/datanode/RpcQueueTime_avg_time",
+              "service_name": "HDFS",
+              "component_name": "NAMENODE",
+              "host_component_criteria": "host_components/metrics/dfs/FSNamesystem/HAState=active"
+            },
+            {
+              "name": "rpc.rpc.datanode.RpcProcessingTimeAvgTime",
+              "metric_path": "metrics/rpc/datanode/RpcProcessingTime_avg_time",
+              "service_name": "HDFS",
+              "component_name": "NAMENODE",
+              "host_component_criteria": "host_components/metrics/dfs/FSNamesystem/HAState=active"
+            }
+          ],
+          "values": [
+            {
+              "name": "Client RPC Queue Wait time",
+              "value": "${rpc.rpc.client.RpcQueueTimeAvgTime}"
+            },
+            {
+              "name": "Client RPC Processing time",
+              "value": "${rpc.rpc.client.RpcProcessingTimeAvgTime}"
+            },
+            {
+              "name": "Datanode RPC Queue Wait time",
+              "value": "${rpc.rpc.datanode.RpcQueueTimeAvgTime}"
+            },
+            {
+              "name": "Datanode RPC Processing time",
+              "value": "${rpc.rpc.datanode.RpcProcessingTimeAvgTime}"
+            }
+          ],
+          "properties": {
+            "graph_type": "LINE",
+            "time_range": "1",
+            "display_unit": "ms"
+          }
+        },
+        {
+          "widget_name": "NameNode Operations",
+          "description": "Rate per second of number of file operation over time.",
+          "widget_type": "GRAPH",
+          "is_visible": false,
+          "metrics": [
+            {
+              "name": "dfs.namenode.TotalFileOps._rate",
+              "metric_path": "metrics/dfs/namenode/TotalFileOps._rate",
+              "service_name": "HDFS",
+              "component_name": "NAMENODE",
+              "host_component_criteria": "host_components/metrics/dfs/FSNamesystem/HAState=active"
+            }
+          ],
+          "values": [
+            {
+              "name": "NameNode File Operations",
+              "value": "${dfs.namenode.TotalFileOps._rate}"
+            }
+          ],
+          "properties": {
+            "graph_type": "LINE",
+            "time_range": "1"
+          }
+        },
+        {
+          "widget_name": "Failed disk volumes",
+          "description": "Number of Failed disk volumes across all DataNodes. Its indicative of HDFS bad health.",
+          "widget_type": "NUMBER",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.NumFailedVolumes._sum",
+              "metric_path": "metrics/dfs/datanode/NumFailedVolumes",
+              "service_name": "HDFS",
+              "component_name": "DATANODE"
+            }
+          ],
+          "values": [
+            {
+              "name": "Failed disk volumes",
+              "value": "${FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.NumFailedVolumes._sum}"
+            }
+          ],
+          "properties": {
+            "display_unit": ""
+          }
+        },
+        {
+          "widget_name": "Blocks With Corrupted Replicas",
+          "description": "Number represents data blocks with at least one corrupted replica (but not all of them). Its indicative of HDFS bad health.",
+          "widget_type": "NUMBER",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "Hadoop:service=NameNode,name=FSNamesystem.CorruptBlocks",
+              "metric_path": "metrics/dfs/FSNamesystem/CorruptBlocks",
+              "service_name": "HDFS",
+              "component_name": "NAMENODE",
+              "host_component_criteria": "host_components/metrics/dfs/FSNamesystem/HAState=active"
+            }
+          ],
+          "values": [
+            {
+              "name": "Blocks With Corrupted Replicas",
+              "value": "${Hadoop:service=NameNode,name=FSNamesystem.CorruptBlocks}"
+            }
+          ],
+          "properties": {
+            "warning_threshold": "0",
+            "error_threshold": "50"
+          }
+        },
+        {
+          "widget_name": "Under Replicated Blocks",
+          "description": "Number represents file blocks that does not meet the replication factor criteria. Its indicative of HDFS bad health.",
+          "widget_type": "NUMBER",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "Hadoop:service=NameNode,name=FSNamesystem.UnderReplicatedBlocks",
+              "metric_path": "metrics/dfs/FSNamesystem/UnderReplicatedBlocks",
+              "service_name": "HDFS",
+              "component_name": "NAMENODE",
+              "host_component_criteria": "host_components/metrics/dfs/FSNamesystem/HAState=active"
+            }
+          ],
+          "values": [
+            {
+              "name": "Under Replicated Blocks",
+              "value": "${Hadoop:service=NameNode,name=FSNamesystem.UnderReplicatedBlocks}"
+            }
+          ],
+          "properties": {
+            "warning_threshold": "0",
+            "error_threshold": "50"
+          }
+        },
+        {
+          "widget_name": "HDFS Space Utilization",
+          "description": "Percentage of available space used in the DFS.",
+          "widget_type": "GAUGE",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Remaining",
+              "metric_path": "metrics/FSDatasetState/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl/Remaining",
+              "service_name": "HDFS",
+              "component_name": "DATANODE"
+            },
+            {
+              "name": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Capacity",
+              "metric_path": "metrics/dfs/datanode/Capacity",
+              "service_name": "HDFS",
+              "component_name": "DATANODE"
+            }
+          ],
+          "values": [
+            {
+              "name": "HDFS Space Utilization",
+              "value": "${(FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Capacity - FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Remaining)/FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Capacity}"
+            }
+          ],
+          "properties": {
+            "warning_threshold": "0.75",
+            "error_threshold": "0.9"
+          }
+        }
+      ]
+    },
+    {
+      "layout_name": "default_hdfs_heatmap",
+      "section_name": "HDFS_HEATMAPS",
+      "display_name": "HDFS Heatmaps",
+      "widgetLayoutInfo": [
+        {
+          "widget_name": "HDFS Bytes Read",
+          "default_section_name": "HDFS_HEATMAPS",
+          "description": "",
+          "widget_type": "HEATMAP",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "dfs.datanode.BytesRead._rate",
+              "metric_path": "metrics/dfs/datanode/bytes_read._rate",
+              "service_name": "HDFS",
+              "component_name": "DATANODE"
+            }
+          ],
+          "values": [
+            {
+              "name": "HDFS Bytes Read",
+              "value": "${dfs.datanode.BytesRead._rate}"
+            }
+          ],
+          "properties": {
+            "display_unit": "MB",
+            "max_limit": "1024"
+          }
+        },
+        {
+          "widget_name": "HDFS Bytes Written",
+          "description": "",
+          "widget_type": "HEATMAP",
+          "is_visible": false,
+          "metrics": [
+            {
+              "name": "dfs.datanode.BytesWritten._rate",
+              "metric_path": "metrics/dfs/datanode/bytes_written._rate",
+              "service_name": "HDFS",
+              "component_name": "DATANODE"
+            }
+          ],
+          "values": [
+            {
+              "name": "HDFS Bytes Written",
+              "value": "${dfs.datanode.BytesWritten._rate}"
+            }
+          ],
+          "properties": {
+            "display_unit": "MB",
+            "max_limit": "1024"
+          }
+        },
+        {
+          "widget_name": "DataNode Garbage Collection Time",
+          "description": "",
+          "widget_type": "HEATMAP",
+          "is_visible": false,
+          "metrics": [
+            {
+              "name": "Hadoop:service=DataNode,name=JvmMetrics.GcTimeMillis",
+              "metric_path": "metrics/jvm/gcTimeMillis",
+              "service_name": "HDFS",
+              "component_name": "DATANODE"
+            }
+          ],
+          "values": [
+            {
+              "name": "DataNode Garbage Collection Time",
+              "value": "${Hadoop:service=DataNode,name=JvmMetrics.GcTimeMillis}"
+            }
+          ],
+          "properties": {
+            "display_unit": "ms",
+            "max_limit": "10000"
+          }
+        },
+        {
+          "widget_name": "DataNode JVM Heap Memory Used",
+          "description": "",
+          "widget_type": "HEATMAP",
+          "is_visible": false,
+          "metrics": [
+            {
+              "name": "Hadoop:service=DataNode,name=JvmMetrics.MemHeapUsedM",
+              "metric_path": "metrics/jvm/memHeapUsedM",
+              "service_name": "HDFS",
+              "component_name": "DATANODE"
+            }
+          ],
+          "values": [
+            {
+              "name": "DataNode JVM Heap Memory Used",
+              "value": "${Hadoop:service=DataNode,name=JvmMetrics.MemHeapUsedM}"
+            }
+          ],
+          "properties": {
+            "display_unit": "MB",
+            "max_limit": "512"
+          }
+        },
+        {
+          "widget_name": "DataNode JVM Heap Memory Committed",
+          "description": "",
+          "widget_type": "HEATMAP",
+          "is_visible": false,
+          "metrics": [
+            {
+              "name": "Hadoop:service=DataNode,name=JvmMetrics.MemHeapCommittedM",
+              "metric_path": "metrics/jvm/memHeapCommittedM",
+              "service_name": "HDFS",
+              "component_name": "DATANODE"
+            }
+          ],
+          "values": [
+            {
+              "name": "DataNode JVM Heap Memory Committed",
+              "value": "${Hadoop:service=DataNode,name=JvmMetrics.MemHeapCommittedM}"
+            }
+          ],
+          "properties": {
+            "display_unit": "MB",
+            "max_limit": "512"
+          }
+        },
+        {
+          "widget_name": "DataNode Process Disk I/O Utilization",
+          "default_section_name": "HDFS_HEATMAPS",
+          "description": "",
+          "widget_type": "HEATMAP",
+          "is_visible": false,
+          "metrics": [
+            {
+              "name": "dfs.datanode.BytesRead._rate",
+              "metric_path": "metrics/dfs/datanode/bytes_read._rate",
+              "service_name": "HDFS",
+              "component_name": "DATANODE"
+            },
+            {
+              "name": "dfs.datanode.BytesWritten._rate",
+              "metric_path": "metrics/dfs/datanode/bytes_written._rate",
+              "service_name": "HDFS",
+              "component_name": "DATANODE"
+            },
+            {
+              "name": "dfs.datanode.TotalReadTime._rate",
+              "metric_path": "metrics/dfs/datanode/TotalReadTime._rate",
+              "service_name": "HDFS",
+              "component_name": "DATANODE"
+            },
+            {
+              "name": "dfs.datanode.TotalWriteTime._rate",
+              "metric_path": "metrics/dfs/datanode/TotalWriteTime._rate",
+              "service_name": "HDFS",
+              "component_name": "DATANODE"
+            }
+          ],
+          "values": [
+            {
+              "name": "DataNode Process Disk I/O Utilization",
+              "value": "${((dfs.datanode.BytesRead._rate/dfs.datanode.TotalReadTime._rate)+(dfs.datanode.BytesWritten._rate/dfs.datanode.TotalWriteTime._rate))*50}"
+            }
+          ],
+          "properties": {
+            "display_unit": "%",
+            "max_limit": "100"
+          }
+        },
+        {
+          "widget_name": "DataNode Process Network I/O Utilization",
+          "description": "",
+          "widget_type": "HEATMAP",
+          "is_visible": false,
+          "metrics": [
+            {
+              "name": "dfs.datanode.RemoteBytesRead._rate",
+              "metric_path": "metrics/dfs/datanode/RemoteBytesRead._rate",
+              "service_name": "HDFS",
+              "component_name": "DATANODE"
+            },
+            {
+              "name": "dfs.datanode.ReadsFromRemoteClient._rate",
+              "metric_path": "metrics/dfs/datanode/reads_from_remote_client._rate",
+              "service_name": "HDFS",
+              "component_name": "DATANODE"
+            },
+            {
+              "name": "dfs.datanode.RemoteBytesWritten._rate",
+              "metric_path": "metrics/dfs/datanode/RemoteBytesWritten._rate",
+              "service_name": "HDFS",
+              "component_name": "DATANODE"
+            },
+            {
+              "name": "dfs.datanode.WritesFromRemoteClient._rate",
+              "metric_path": "metrics/dfs/datanode/writes_from_remote_client._rate",
+              "service_name": "HDFS",
+              "component_name": "DATANODE"
+            }
+          ],
+          "values": [
+            {
+              "name": "DataNode Process Network I/O Utilization",
+              "value": "${((dfs.datanode.RemoteBytesRead._rate/dfs.datanode.ReadsFromRemoteClient._rate)+(dfs.datanode.RemoteBytesWritten._rate/dfs.datanode.WritesFromRemoteClient._rate))*50}"
+            }
+          ],
+          "properties": {
+            "display_unit": "%",
+            "max_limit": "100"
+          }
+        },
+        {
+          "widget_name": "HDFS Space Utilization",
+          "widget_type": "HEATMAP",
+          "is_visible": false,
+          "metrics": [
+            {
+              "name": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Remaining",
+              "metric_path": "metrics/FSDatasetState/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl/Remaining",
+              "service_name": "HDFS",
+              "component_name": "DATANODE"
+            },
+            {
+              "name": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Capacity",
+              "metric_path": "metrics/dfs/datanode/Capacity",
+              "service_name": "HDFS",
+              "component_name": "DATANODE"
+            }
+          ],
+          "values": [
+            {
+              "name": "HDFS Space Utilization",
+              "value": "${((FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Capacity - FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Remaining)/FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Capacity) * 100}"
+            }
+          ],
+          "properties": {
+            "display_unit": "%",
+            "max_limit": "100"
+          }
+        }
+      ]
+    }
+  ]
+}

+ 36 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/SLEEPY/configuration/sleepy-site.xml

@@ -0,0 +1,36 @@
+<?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>success.percentage</name>
+    <value>100</value>
+    <description>The success percentage of any operation.</description>
+    <display-name>Success percentage</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>0</minimum>
+      <maximum>100</maximum>
+      <increment-step>10</increment-step>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+</configuration>

+ 57 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/SLEEPY/metainfo.xml

@@ -0,0 +1,57 @@
+<?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>
+  <schemaVersion>2.0</schemaVersion>
+  <services>
+    <service>
+      <name>SLEEPY</name>
+      <displayName>Sleepy</displayName>
+      <comment>Timesout with some percentage</comment>
+      <version>1.0</version>
+      <components>
+
+        <component>
+          <name>SLEEPY</name>
+          <displayName>Sleepy</displayName>
+          <category>SLAVE</category>
+          <cardinality>0+</cardinality>
+          <commandScript>
+            <script>scripts/dwarf.py</script>
+            <scriptType>PYTHON</scriptType>
+            <timeout>600</timeout>
+          </commandScript>
+        </component>
+      </components>
+
+      <commandScript>
+        <script>scripts/service_check.py</script>
+        <scriptType>PYTHON</scriptType>
+        <timeout>300</timeout>
+      </commandScript>
+
+      <restartRequiredAfterChange>true</restartRequiredAfterChange>
+
+      <themes>
+        <theme>
+          <fileName>theme.json</fileName>
+          <default>true</default>
+        </theme>
+      </themes>
+    </service>
+  </services>
+</metainfo>

+ 38 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/SLEEPY/package/scripts/dwarf.py

@@ -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.
+
+Ambari Agent
+
+"""
+
+# Python Imports
+
+# Local Imports
+from resource_management.libraries.script.dummy import Dummy
+
+
+class Sleepy(Dummy):
+  """
+  Dummy script that simulates a slave component.
+  """
+
+  def __init__(self):
+    super(Sleepy, self).__init__()
+    self.component_name = "SLEEPY"
+
+if __name__ == "__main__":
+  Sleepy().execute()

+ 30 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/SLEEPY/package/scripts/service_check.py

@@ -0,0 +1,30 @@
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Ambari Agent
+
+"""
+
+from resource_management.libraries.script.script import Script
+
+class ServiceCheck(Script):
+
+  def service_check(self, env):
+    print "Service Check"
+
+if __name__ == "__main__":
+  ServiceCheck().execute()

+ 65 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/SLEEPY/themes/theme.json

@@ -0,0 +1,65 @@
+{
+  "name": "default",
+  "description": "Default theme",
+  "configuration": {
+    "layouts": [
+      {
+        "name": "default",
+        "tabs": [
+          {
+            "name": "settings",
+            "display-name": "Settings",
+            "layout": {
+              "tab-columns": "1",
+              "tab-rows": "1",
+              "sections": [
+                {
+                  "name": "section-general",
+                  "display-name": "General",
+                  "row-index": "0",
+                  "column-index": "0",
+                  "row-span": "1",
+                  "column-span": "1",
+                  "section-columns": "1",
+                  "section-rows": "1",
+                  "subsections": [
+                    {
+                      "name": "subsection-general",
+                      "display-name": "Features",
+                      "row-index": "0",
+                      "column-index": "0",
+                      "row-span": "1",
+                      "column-span": "1"
+                    }
+                  ]
+                }
+              ]
+            }
+          }
+        ]
+      }
+    ],
+    "placement": {
+      "configuration-layout": "default",
+      "configs": [
+        {
+          "config": "sleepy-site/success.percentage",
+          "subsection-name": "subsection-general"
+        }
+      ]
+    },
+    "widgets": [
+      {
+        "config": "sleepy-site/success.percentage",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "percent"
+            }
+          ]
+        }
+      }
+    ]
+  }
+}

+ 3486 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/YARN_metrics.json

@@ -0,0 +1,3486 @@
+{
+  "NODEMANAGER": {
+    "Component": [
+      {
+        "type": "ganglia",
+        "metrics": {
+          "default": {
+            "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_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/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_buffered": {
+              "metric": "mem_buffered",
+              "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,
+              "amsHostMetric": true
+            },
+            "metrics/memory/mem_total": {
+              "metric": "mem_total",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/memory/swap_free": {
+              "metric": "swap_free",
+              "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/disk/read_count": {
+              "metric": "read_count",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/disk/write_count": {
+              "metric": "write_count",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/disk/read_bytes": {
+              "metric": "read_bytes",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/disk/write_bytes": {
+              "metric": "write_bytes",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/disk/read_time": {
+              "metric": "read_time",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/disk/write_time": {
+              "metric": "write_time",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/disk/read_bps":{
+              "metric":"read_bps",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/disk/write_bps":{
+              "metric":"write_bps",
+              "pointInTime":true,
+              "temporal":true,
+              "amsHostMetric":true
+            },
+            "metrics/jvm/memHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemHeapCommittedM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/mapred/ShuffleOutputsFailed": {
+              "metric": "mapred.ShuffleMetrics.ShuffleOutputsFailed",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsRunnable": {
+              "metric": "jvm.JvmMetrics.ThreadsRunnable",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsNew": {
+              "metric": "jvm.JvmMetrics.ThreadsNew",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationFailures": {
+              "metric": "rpc.rpc.RpcAuthorizationFailures",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginSuccess_avg_time": {
+              "metric": "ugi.UgiMetrics.LoginSuccessAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_avg_time": {
+              "metric": "rpc.rpc.RpcQueueTimeAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/SentBytes": {
+              "metric": "rpc.rpc.SentBytes",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapUsedM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logWarn": {
+              "metric": "jvm.JvmMetrics.LogWarn",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTimedWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsTimedWaiting",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/gcCount": {
+              "metric": "jvm.JvmMetrics.GcCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/ReceivedBytes": {
+              "metric": "rpc.rpc.ReceivedBytes",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsBlocked": {
+              "metric": "jvm.JvmMetrics.ThreadsBlocked",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_num_ops": {
+              "metric": "rpc.rpc.RpcQueueTimeNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/AllocatedContainers": {
+              "metric": "yarn.NodeManagerMetrics.AllocatedContainers",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/AllocatedGB": {
+              "metric": "yarn.NodeManagerMetrics.AllocatedGB",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/AvailableGB": {
+              "metric": "yarn.NodeManagerMetrics.AvailableGB",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/AllocatedVCores": {
+              "metric": "yarn.NodeManagerMetrics.AllocatedVCores",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/AvailableVCores": {
+              "metric": "yarn.NodeManagerMetrics.AvailableVCores",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/BadLocalDirs": {
+              "metric": "yarn.NodeManagerMetrics.BadLocalDirs",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/BadLogDirs": {
+              "metric": "yarn.NodeManagerMetrics.BadLogDirs",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/ContainerLaunchDurationAvgTime": {
+              "metric": "yarn.NodeManagerMetrics.ContainerLaunchDurationAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/ContainerLaunchDurationNumOps": {
+              "metric": "yarn.NodeManagerMetrics.ContainerLaunchDurationNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/ContainersCompleted": {
+              "metric": "yarn.NodeManagerMetrics.ContainersCompleted",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/ContainersFailed": {
+              "metric": "yarn.NodeManagerMetrics.ContainersFailed",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/ContainersIniting": {
+              "metric": "yarn.NodeManagerMetrics.ContainersIniting",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/ContainersKilled": {
+              "metric": "yarn.NodeManagerMetrics.ContainersKilled",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/ContainersLaunched": {
+              "metric": "yarn.NodeManagerMetrics.ContainersLaunched",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/ContainersRunning": {
+              "metric": "yarn.NodeManagerMetrics.ContainersRunning",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/GoodLocalDirsDiskUtilizationPerc": {
+              "metric": "yarn.NodeManagerMetrics.GoodLocalDirsDiskUtilizationPerc",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/GoodLogDirsDiskUtilizationPerc": {
+              "metric": "yarn.NodeManagerMetrics.GoodLogDirsDiskUtilizationPerc",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/NumOpenConnections": {
+              "metric": "rpc.rpc.NumOpenConnections",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemHeapUsedM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsWaiting",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/mapred/ShuffleOutputsOK": {
+              "metric": "mapred.ShuffleMetrics.ShuffleOutputsOK",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/loginSuccess_num_ops": {
+              "metric": "ugi.UgiMetrics.LoginSuccessNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/gcTimeMillis": {
+              "metric": "jvm.JvmMetrics.GcTimeMillis",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTerminated": {
+              "metric": "jvm.JvmMetrics.ThreadsTerminated",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapCommittedM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/callQueueLen": {
+              "metric": "rpc.rpc.CallQueueLength",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logInfo": {
+              "metric": "jvm.JvmMetrics.LogInfo",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_num_ops": {
+              "metric": "rpc.rpc.RpcProcessingTimeNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginFailure_num_ops": {
+              "metric": "ugi.UgiMetrics.LoginFailureNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/mapred/ShuffleConnections": {
+              "metric": "mapred.ShuffleMetrics.ShuffleConnections",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logError": {
+              "metric": "jvm.JvmMetrics.LogError",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginFailure_avg_time": {
+              "metric": "ugi.UgiMetrics.LoginFailureAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationSuccesses": {
+              "metric": "rpc.rpc.RpcAuthorizationSuccesses",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logFatal": {
+              "metric": "jvm.JvmMetrics.LogFatal",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_avg_time": {
+              "metric": "rpc.rpc.RpcProcessingTimeAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/mapred/ShuffleOutputBytes": {
+              "metric": "mapred.ShuffleMetrics.ShuffleOutputBytes",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthenticationSuccesses": {
+              "metric": "rpc.rpc.RpcAuthenticationSuccesses",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthenticationFailures": {
+              "metric": "rpc.rpc.RpcAuthenticationFailures",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcCountCopy": {
+              "metric": "jvm.JvmMetrics.GcCountCopy",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcCountMarkSweepCompact": {
+              "metric": "jvm.JvmMetrics.GcCountMarkSweepCompact",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcTimeMillisCopy": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisCopy",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcTimeMillisMarkSweepCompact": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisMarkSweepCompact",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemHeapMaxM": {
+              "metric": "jvm.JvmMetrics.MemHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemMaxM": {
+              "metric": "jvm.JvmMetrics.MemMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemNonHeapMaxM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/DroppedPubAll": {
+              "metric": "metricssystem.MetricsSystem.DroppedPubAll",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumActiveSinks": {
+              "metric": "metricssystem.MetricsSystem.NumActiveSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumActiveSources": {
+              "metric": "metricssystem.MetricsSystem.NumActiveSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumAllSinks": {
+              "metric": "metricssystem.MetricsSystem.NumAllSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumAllSources": {
+              "metric": "metricssystem.MetricsSystem.NumAllSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/PublishAvgTime": {
+              "metric": "metricssystem.MetricsSystem.PublishAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/PublishNumOps": {
+              "metric": "metricssystem.MetricsSystem.PublishNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineAvgTime": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineDropped": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineDropped",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineNumOps": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineQsize": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineQsize",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/SnapshotAvgTime": {
+              "metric": "metricssystem.MetricsSystem.SnapshotAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/SnapshotNumOps": {
+              "metric": "metricssystem.MetricsSystem.SnapshotNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpc/RpcClientBackoff": {
+              "metric": "rpc.rpc.RpcClientBackoff",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetContainerStatusesAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.GetContainerStatusesAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetContainerStatusesNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.GetContainerStatusesNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/HeartbeatAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.HeartbeatAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/HeartbeatNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.HeartbeatNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/StartContainersAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.StartContainersAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/StartContainersNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.StartContainersNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/StopContainersAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.StopContainersAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/StopContainersNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.StopContainersNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/GetGroupsAvgTime": {
+              "metric": "ugi.UgiMetrics.GetGroupsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/GetGroupsNumOps": {
+              "metric": "ugi.UgiMetrics.GetGroupsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            }
+          }
+        }
+      }
+    ],
+    "HostComponent": [
+      {
+        "type": "ganglia",
+        "metrics": {
+          "default": {
+            "metrics/cpu/cpu_idle": {
+              "metric": "cpu_idle",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/cpu/cpu_nice": {
+              "metric": "cpu_nice",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/cpu/cpu_system": {
+              "metric": "cpu_system",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/cpu/cpu_user": {
+              "metric": "cpu_user",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/cpu/cpu_wio": {
+              "metric": "cpu_wio",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/disk/disk_free": {
+              "metric": "disk_free",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/disk/disk_total": {
+              "metric": "disk_total",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/load/load_fifteen": {
+              "metric": "load_fifteen",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/load/load_five": {
+              "metric": "load_five",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/load/load_one": {
+              "metric": "load_one",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/memory/mem_buffered": {
+              "metric": "mem_buffered",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/memory/mem_cached": {
+              "metric": "mem_cached",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/memory/mem_free": {
+              "metric": "mem_free",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/memory/mem_shared": {
+              "metric": "mem_shared",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/memory/mem_total": {
+              "metric": "mem_total",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/memory/swap_free": {
+              "metric": "swap_free",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/network/bytes_in": {
+              "metric": "bytes_in",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/network/bytes_out": {
+              "metric": "bytes_out",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/network/pkts_in": {
+              "metric": "pkts_in",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/network/pkts_out": {
+              "metric": "pkts_out",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/process/proc_run": {
+              "metric": "proc_run",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/process/proc_total": {
+              "metric": "proc_total",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/disk/read_count": {
+              "metric": "read_count",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/disk/write_count": {
+              "metric": "write_count",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/disk/read_bytes": {
+              "metric": "read_bytes",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/disk/write_bytes": {
+              "metric": "write_bytes",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/disk/read_time": {
+              "metric": "read_time",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/disk/write_time": {
+              "metric": "write_time",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/jvm/memHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemHeapCommittedM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/mapred/ShuffleOutputsFailed": {
+              "metric": "mapred.ShuffleMetrics.ShuffleOutputsFailed",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsRunnable": {
+              "metric": "jvm.JvmMetrics.ThreadsRunnable",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsNew": {
+              "metric": "jvm.JvmMetrics.ThreadsNew",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationFailures": {
+              "metric": "rpc.rpc.RpcAuthorizationFailures",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginSuccess_avg_time": {
+              "metric": "ugi.UgiMetrics.LoginSuccessAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_avg_time": {
+              "metric": "rpc.rpc.RpcQueueTimeAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/SentBytes": {
+              "metric": "rpc.rpc.SentBytes",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapUsedM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logWarn": {
+              "metric": "jvm.JvmMetrics.LogWarn",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTimedWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsTimedWaiting",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/gcCount": {
+              "metric": "jvm.JvmMetrics.GcCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/ReceivedBytes": {
+              "metric": "rpc.rpc.ReceivedBytes",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsBlocked": {
+              "metric": "jvm.JvmMetrics.ThreadsBlocked",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_num_ops": {
+              "metric": "rpc.rpc.RpcQueueTimeNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/AllocatedContainers": {
+              "metric": "yarn.NodeManagerMetrics.AllocatedContainers",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/AllocatedGB": {
+              "metric": "yarn.NodeManagerMetrics.AllocatedGB",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/AvailableGB": {
+              "metric": "yarn.NodeManagerMetrics.AvailableGB",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/AllocatedVCores": {
+              "metric": "yarn.NodeManagerMetrics.AllocatedVCores",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/AvailableVCores": {
+              "metric": "yarn.NodeManagerMetrics.AvailableVCores",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/BadLocalDirs": {
+              "metric": "yarn.NodeManagerMetrics.BadLocalDirs",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/BadLogDirs": {
+              "metric": "yarn.NodeManagerMetrics.BadLogDirs",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/ContainerLaunchDurationAvgTime": {
+              "metric": "yarn.NodeManagerMetrics.ContainerLaunchDurationAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/ContainerLaunchDurationNumOps": {
+              "metric": "yarn.NodeManagerMetrics.ContainerLaunchDurationNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/ContainersCompleted": {
+              "metric": "yarn.NodeManagerMetrics.ContainersCompleted",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/ContainersFailed": {
+              "metric": "yarn.NodeManagerMetrics.ContainersFailed",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/ContainersIniting": {
+              "metric": "yarn.NodeManagerMetrics.ContainersIniting",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/ContainersKilled": {
+              "metric": "yarn.NodeManagerMetrics.ContainersKilled",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/ContainersLaunched": {
+              "metric": "yarn.NodeManagerMetrics.ContainersLaunched",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/ContainersRunning": {
+              "metric": "yarn.NodeManagerMetrics.ContainersRunning",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/GoodLocalDirsDiskUtilizationPerc": {
+              "metric": "yarn.NodeManagerMetrics.GoodLocalDirsDiskUtilizationPerc",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/GoodLogDirsDiskUtilizationPerc": {
+              "metric": "yarn.NodeManagerMetrics.GoodLogDirsDiskUtilizationPerc",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/NumOpenConnections": {
+              "metric": "rpc.rpc.NumOpenConnections",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemHeapUsedM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsWaiting",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/mapred/ShuffleOutputsOK": {
+              "metric": "mapred.ShuffleMetrics.ShuffleOutputsOK",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/loginSuccess_num_ops": {
+              "metric": "ugi.UgiMetrics.LoginSuccessNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/gcTimeMillis": {
+              "metric": "jvm.JvmMetrics.GcTimeMillis",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTerminated": {
+              "metric": "jvm.JvmMetrics.ThreadsTerminated",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapCommittedM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/callQueueLen": {
+              "metric": "rpc.rpc.CallQueueLength",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logInfo": {
+              "metric": "jvm.JvmMetrics.LogInfo",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_num_ops": {
+              "metric": "rpc.rpc.RpcProcessingTimeNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginFailure_num_ops": {
+              "metric": "ugi.UgiMetrics.LoginFailureNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/mapred/ShuffleConnections": {
+              "metric": "mapred.ShuffleMetrics.ShuffleConnections",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logError": {
+              "metric": "jvm.JvmMetrics.LogError",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginFailure_avg_time": {
+              "metric": "ugi.UgiMetrics.LoginFailureAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationSuccesses": {
+              "metric": "rpc.rpc.RpcAuthorizationSuccesses",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logFatal": {
+              "metric": "jvm.JvmMetrics.LogFatal",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_avg_time": {
+              "metric": "rpc.rpc.RpcProcessingTimeAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/mapred/ShuffleOutputBytes": {
+              "metric": "mapred.ShuffleMetrics.ShuffleOutputBytes",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthenticationSuccesses": {
+              "metric": "rpc.rpc.RpcAuthenticationSuccesses",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthenticationFailures": {
+              "metric": "rpc.rpc.RpcAuthenticationFailures",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcCountCopy": {
+              "metric": "jvm.JvmMetrics.GcCountCopy",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcCountMarkSweepCompact": {
+              "metric": "jvm.JvmMetrics.GcCountMarkSweepCompact",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcTimeMillisCopy": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisCopy",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcTimeMillisMarkSweepCompact": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisMarkSweepCompact",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemHeapMaxM": {
+              "metric": "jvm.JvmMetrics.MemHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemMaxM": {
+              "metric": "jvm.JvmMetrics.MemMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemNonHeapMaxM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/DroppedPubAll": {
+              "metric": "metricssystem.MetricsSystem.DroppedPubAll",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumActiveSinks": {
+              "metric": "metricssystem.MetricsSystem.NumActiveSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumActiveSources": {
+              "metric": "metricssystem.MetricsSystem.NumActiveSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumAllSinks": {
+              "metric": "metricssystem.MetricsSystem.NumAllSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumAllSources": {
+              "metric": "metricssystem.MetricsSystem.NumAllSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/PublishAvgTime": {
+              "metric": "metricssystem.MetricsSystem.PublishAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/PublishNumOps": {
+              "metric": "metricssystem.MetricsSystem.PublishNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineAvgTime": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineDropped": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineDropped",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineNumOps": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineQsize": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineQsize",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/SnapshotAvgTime": {
+              "metric": "metricssystem.MetricsSystem.SnapshotAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/SnapshotNumOps": {
+              "metric": "metricssystem.MetricsSystem.SnapshotNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpc/RpcClientBackoff": {
+              "metric": "rpc.rpc.RpcClientBackoff",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetContainerStatusesAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.GetContainerStatusesAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetContainerStatusesNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.GetContainerStatusesNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/HeartbeatAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.HeartbeatAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/HeartbeatNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.HeartbeatNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/StartContainersAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.StartContainersAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/StartContainersNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.StartContainersNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/StopContainersAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.StopContainersAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/StopContainersNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.StopContainersNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/GetGroupsAvgTime": {
+              "metric": "ugi.UgiMetrics.GetGroupsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/GetGroupsNumOps": {
+              "metric": "ugi.UgiMetrics.GetGroupsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            }
+          }
+        }
+      },
+      {
+        "type": "jmx",
+        "metrics": {
+          "default": {
+            "metrics/jvm/memHeapCommittedM": {
+              "metric": "Hadoop:service=NodeManager,name=JvmMetrics.MemHeapCommittedM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsRunnable": {
+              "metric": "Hadoop:service=NodeManager,name=JvmMetrics.ThreadsRunnable",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsNew": {
+              "metric": "Hadoop:service=NodeManager,name=JvmMetrics.ThreadsNew",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memNonHeapCommittedM": {
+              "metric": "Hadoop:service=NodeManager,name=JvmMetrics.MemNonHeapCommittedM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/callQueueLen": {
+              "metric": "Hadoop:service=NodeManager,name=RpcActivity.CallQueueLength",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthorizationFailures": {
+              "metric": "Hadoop:service=NodeManager,name=RpcActivity.RpcAuthorizationFailures",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcQueueTime_avg_time": {
+              "metric": "Hadoop:service=NodeManager,name=RpcActivity.RpcQueueTimeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginSuccess_avg_time": {
+              "metric": "Hadoop:service=NodeManager,name=UgiMetrics.LoginSuccessAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/SentBytes": {
+              "metric": "Hadoop:service=NodeManager,name=RpcActivity.SentBytes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logInfo": {
+              "metric": "Hadoop:service=NodeManager,name=JvmMetrics.LogInfo",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memNonHeapUsedM": {
+              "metric": "Hadoop:service=NodeManager,name=JvmMetrics.MemNonHeapUsedM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logWarn": {
+              "metric": "Hadoop:service=NodeManager,name=JvmMetrics.LogWarn",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginFailure_num_ops": {
+              "metric": "Hadoop:service=NodeManager,name=UgiMetrics.LoginFailureNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsTimedWaiting": {
+              "metric": "Hadoop:service=NodeManager,name=JvmMetrics.ThreadsTimedWaiting",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcProcessingTime_num_ops": {
+              "metric": "Hadoop:service=NodeManager,name=RpcActivity.RpcProcessingTimeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/gcCount": {
+              "metric": "Hadoop:service=NodeManager,name=JvmMetrics.GcCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/ReceivedBytes": {
+              "metric": "Hadoop:service=NodeManager,name=RpcActivity.ReceivedBytes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsBlocked": {
+              "metric": "Hadoop:service=NodeManager,name=JvmMetrics.ThreadsBlocked",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcQueueTime_num_ops": {
+              "metric": "Hadoop:service=NodeManager,name=RpcActivity.RpcQueueTimeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logError": {
+              "metric": "Hadoop:service=NodeManager,name=JvmMetrics.LogError",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginFailure_avg_time": {
+              "metric": "Hadoop:service=NodeManager,name=UgiMetrics.LoginFailureAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthorizationSuccesses": {
+              "metric": "Hadoop:service=NodeManager,name=RpcActivity.RpcAuthorizationSuccesses",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/NumOpenConnections": {
+              "metric": "Hadoop:service=NodeManager,name=RpcActivity.NumOpenConnections",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memHeapUsedM": {
+              "metric": "Hadoop:service=NodeManager,name=JvmMetrics.MemHeapUsedM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logFatal": {
+              "metric": "Hadoop:service=NodeManager,name=JvmMetrics.LogFatal",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcProcessingTime_avg_time": {
+              "metric": "Hadoop:service=NodeManager,name=RpcActivity.RpcProcessingTimeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsWaiting": {
+              "metric": "Hadoop:service=NodeManager,name=JvmMetrics.ThreadsWaiting",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/gcTimeMillis": {
+              "metric": "Hadoop:service=NodeManager,name=JvmMetrics.GcTimeMillis",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginSuccess_num_ops": {
+              "metric": "Hadoop:service=NodeManager,name=UgiMetrics.LoginSuccessNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthenticationSuccesses": {
+              "metric": "Hadoop:service=NodeManager,name=RpcActivity.RpcAuthenticationSuccesses",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthenticationFailures": {
+              "metric": "Hadoop:service=NodeManager,name=RpcActivity.RpcAuthenticationFailures",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsTerminated": {
+              "metric": "Hadoop:service=NodeManager,name=JvmMetrics.ThreadsTerminated",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/nodemanager/GoodLocalDirsDiskUtilizationPerc": {
+              "metric": "Hadoop:service=NodeManager,name=NodeManagerMetrics.GoodLocalDirsDiskUtilizationPerc",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/nodemanager/GoodLogDirsDiskUtilizationPerc": {
+              "metric": "Hadoop:service=NodeManager,name=NodeManagerMetrics.GoodLogDirsDiskUtilizationPerc",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/nodemanager/AllocatedGB": {
+              "metric": "Hadoop:service=NodeManager,name=NodeManagerMetrics.AllocatedGB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/nodemanager/AllocatedVCores": {
+              "metric": "Hadoop:service=NodeManager,name=NodeManagerMetrics.AllocatedVCores",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/nodemanager/BadLocalDirs": {
+              "metric": "Hadoop:service=NodeManager,name=NodeManagerMetrics.BadLocalDirs",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/nodemanager/BadLogDirs": {
+              "metric": "Hadoop:service=NodeManager,name=NodeManagerMetrics.BadLogDirs",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/nodemanager/ContainersFailed": {
+              "metric": "Hadoop:service=NodeManager,name=NodeManagerMetrics.ContainersFailed",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/nodemanager/AllocatedContainers": {
+              "metric": "Hadoop:service=NodeManager,name=NodeManagerMetrics.AllocatedContainers",
+              "pointInTime": true,
+              "temporal": false
+            }
+          }
+        }
+      }
+    ]
+  },
+  "RESOURCEMANAGER": {
+    "Component": [
+      {
+        "type": "ganglia",
+        "metrics": {
+          "default": {
+            "metrics/rpcdetailed/FinishApplicationMasterNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.FinishApplicationMasterNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AppsCompleted": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AppsCompleted",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/ClusterMetrics/NumUnhealthyNMs": {
+              "metric": "yarn.ClusterMetrics.NumUnhealthyNMs",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemHeapCommittedM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsRunnable": {
+              "metric": "jvm.JvmMetrics.ThreadsRunnable",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/ClusterMetrics/NumRebootedNMs": {
+              "metric": "yarn.ClusterMetrics.NumRebootedNMs",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsNew": {
+              "metric": "jvm.JvmMetrics.ThreadsNew",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AppsSubmitted": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AppsSubmitted",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/ClusterMetrics/NumLostNMs": {
+              "metric": "yarn.ClusterMetrics.NumLostNMs",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginSuccess_avg_time": {
+              "metric": "ugi.UgiMetrics.LoginSuccessAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_avg_time": {
+              "metric": "rpc.rpc.RpcQueueTimeAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AllocatedContainers": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AllocatedContainers",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/SentBytes": {
+              "metric": "rpc.rpc.SentBytes",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AppsKilled": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AppsKilled",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/ClusterMetrics/NumActiveNMs": {
+              "metric": "yarn.ClusterMetrics.NumActiveNMs",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapUsedM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logWarn": {
+              "metric": "jvm.JvmMetrics.LogWarn",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTimedWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsTimedWaiting",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AppsFailed": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AppsFailed",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/gcCount": {
+              "metric": "jvm.JvmMetrics.GcCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/ReceivedBytes": {
+              "metric": "rpc.rpc.ReceivedBytes",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/AllocateNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.AllocateNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcCountMarkSweepCompact": {
+              "metric": "jvm.JvmMetrics.GcCountMarkSweepCompact",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsBlocked": {
+              "metric": "jvm.JvmMetrics.ThreadsBlocked",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AppsRunning": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AppsRunning",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/ActiveApplications": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).ActiveApplications",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AMResourceLimitMB": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AMResourceLimitMB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AMResourceLimitVCores": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AMResourceLimitVCores",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/ActiveUsers": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).ActiveUsers",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AggregateContainersAllocated": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AggregateContainersAllocated",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AggregateContainersReleased": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AggregateContainersReleased",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AllocatedVCores": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AllocatedVCores",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AppAttemptFirstContainerAllocationDelayAvgTime": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AppAttemptFirstContainerAllocationDelayAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AppAttemptFirstContainerAllocationDelayNumOps": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AppAttemptFirstContainerAllocationDelayNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AvailableVCores": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AvailableVCores",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/PendingVCores": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).PendingVCores",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/ReservedMB": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).ReservedMB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/ReservedVCores": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).ReservedVCores",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/UsedAMResourceMB": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).UsedAMResourceMB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/UsedAMResourceVCores": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).UsedAMResourceVCores",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/running_0": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).running_0",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/running_1440": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).running_1440",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/running_300": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).running_300",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/running_60": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).running_60",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/ClusterMetrics/NumDecommissionedNMs": {
+              "metric": "yarn.ClusterMetrics.NumDecommissionedNMs",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_num_ops": {
+              "metric": "rpc.rpc.RpcQueueTimeNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/NumOpenConnections": {
+              "metric": "rpc.rpc.NumOpenConnections",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemHeapUsedM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsWaiting",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginSuccess_num_ops": {
+              "metric": "ugi.UgiMetrics.LoginSuccessNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/gcTimeMillisCopy": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisCopy",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcTimeMillis": {
+              "metric": "jvm.JvmMetrics.GcTimeMillis",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/PendingContainers": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).PendingContainers",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memMaxM": {
+              "metric": "jvm.JvmMetrics.MemMaxM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTerminated": {
+              "metric": "jvm.JvmMetrics.ThreadsTerminated",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/AllocateAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.AllocateAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapCommittedM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/GetApplicationReportNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.GetApplicationReportNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/FinishApplicationMasterAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.FinishApplicationMasterAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/callQueueLen": {
+              "metric": "rpc.rpc.CallQueueLength",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/RegisterApplicationMasterNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.RegisterApplicationMasterNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AvailableMB": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AvailableMB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/PendingMB": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).PendingMB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logInfo": {
+              "metric": "jvm.JvmMetrics.LogInfo",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_num_ops": {
+              "metric": "rpc.rpc.RpcProcessingTimeNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginFailure_num_ops": {
+              "metric": "ugi.UgiMetrics.LoginFailureNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/SubmitApplicationAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.SubmitApplicationAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/GetNewApplicationNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.GetNewApplicationNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AppsPending": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AppsPending",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/gcCountCopy": {
+              "metric": "jvm.JvmMetrics.GcCountCopy",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/logError": {
+              "metric": "jvm.JvmMetrics.LogError",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginFailure_avg_time": {
+              "metric": "ugi.UgiMetrics.LoginFailureAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/SubmitApplicationNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.SubmitApplicationNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcTimeMillisMarkSweepCompact": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisMarkSweepCompact",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationSuccesses": {
+              "metric": "rpc.rpc.RpcAuthorizationSuccesses",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AllocatedMB": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AllocatedMB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logFatal": {
+              "metric": "jvm.JvmMetrics.LogFatal",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_avg_time": {
+              "metric": "rpc.rpc.RpcProcessingTimeAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/GetApplicationReportAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.GetApplicationReportAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/NodeHeartbeatAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.NodeHeartbeatAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/GetNewApplicationAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.GetNewApplicationAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/RegisterApplicationMasterAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.RegisterApplicationMasterAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/ReservedContainers": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).ReservedContainers",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcCountMarkSweepCompact": {
+              "metric": "jvm.JvmMetrics.GcCountMarkSweepCompact",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemHeapMaxM": {
+              "metric": "jvm.JvmMetrics.MemHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemNonHeapMaxM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/ThreadsBlocked": {
+              "metric": "jvm.JvmMetrics.ThreadsBlocked",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/DroppedPubAll": {
+              "metric": "metricssystem.MetricsSystem.DroppedPubAll",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumActiveSinks": {
+              "metric": "metricssystem.MetricsSystem.NumActiveSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumActiveSources": {
+              "metric": "metricssystem.MetricsSystem.NumActiveSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumAllSinks": {
+              "metric": "metricssystem.MetricsSystem.NumAllSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumAllSources": {
+              "metric": "metricssystem.MetricsSystem.NumAllSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/PublishAvgTime": {
+              "metric": "metricssystem.MetricsSystem.PublishAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/PublishNumOps": {
+              "metric": "metricssystem.MetricsSystem.PublishNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineAvgTime": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineDropped": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineDropped",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineNumOps": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineQsize": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineQsize",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/SnapshotAvgTime": {
+              "metric": "metricssystem.MetricsSystem.SnapshotAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/SnapshotNumOps": {
+              "metric": "metricssystem.MetricsSystem.SnapshotNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpc/RpcAuthenticationFailures": {
+              "metric": "rpc.rpc.RpcAuthenticationFailures",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpc/RpcAuthenticationSuccesses": {
+              "metric": "rpc.rpc.RpcAuthenticationSuccesses",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpc/RpcAuthorizationFailures": {
+              "metric": "rpc.rpc.RpcAuthorizationFailures",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpc/RpcClientBackoff": {
+              "metric": "rpc.rpc.RpcClientBackoff",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/AllocateNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.AllocateNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetClusterMetricsAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.GetClusterMetricsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetClusterMetricsNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.GetClusterMetricsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetClusterNodesAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.GetClusterNodesAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetClusterNodesNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.GetClusterNodesNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetQueueInfoAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.GetQueueInfoAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetQueueInfoNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.GetQueueInfoNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetQueueUserAclsAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.GetQueueUserAclsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetQueueUserAclsNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.GetQueueUserAclsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/NodeHeartbeatNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.NodeHeartbeatNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/RegisterNodeManagerAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.RegisterNodeManagerAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/RegisterNodeManagerNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.RegisterNodeManagerNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/GetGroupsAvgTime": {
+              "metric": "ugi.UgiMetrics.GetGroupsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/GetGroupsNumOps": {
+              "metric": "ugi.UgiMetrics.GetGroupsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/ClusterMetrics/AMLaunchDelayAvgTime": {
+              "metric": "yarn.ClusterMetrics.AMLaunchDelayAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/ClusterMetrics/AMLaunchDelayNumOps": {
+              "metric": "yarn.ClusterMetrics.AMLaunchDelayNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/ClusterMetrics/AMRegisterDelayAvgTime": {
+              "metric": "yarn.ClusterMetrics.AMRegisterDelayAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/ClusterMetrics/AMRegisterDelayNumOps": {
+              "metric": "yarn.ClusterMetrics.AMRegisterDelayNumOps",
+              "pointInTime": true,
+              "temporal": true
+            }
+          }
+        }
+      },
+      {
+        "type": "jmx",
+        "metrics": {
+          "default": {
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AppsFailed": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AppsFailed",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/rm_metrics/cluster/rebootedNMcount": {
+              "metric": "Hadoop:service=ResourceManager,name=ClusterMetrics.NumRebootedNMs",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memHeapCommittedM": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.MemHeapCommittedM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/ClusterMetrics/NumUnhealthyNMs": {
+              "metric": "Hadoop:service=ResourceManager,name=ClusterMetrics.NumUnhealthyNMs",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/HeapMemoryMax": {
+              "metric": "java.lang:type=Memory.HeapMemoryUsage[max]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/HeapMemoryUsed": {
+              "metric": "java.lang:type=Memory.HeapMemoryUsage[used]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/NonHeapMemoryMax": {
+              "metric": "java.lang:type=Memory.NonHeapMemoryUsage[max]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/NonHeapMemoryUsed": {
+              "metric": "java.lang:type=Memory.NonHeapMemoryUsage[used]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsRunnable": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.ThreadsRunnable",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsNew": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.ThreadsNew",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/ClusterMetrics/NumRebootedNMs": {
+              "metric": "Hadoop:service=ResourceManager,name=ClusterMetrics.NumRebootedNMs",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/runtime/StartTime": {
+              "metric": "java.lang:type=Runtime.StartTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AppsKilled": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AppsKilled",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthorizationFailures": {
+              "metric": "Hadoop:service=ResourceManager,name=RpcActivity.RpcAuthorizationFailures",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AggregateContainersAllocated": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AggregateContainersAllocated",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/ClusterMetrics/NumLostNMs": {
+              "metric": "Hadoop:service=ResourceManager,name=ClusterMetrics.NumLostNMs",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginSuccess_avg_time": {
+              "metric": "Hadoop:service=ResourceManager,name=UgiMetrics.LoginSuccessAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/StartTime": {
+              "metric": "java.lang:type=Runtime.StartTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcQueueTime_avg_time": {
+              "metric": "Hadoop:service=ResourceManager,name=RpcActivity.RpcQueueTimeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/ReservedContainers": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).ReservedContainers",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AppsSubmitted": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AppsSubmitted",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/SentBytes": {
+              "metric": "Hadoop:service=ResourceManager,name=RpcActivity.SentBytes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/ClusterMetrics/NumActiveNMs": {
+              "metric": "Hadoop:service=ResourceManager,name=ClusterMetrics.NumActiveNMs",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/running_300": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).running_300",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memNonHeapUsedM": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.MemNonHeapUsedM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logWarn": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.LogWarn",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsTimedWaiting": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.ThreadsTimedWaiting",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/gcCount": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.GcCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/ReceivedBytes": {
+              "metric": "Hadoop:service=ResourceManager,name=RpcActivity.ReceivedBytes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsBlocked": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.ThreadsBlocked",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/running_60": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).running_60",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcQueueTime_num_ops": {
+              "metric": "Hadoop:service=ResourceManager,name=RpcActivity.RpcQueueTimeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/ClusterMetrics/NumDecommissionedNMs": {
+              "metric": "Hadoop:service=ResourceManager,name=ClusterMetrics.NumDecommissionedNMs",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AllocatedContainers": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AllocatedContainers",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/PendingContainers": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).PendingContainers",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/NumOpenConnections": {
+              "metric": "Hadoop:service=ResourceManager,name=RpcActivity.NumOpenConnections",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memHeapUsedM": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.MemHeapUsedM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsWaiting": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.ThreadsWaiting",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/gcTimeMillis": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.GcTimeMillis",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginSuccess_num_ops": {
+              "metric": "Hadoop:service=ResourceManager,name=UgiMetrics.LoginSuccessNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsTerminated": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.ThreadsTerminated",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memMaxM": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.MemMaxM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/rm_metrics/cluster/unhealthyNMcount": {
+              "metric": "Hadoop:service=ResourceManager,name=ClusterMetrics.NumUnhealthyNMs",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/ReservedVCores": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).ReservedVCores",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/rm_metrics/cluster/decommissionedNMcount": {
+              "metric": "Hadoop:service=ResourceManager,name=ClusterMetrics.NumDecommissionedNMs",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/ActiveApplications": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).ActiveApplications",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AvailableMB": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AvailableMB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memNonHeapCommittedM": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.MemNonHeapCommittedM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/rm_metrics/cluster/nodeManagers": {
+              "metric": "Hadoop:service=ResourceManager,name=RMNMInfo.LiveNodeManagers",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/callQueueLen": {
+              "metric": "Hadoop:service=ResourceManager,name=RpcActivity.CallQueueLength",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AllocatedVCores": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AllocatedVCores",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AppsPending": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AppsPending",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AppsCompleted": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AppsCompleted",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/ActiveUsers": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).ActiveUsers",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logInfo": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.LogInfo",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AppsRunning": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AppsRunning",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AMResourceLimitMB": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AMResourceLimitMB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AMResourceLimitVCores": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AMResourceLimitVCores",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AppAttemptFirstContainerAllocationDelayAvgTime": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AppAttemptFirstContainerAllocationDelayAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AppAttemptFirstContainerAllocationDelayNumOps": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AppAttemptFirstContainerAllocationDelayNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/UsedAMResourceMB": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).UsedAMResourceMB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/UsedAMResourceVCores": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).UsedAMResourceVCores",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/running_0": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).running_0",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/running_1440": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).running_1440",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AvailableVCores": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AvailableVCores",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginFailure_num_ops": {
+              "metric": "Hadoop:service=ResourceManager,name=UgiMetrics.LoginFailureNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcProcessingTime_num_ops": {
+              "metric": "Hadoop:service=ResourceManager,name=RpcActivity.RpcProcessingTimeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/ReservedMB": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).ReservedMB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logError": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.LogError",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/PendingMB": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).PendingMB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginFailure_avg_time": {
+              "metric": "Hadoop:service=ResourceManager,name=UgiMetrics.LoginFailureAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthorizationSuccesses": {
+              "metric": "Hadoop:service=ResourceManager,name=RpcActivity.RpcAuthorizationSuccesses",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logFatal": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.LogFatal",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcProcessingTime_avg_time": {
+              "metric": "Hadoop:service=ResourceManager,name=RpcActivity.RpcProcessingTimeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/rm_metrics/cluster/activeNMcount": {
+              "metric": "Hadoop:service=ResourceManager,name=ClusterMetrics.NumActiveNMs",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthenticationSuccesses": {
+              "metric": "Hadoop:service=ResourceManager,name=RpcActivity.RpcAuthenticationSuccesses",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AggregateContainersReleased": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AggregateContainersReleased",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthenticationFailures": {
+              "metric": "Hadoop:service=ResourceManager,name=RpcActivity.RpcAuthenticationFailures",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "ServiceComponentInfo/rm_metrics/cluster/lostNMcount": {
+              "metric": "Hadoop:service=ResourceManager,name=ClusterMetrics.NumLostNMs",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AllocatedMB": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AllocatedMB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/PendingVCores": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).PendingVCores",
+              "pointInTime": true,
+              "temporal": false
+            }
+          }
+        }
+      }
+    ],
+    "HostComponent": [
+      {
+        "type": "ganglia",
+        "metrics": {
+          "default": {
+            "metrics/rpcdetailed/FinishApplicationMasterNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.FinishApplicationMasterNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AppsCompleted": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AppsCompleted",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/ClusterMetrics/NumUnhealthyNMs": {
+              "metric": "yarn.ClusterMetrics.NumUnhealthyNMs",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemHeapCommittedM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsRunnable": {
+              "metric": "jvm.JvmMetrics.ThreadsRunnable",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/ClusterMetrics/NumRebootedNMs": {
+              "metric": "yarn.ClusterMetrics.NumRebootedNMs",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsNew": {
+              "metric": "jvm.JvmMetrics.ThreadsNew",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AppsSubmitted": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AppsSubmitted",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/ClusterMetrics/NumLostNMs": {
+              "metric": "yarn.ClusterMetrics.NumLostNMs",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginSuccess_avg_time": {
+              "metric": "ugi.UgiMetrics.LoginSuccessAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_avg_time": {
+              "metric": "rpc.rpc.RpcQueueTimeAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AllocatedContainers": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AllocatedContainers",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/SentBytes": {
+              "metric": "rpc.rpc.SentBytes",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AppsKilled": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AppsKilled",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/ClusterMetrics/NumActiveNMs": {
+              "metric": "yarn.ClusterMetrics.NumActiveNMs",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memNonHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapUsedM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logWarn": {
+              "metric": "jvm.JvmMetrics.LogWarn",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTimedWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsTimedWaiting",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AppsFailed": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AppsFailed",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/gcCount": {
+              "metric": "jvm.JvmMetrics.GcCount",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/process/proc_run": {
+              "metric": "proc_run",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/rpc/ReceivedBytes": {
+              "metric": "rpc.rpc.ReceivedBytes",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/AllocateNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.AllocateNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcCountMarkSweepCompact": {
+              "metric": "jvm.JvmMetrics.GcCountMarkSweepCompact",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/threadsBlocked": {
+              "metric": "jvm.JvmMetrics.ThreadsBlocked",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AppsRunning": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AppsRunning",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/ActiveApplications": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).ActiveApplications",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AMResourceLimitMB": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AMResourceLimitMB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AMResourceLimitVCores": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AMResourceLimitVCores",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/ActiveUsers": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).ActiveUsers",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AggregateContainersAllocated": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AggregateContainersAllocated",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AggregateContainersReleased": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AggregateContainersReleased",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AllocatedVCores": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AllocatedVCores",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AppAttemptFirstContainerAllocationDelayAvgTime": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AppAttemptFirstContainerAllocationDelayAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AppAttemptFirstContainerAllocationDelayNumOps": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AppAttemptFirstContainerAllocationDelayNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AvailableVCores": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AvailableVCores",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/PendingVCores": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).PendingVCores",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/ReservedMB": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).ReservedMB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/ReservedVCores": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).ReservedVCores",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/UsedAMResourceMB": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).UsedAMResourceMB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/UsedAMResourceVCores": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).UsedAMResourceVCores",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/running_0": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).running_0",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/running_1440": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).running_1440",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/running_300": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).running_300",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/running_60": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).running_60",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/ClusterMetrics/NumDecommissionedNMs": {
+              "metric": "yarn.ClusterMetrics.NumDecommissionedNMs",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcQueueTime_num_ops": {
+              "metric": "rpc.rpc.RpcQueueTimeNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/process/proc_total": {
+              "metric": "proc_total",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/rpc/NumOpenConnections": {
+              "metric": "rpc.rpc.NumOpenConnections",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memHeapUsedM": {
+              "metric": "jvm.JvmMetrics.MemHeapUsedM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsWaiting": {
+              "metric": "jvm.JvmMetrics.ThreadsWaiting",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/load/load_one": {
+              "metric": "load_one",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/memory/mem_buffered": {
+              "metric": "mem_buffered",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/ugi/loginSuccess_num_ops": {
+              "metric": "ugi.UgiMetrics.LoginSuccessNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/gcTimeMillisCopy": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisCopy",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcTimeMillis": {
+              "metric": "jvm.JvmMetrics.GcTimeMillis",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/PendingContainers": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).PendingContainers",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/memMaxM": {
+              "metric": "jvm.JvmMetrics.MemMaxM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/threadsTerminated": {
+              "metric": "jvm.JvmMetrics.ThreadsTerminated",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/network/bytes_out": {
+              "metric": "bytes_out",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/cpu/cpu_idle": {
+              "metric": "cpu_idle",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/rpcdetailed/AllocateAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.AllocateAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/load/load_five": {
+              "metric": "load_five",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/network/bytes_in": {
+              "metric": "bytes_in",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/network/pkts_out": {
+              "metric": "pkts_out",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/jvm/memNonHeapCommittedM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapCommittedM",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/GetApplicationReportNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.GetApplicationReportNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/FinishApplicationMasterAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.FinishApplicationMasterAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/callQueueLen": {
+              "metric": "rpc.rpc.CallQueueLength",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/RegisterApplicationMasterNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.RegisterApplicationMasterNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AvailableMB": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AvailableMB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/PendingMB": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).PendingMB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logInfo": {
+              "metric": "jvm.JvmMetrics.LogInfo",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_num_ops": {
+              "metric": "rpc.rpc.RpcProcessingTimeNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginFailure_num_ops": {
+              "metric": "ugi.UgiMetrics.LoginFailureNumOps",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/SubmitApplicationAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.SubmitApplicationAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/GetNewApplicationNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.GetNewApplicationNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AppsPending": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AppsPending",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/gcCountCopy": {
+              "metric": "jvm.JvmMetrics.GcCountCopy",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/load/load_fifteen": {
+              "metric": "load_fifteen",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/jvm/logError": {
+              "metric": "jvm.JvmMetrics.LogError",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/ugi/loginFailure_avg_time": {
+              "metric": "ugi.UgiMetrics.LoginFailureAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/SubmitApplicationNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.SubmitApplicationNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/gcTimeMillisMarkSweepCompact": {
+              "metric": "jvm.JvmMetrics.GcTimeMillisMarkSweepCompact",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpcAuthorizationSuccesses": {
+              "metric": "rpc.rpc.RpcAuthorizationSuccesses",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AllocatedMB": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).AllocatedMB",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/logFatal": {
+              "metric": "jvm.JvmMetrics.LogFatal",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpc/RpcProcessingTime_avg_time": {
+              "metric": "rpc.rpc.RpcProcessingTimeAvgTime",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/GetApplicationReportAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.GetApplicationReportAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/NodeHeartbeatAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.NodeHeartbeatAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/GetNewApplicationAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.GetNewApplicationAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/network/pkts_in": {
+              "metric": "pkts_in",
+              "pointInTime": true,
+              "temporal": true,
+              "amsHostMetric": true
+            },
+            "metrics/rpcdetailed/RegisterApplicationMasterAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.RegisterApplicationMasterAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/ReservedContainers": {
+              "metric": "yarn.QueueMetrics.Queue=(.+).ReservedContainers",
+              "pointInTime": false,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/GcCountMarkSweepCompact": {
+              "metric": "jvm.JvmMetrics.GcCountMarkSweepCompact",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemHeapMaxM": {
+              "metric": "jvm.JvmMetrics.MemHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/MemNonHeapMaxM": {
+              "metric": "jvm.JvmMetrics.MemNonHeapMaxM",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/jvm/JvmMetrics/ThreadsBlocked": {
+              "metric": "jvm.JvmMetrics.ThreadsBlocked",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/DroppedPubAll": {
+              "metric": "metricssystem.MetricsSystem.DroppedPubAll",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumActiveSinks": {
+              "metric": "metricssystem.MetricsSystem.NumActiveSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumActiveSources": {
+              "metric": "metricssystem.MetricsSystem.NumActiveSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumAllSinks": {
+              "metric": "metricssystem.MetricsSystem.NumAllSinks",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/NumAllSources": {
+              "metric": "metricssystem.MetricsSystem.NumAllSources",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/PublishAvgTime": {
+              "metric": "metricssystem.MetricsSystem.PublishAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/PublishNumOps": {
+              "metric": "metricssystem.MetricsSystem.PublishNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineAvgTime": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineDropped": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineDropped",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineNumOps": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/Sink_timelineQsize": {
+              "metric": "metricssystem.MetricsSystem.Sink_timelineQsize",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/SnapshotAvgTime": {
+              "metric": "metricssystem.MetricsSystem.SnapshotAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/metricssystem/MetricsSystem/SnapshotNumOps": {
+              "metric": "metricssystem.MetricsSystem.SnapshotNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpc/RpcAuthenticationFailures": {
+              "metric": "rpc.rpc.RpcAuthenticationFailures",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpc/RpcAuthenticationSuccesses": {
+              "metric": "rpc.rpc.RpcAuthenticationSuccesses",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpc/RpcAuthorizationFailures": {
+              "metric": "rpc.rpc.RpcAuthorizationFailures",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpc/rpc/RpcClientBackoff": {
+              "metric": "rpc.rpc.RpcClientBackoff",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/AllocateNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.AllocateNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetClusterMetricsAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.GetClusterMetricsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetClusterMetricsNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.GetClusterMetricsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetClusterNodesAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.GetClusterNodesAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetClusterNodesNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.GetClusterNodesNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetQueueInfoAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.GetQueueInfoAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetQueueInfoNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.GetQueueInfoNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetQueueUserAclsAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.GetQueueUserAclsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/GetQueueUserAclsNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.GetQueueUserAclsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/NodeHeartbeatNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.NodeHeartbeatNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/RegisterNodeManagerAvgTime": {
+              "metric": "rpcdetailed.rpcdetailed.RegisterNodeManagerAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/rpcdetailed/rpcdetailed/RegisterNodeManagerNumOps": {
+              "metric": "rpcdetailed.rpcdetailed.RegisterNodeManagerNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/GetGroupsAvgTime": {
+              "metric": "ugi.UgiMetrics.GetGroupsAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/ugi/UgiMetrics/GetGroupsNumOps": {
+              "metric": "ugi.UgiMetrics.GetGroupsNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/ClusterMetrics/AMLaunchDelayAvgTime": {
+              "metric": "yarn.ClusterMetrics.AMLaunchDelayAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/ClusterMetrics/AMLaunchDelayNumOps": {
+              "metric": "yarn.ClusterMetrics.AMLaunchDelayNumOps",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/ClusterMetrics/AMRegisterDelayAvgTime": {
+              "metric": "yarn.ClusterMetrics.AMRegisterDelayAvgTime",
+              "pointInTime": true,
+              "temporal": true
+            },
+            "metrics/yarn/ClusterMetrics/AMRegisterDelayNumOps": {
+              "metric": "yarn.ClusterMetrics.AMRegisterDelayNumOps",
+              "pointInTime": true,
+              "temporal": true
+            }
+          }
+        }
+      },
+      {
+        "type": "jmx",
+        "metrics": {
+          "default": {
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AppsFailed": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AppsFailed",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/runtime/StartTime": {
+              "metric": "java.lang:type=Runtime.StartTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memHeapCommittedM": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.MemHeapCommittedM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/ClusterMetrics/NumUnhealthyNMs": {
+              "metric": "Hadoop:service=ResourceManager,name=ClusterMetrics.NumUnhealthyNMs",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsRunnable": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.ThreadsRunnable",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsNew": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.ThreadsNew",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/ClusterMetrics/NumRebootedNMs": {
+              "metric": "Hadoop:service=ResourceManager,name=ClusterMetrics.NumRebootedNMs",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AppsKilled": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AppsKilled",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthorizationFailures": {
+              "metric": "Hadoop:service=ResourceManager,name=RpcActivity.RpcAuthorizationFailures",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AggregateContainersAllocated": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AggregateContainersAllocated",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/ClusterMetrics/NumLostNMs": {
+              "metric": "Hadoop:service=ResourceManager,name=ClusterMetrics.NumLostNMs",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcQueueTime_avg_time": {
+              "metric": "Hadoop:service=ResourceManager,name=RpcActivity.RpcQueueTimeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginSuccess_avg_time": {
+              "metric": "Hadoop:service=ResourceManager,name=UgiMetrics.LoginSuccessAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/ReservedContainers": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).ReservedContainers",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AppsSubmitted": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AppsSubmitted",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/SentBytes": {
+              "metric": "Hadoop:service=ResourceManager,name=RpcActivity.SentBytes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/ClusterMetrics/NumActiveNMs": {
+              "metric": "Hadoop:service=ResourceManager,name=ClusterMetrics.NumActiveNMs",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/running_300": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).running_300",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/HeapMemoryMax": {
+              "metric": "java.lang:type=Memory.HeapMemoryUsage[max]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/HeapMemoryUsed": {
+              "metric": "java.lang:type=Memory.HeapMemoryUsage[used]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/NonHeapMemoryMax": {
+              "metric": "java.lang:type=Memory.NonHeapMemoryUsage[max]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/NonHeapMemoryUsed": {
+              "metric": "java.lang:type=Memory.NonHeapMemoryUsage[used]",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memNonHeapUsedM": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.MemNonHeapUsedM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logWarn": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.LogWarn",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsTimedWaiting": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.ThreadsTimedWaiting",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/gcCount": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.GcCount",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/ReceivedBytes": {
+              "metric": "Hadoop:service=ResourceManager,name=RpcActivity.ReceivedBytes",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsBlocked": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.ThreadsBlocked",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/running_60": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).running_60",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcQueueTime_num_ops": {
+              "metric": "Hadoop:service=ResourceManager,name=RpcActivity.RpcQueueTimeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/ClusterMetrics/NumDecommissionedNMs": {
+              "metric": "Hadoop:service=ResourceManager,name=ClusterMetrics.NumDecommissionedNMs",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AllocatedContainers": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AllocatedContainers",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/PendingContainers": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).PendingContainers",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/NumOpenConnections": {
+              "metric": "Hadoop:service=ResourceManager,name=RpcActivity.NumOpenConnections",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memHeapUsedM": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.MemHeapUsedM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsWaiting": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.ThreadsWaiting",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/gcTimeMillis": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.GcTimeMillis",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginSuccess_num_ops": {
+              "metric": "Hadoop:service=ResourceManager,name=UgiMetrics.LoginSuccessNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/threadsTerminated": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.ThreadsTerminated",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memMaxM": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.MemMaxM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/ReservedVCores": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).ReservedVCores",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/ActiveApplications": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).ActiveApplications",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AvailableMB": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AvailableMB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/memNonHeapCommittedM": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.MemNonHeapCommittedM",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/callQueueLen": {
+              "metric": "Hadoop:service=ResourceManager,name=RpcActivity.CallQueueLength",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AppsPending": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AppsPending",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AllocatedVCores": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AllocatedVCores",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AppsCompleted": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AppsCompleted",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/ActiveUsers": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).ActiveUsers",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logInfo": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.LogInfo",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AppsRunning": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AppsRunning",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AMResourceLimitMB": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AMResourceLimitMB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AMResourceLimitVCores": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AMResourceLimitVCores",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AppAttemptFirstContainerAllocationDelayAvgTime": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AppAttemptFirstContainerAllocationDelayAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AppAttemptFirstContainerAllocationDelayNumOps": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AppAttemptFirstContainerAllocationDelayNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/UsedAMResourceMB": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).UsedAMResourceMB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/UsedAMResourceVCores": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).UsedAMResourceVCores",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/running_0": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).running_0",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/running_1440": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).running_1440",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AvailableVCores": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AvailableVCores",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginFailure_num_ops": {
+              "metric": "Hadoop:service=ResourceManager,name=UgiMetrics.LoginFailureNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcProcessingTime_num_ops": {
+              "metric": "Hadoop:service=ResourceManager,name=RpcActivity.RpcProcessingTimeNumOps",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/ReservedMB": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).ReservedMB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logError": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.LogError",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/PendingMB": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).PendingMB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/ugi/loginFailure_avg_time": {
+              "metric": "Hadoop:service=ResourceManager,name=UgiMetrics.LoginFailureAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthorizationSuccesses": {
+              "metric": "Hadoop:service=ResourceManager,name=RpcActivity.RpcAuthorizationSuccesses",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/jvm/logFatal": {
+              "metric": "Hadoop:service=ResourceManager,name=JvmMetrics.LogFatal",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/RpcProcessingTime_avg_time": {
+              "metric": "Hadoop:service=ResourceManager,name=RpcActivity.RpcProcessingTimeAvgTime",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthenticationSuccesses": {
+              "metric": "Hadoop:service=ResourceManager,name=RpcActivity.RpcAuthenticationSuccesses",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AggregateContainersReleased": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AggregateContainersReleased",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/rpc/rpcAuthenticationFailures": {
+              "metric": "Hadoop:service=ResourceManager,name=RpcActivity.RpcAuthenticationFailures",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AllocatedMB": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).AllocatedMB",
+              "pointInTime": true,
+              "temporal": false
+            },
+            "metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/PendingVCores": {
+              "metric": "Hadoop:service=ResourceManager,name=QueueMetrics(.+).PendingVCores",
+              "pointInTime": true,
+              "temporal": false
+            }
+          }
+        }
+      }
+    ]
+  }
+}

+ 611 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/YARN_widgets.json

@@ -0,0 +1,611 @@
+{
+  "layouts": [
+    {
+      "layout_name": "default_yarn_dashboard",
+      "display_name": "Standard YARN Dashboard",
+      "section_name": "YARN_SUMMARY",
+      "widgetLayoutInfo": [
+        {
+          "widget_name": "Memory Utilization",
+          "description": "Percentage of total memory allocated to containers running in the cluster.",
+          "widget_type": "GRAPH",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "yarn.QueueMetrics.Queue=root.AllocatedMB",
+              "metric_path": "metrics/yarn/Queue/root/AllocatedMB",
+              "service_name": "YARN",
+              "component_name": "RESOURCEMANAGER",
+              "host_component_criteria": "host_components/HostRoles/ha_state=ACTIVE"
+            },
+            {
+              "name": "yarn.QueueMetrics.Queue=root.AvailableMB",
+              "metric_path": "metrics/yarn/Queue/root/AvailableMB",
+              "service_name": "YARN",
+              "component_name": "RESOURCEMANAGER",
+              "host_component_criteria": "host_components/HostRoles/ha_state=ACTIVE"
+            }
+          ],
+          "values": [
+            {
+              "name": "Memory Utilization",
+              "value": "${(yarn.QueueMetrics.Queue=root.AllocatedMB / (yarn.QueueMetrics.Queue=root.AllocatedMB + yarn.QueueMetrics.Queue=root.AvailableMB)) * 100}"
+            }
+          ],
+          "properties": {
+            "display_unit": "%",
+            "graph_type": "LINE",
+            "time_range": "1"
+          }
+        },
+        {
+          "widget_name": "CPU Utilization",
+          "description": "Percentage of total virtual cores allocated to containers running in the cluster.",
+          "widget_type": "GRAPH",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "yarn.QueueMetrics.Queue=root.AllocatedVCores",
+              "metric_path": "metrics/yarn/Queue/root/AllocatedVCores",
+              "service_name": "YARN",
+              "component_name": "RESOURCEMANAGER",
+              "host_component_criteria": "host_components/HostRoles/ha_state=ACTIVE"
+            },
+            {
+              "name": "yarn.QueueMetrics.Queue=root.AvailableVCores",
+              "metric_path": "metrics/yarn/Queue/root/AvailableVCores",
+              "service_name": "YARN",
+              "component_name": "RESOURCEMANAGER",
+              "host_component_criteria": "host_components/HostRoles/ha_state=ACTIVE"
+            }
+          ],
+          "values": [
+            {
+              "name": "Total Allocatable CPU Utilized across NodeManager",
+              "value": "${(yarn.QueueMetrics.Queue=root.AllocatedVCores / (yarn.QueueMetrics.Queue=root.AllocatedVCores + yarn.QueueMetrics.Queue=root.AvailableVCores)) * 100}"
+            }
+          ],
+          "properties": {
+            "display_unit": "%",
+            "graph_type": "LINE",
+            "time_range": "1"
+          }
+        },
+        {
+          "widget_name": "Container Failures",
+          "description": "Percentage of all containers failing in the cluster.",
+          "widget_type": "GRAPH",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "yarn.NodeManagerMetrics.ContainersFailed._rate",
+              "metric_path": "metrics/yarn/ContainersFailed._rate",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            },
+            {
+              "name": "yarn.NodeManagerMetrics.ContainersCompleted._rate",
+              "metric_path": "metrics/yarn/ContainersCompleted._rate",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            },
+            {
+              "name": "yarn.NodeManagerMetrics.ContainersLaunched._rate",
+              "metric_path": "metrics/yarn/ContainersLaunched._rate",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            },
+            {
+              "name": "yarn.NodeManagerMetrics.ContainersIniting._sum",
+              "metric_path": "metrics/yarn/ContainersIniting._sum",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            },
+            {
+              "name": "yarn.NodeManagerMetrics.ContainersKilled._rate",
+              "metric_path": "metrics/yarn/ContainersKilled._rate",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            },
+            {
+              "name": "yarn.NodeManagerMetrics.ContainersRunning._sum",
+              "metric_path": "metrics/yarn/ContainersRunning._sum",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            }
+          ],
+          "values": [
+            {
+              "name": "Container Failures",
+              "value": "${(yarn.NodeManagerMetrics.ContainersFailed._rate/(yarn.NodeManagerMetrics.ContainersFailed._rate + yarn.NodeManagerMetrics.ContainersCompleted._rate + yarn.NodeManagerMetrics.ContainersLaunched._rate + yarn.NodeManagerMetrics.ContainersIniting._sum + yarn.NodeManagerMetrics.ContainersKilled._rate + yarn.NodeManagerMetrics.ContainersRunning._sum)) * 100}"
+            }
+          ],
+          "properties": {
+            "display_unit": "%",
+            "graph_type": "LINE",
+            "time_range": "1"
+          }
+        },
+        {
+          "widget_name": "App Failures",
+          "description": "Percentage of all launched applications failing in the cluster.",
+          "widget_type": "GRAPH",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "yarn.QueueMetrics.Queue=root.AppsFailed._rate",
+              "metric_path": "metrics/yarn/Queue/root/AppsFailed._rate",
+              "service_name": "YARN",
+              "component_name": "RESOURCEMANAGER",
+              "host_component_criteria": "host_components/HostRoles/ha_state=ACTIVE"
+            },
+            {
+              "name": "yarn.QueueMetrics.Queue=root.AppsKilled._rate",
+              "metric_path": "metrics/yarn/Queue/root/AppsKilled._rate",
+              "service_name": "YARN",
+              "component_name": "RESOURCEMANAGER",
+              "host_component_criteria": "host_components/HostRoles/ha_state=ACTIVE"
+            },
+            {
+              "name": "yarn.QueueMetrics.Queue=root.AppsPending",
+              "metric_path": "metrics/yarn/Queue/root/AppsPending",
+              "service_name": "YARN",
+              "component_name": "RESOURCEMANAGER",
+              "host_component_criteria": "host_components/HostRoles/ha_state=ACTIVE"
+            },
+            {
+              "name": "yarn.QueueMetrics.Queue=root.AppsRunning",
+              "metric_path": "metrics/yarn/Queue/root/AppsRunning",
+              "service_name": "YARN",
+              "component_name": "RESOURCEMANAGER",
+              "host_component_criteria": "host_components/HostRoles/ha_state=ACTIVE"
+            },
+            {
+              "name": "yarn.QueueMetrics.Queue=root.AppsSubmitted._rate",
+              "metric_path": "metrics/yarn/Queue/root/AppsSubmitted._rate",
+              "service_name": "YARN",
+              "component_name": "RESOURCEMANAGER",
+              "host_component_criteria": "host_components/HostRoles/ha_state=ACTIVE"
+            },
+            {
+              "name": "yarn.QueueMetrics.Queue=root.AppsCompleted._rate",
+              "metric_path": "metrics/yarn/Queue/root/AppsCompleted._rate",
+              "service_name": "YARN",
+              "component_name": "RESOURCEMANAGER",
+              "host_component_criteria": "host_components/HostRoles/ha_state=ACTIVE"
+            }
+          ],
+          "values": [
+            {
+              "name": "App Failures",
+              "value": "${(yarn.QueueMetrics.Queue=root.AppsFailed._rate/(yarn.QueueMetrics.Queue=root.AppsFailed._rate + yarn.QueueMetrics.Queue=root.AppsKilled._rate + yarn.QueueMetrics.Queue=root.AppsPending + yarn.QueueMetrics.Queue=root.AppsRunning + yarn.QueueMetrics.Queue=root.AppsSubmitted._rate + yarn.QueueMetrics.Queue=root.AppsCompleted._rate)) * 100}"
+            }
+          ],
+          "properties": {
+            "display_unit": "%",
+            "graph_type": "LINE",
+            "time_range": "1"
+          }
+        },
+        {
+          "widget_name": "Pending Apps",
+          "description": "Count of applications waiting for cluster resources to become available.",
+          "widget_type": "GRAPH",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "yarn.QueueMetrics.Queue=root.AppsPending",
+              "metric_path": "metrics/yarn/Queue/root/AppsPending",
+              "service_name": "YARN",
+              "component_name": "RESOURCEMANAGER",
+              "host_component_criteria": "host_components/HostRoles/ha_state=ACTIVE"
+            }
+          ],
+          "values": [
+            {
+              "name": "Pending Apps",
+              "value": "${yarn.QueueMetrics.Queue=root.AppsPending}"
+            }
+          ],
+          "properties": {
+            "display_unit": "Apps",
+            "graph_type": "LINE",
+            "time_range": "1"
+          }
+        },
+        {
+          "widget_name": "Cluster Memory",
+          "description": "Percentage of memory used across all NodeManager hosts.",
+          "widget_type": "GRAPH",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "mem_total._sum",
+              "metric_path": "metrics/memory/mem_total._avg",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            },
+            {
+              "name": "mem_free._sum",
+              "metric_path": "metrics/memory/mem_free._avg",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            }
+          ],
+          "values": [
+            {
+              "name": "Memory utilization",
+              "value": "${((mem_total._sum - mem_free._sum)/mem_total._sum) * 100}"
+            }
+          ],
+          "properties": {
+            "display_unit": "%",
+            "graph_type": "LINE",
+            "time_range": "1"
+          }
+        },
+        {
+          "widget_name": "Cluster Disk",
+          "description": "Sum of disk throughput for all NodeManager hosts.",
+          "widget_type": "GRAPH",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "read_bps._sum",
+              "metric_path": "metrics/disk/read_bps._sum",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            },
+            {
+              "name": "write_bps._sum",
+              "metric_path": "metrics/disk/write_bps._sum",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            }
+          ],
+          "values": [
+            {
+              "name": "Read throughput",
+              "value": "${read_bps._sum/1048576}"
+            },
+            {
+              "name": "Write throughput",
+              "value": "${write_bps._sum/1048576}"
+            }
+          ],
+          "properties": {
+            "display_unit": "Mbps",
+            "graph_type": "LINE",
+            "time_range": "1"
+          }
+        },
+        {
+          "widget_name": "Cluster Network",
+          "description": "Average of Network utilized across all NodeManager hosts.",
+          "default_section_name": "YARN_SUMMARY",
+          "widget_type": "GRAPH",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "pkts_in._avg",
+              "metric_path": "metrics/network/pkts_in._avg",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            },
+            {
+              "name": "pkts_out._avg",
+              "metric_path": "metrics/network/pkts_out._avg",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            }
+          ],
+          "values": [
+            {
+              "name": "Packets In",
+              "value": "${pkts_in._avg}"
+            },
+            {
+              "name": "Packets Out",
+              "value": "${pkts_out._avg}"
+            }
+          ],
+          "properties": {
+            "graph_type": "LINE",
+            "time_range": "1"
+          }
+        },
+        {
+          "widget_name": "Cluster CPU",
+          "description": "Percentage of CPU utilized across all NodeManager hosts.",
+          "default_section_name": "YARN_SUMMARY",
+          "widget_type": "GRAPH",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "cpu_system._sum",
+              "metric_path": "metrics/cpu/cpu_system._sum",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            },
+            {
+              "name": "cpu_user._sum",
+              "metric_path": "metrics/cpu/cpu_user._sum",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            },
+            {
+              "name": "cpu_nice._sum",
+              "metric_path": "metrics/cpu/cpu_nice._sum",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            },
+            {
+              "name": "cpu_idle._sum",
+              "metric_path": "metrics/cpu/cpu_idle._sum",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            },
+            {
+              "name": "cpu_wio._sum",
+              "metric_path": "metrics/cpu/cpu_wio._sum",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            }
+          ],
+          "values": [
+            {
+              "name": "CPU utilization",
+              "value": "${((cpu_system._sum + cpu_user._sum + cpu_nice._sum)/(cpu_system._sum + cpu_user._sum + cpu_nice._sum + cpu_idle._sum + cpu_wio._sum)) * 100}"
+            }
+          ],
+          "properties": {
+            "graph_type": "LINE",
+            "time_range": "1",
+            "display_unit": "%"
+          }
+        }
+      ]
+    },
+    {
+      "layout_name": "default_yarn_heatmap",
+      "display_name": "YARN Heatmaps",
+      "section_name": "YARN_HEATMAPS",
+      "widgetLayoutInfo": [
+        {
+          "widget_name": "Total Allocatable RAM Utilized per NodeManager",
+          "description": "",
+          "widget_type": "HEATMAP",
+          "is_visible": true,
+          "metrics": [
+            {
+              "name": "yarn.NodeManagerMetrics.AllocatedGB",
+              "metric_path": "metrics/yarn/AllocatedGB",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            },
+            {
+              "name": "yarn.NodeManagerMetrics.AvailableGB",
+              "metric_path": "metrics/yarn/AvailableGB",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            }
+          ],
+          "values": [
+            {
+              "name": "Total Allocatable RAM Utilized per NodeManager",
+              "value": "${(yarn.NodeManagerMetrics.AllocatedGB/(yarn.NodeManagerMetrics.AvailableGB + yarn.NodeManagerMetrics.AllocatedGB)) * 100}"
+            }
+          ],
+          "properties": {
+            "display_unit": "%",
+            "max_limit": "100"
+          }
+        },
+        {
+          "widget_name": "Total Allocatable CPU Utilized per NodeManager",
+          "description": "",
+          "widget_type": "HEATMAP",
+          "is_visible": false,
+          "metrics": [
+            {
+              "name": "yarn.NodeManagerMetrics.AllocatedVCores",
+              "metric_path": "metrics/yarn/AllocatedVCores",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            },
+            {
+              "name": "yarn.NodeManagerMetrics.AvailableVCores",
+              "metric_path": "metrics/yarn/AvailableVCores",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            }
+          ],
+          "values": [
+            {
+              "name": "Total Allocatable CPU Utilized per NodeManager",
+              "value": "${(yarn.NodeManagerMetrics.AllocatedVCores/(yarn.NodeManagerMetrics.AllocatedVCores + yarn.NodeManagerMetrics.AvailableVCores)) * 100}"
+            }
+          ],
+          "properties": {
+            "display_unit": "%",
+            "max_limit": "100"
+          }
+        },
+        {
+          "widget_name": "Container Failures",
+          "description": "",
+          "widget_type": "HEATMAP",
+          "is_visible": false,
+          "metrics": [
+            {
+              "name": "yarn.NodeManagerMetrics.ContainersFailed._rate",
+              "metric_path": "metrics/yarn/ContainersFailed._rate",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            },
+            {
+              "name": "yarn.NodeManagerMetrics.ContainersCompleted._rate",
+              "metric_path": "metrics/yarn/ContainersCompleted._rate",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            },
+            {
+              "name": "yarn.NodeManagerMetrics.ContainersLaunched._rate",
+              "metric_path": "metrics/yarn/ContainersLaunched._rate",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            },
+            {
+              "name": "yarn.NodeManagerMetrics.ContainersIniting",
+              "metric_path": "metrics/yarn/ContainersIniting",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            },
+            {
+              "name": "yarn.NodeManagerMetrics.ContainersKilled._rate",
+              "metric_path": "metrics/yarn/ContainersKilled._rate",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            },
+            {
+              "name": "yarn.NodeManagerMetrics.ContainersRunning",
+              "metric_path": "metrics/yarn/ContainersRunning",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            }
+          ],
+          "values": [
+            {
+              "name": "Container Failures",
+              "value": "${(yarn.NodeManagerMetrics.ContainersFailed._rate/(yarn.NodeManagerMetrics.ContainersFailed._rate + yarn.NodeManagerMetrics.ContainersCompleted._rate + yarn.NodeManagerMetrics.ContainersLaunched._rate + yarn.NodeManagerMetrics.ContainersIniting + yarn.NodeManagerMetrics.ContainersKilled._rate + yarn.NodeManagerMetrics.ContainersRunning)) * 100}"
+            }
+          ],
+          "properties": {
+            "display_unit": "%",
+            "max_limit": "100"
+          }
+        },
+        {
+          "widget_name": "NodeManager GC Time",
+          "description": "",
+          "widget_type": "HEATMAP",
+          "is_visible": false,
+          "metrics": [
+            {
+              "name": "Hadoop:service=NodeManager,name=JvmMetrics.GcTimeMillis",
+              "metric_path": "metrics/jvm/gcTimeMillis",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            }
+          ],
+          "values": [
+            {
+              "name": "NodeManager Garbage Collection Time",
+              "value": "${Hadoop:service=NodeManager,name=JvmMetrics.GcTimeMillis}"
+            }
+          ],
+          "properties": {
+            "display_unit": "ms",
+            "max_limit": "10000"
+          }
+        },
+        {
+          "widget_name": "NodeManager JVM Heap Memory Used",
+          "description": "",
+          "widget_type": "HEATMAP",
+          "is_visible": false,
+          "metrics": [
+            {
+              "name": "Hadoop:service=NodeManager,name=JvmMetrics.MemHeapUsedM",
+              "metric_path": "metrics/jvm/memHeapUsedM",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            }
+          ],
+          "values": [
+            {
+              "name": "NodeManager JVM Heap Memory Used",
+              "value": "${Hadoop:service=NodeManager,name=JvmMetrics.MemHeapUsedM}"
+            }
+          ],
+          "properties": {
+            "display_unit": "MB",
+            "max_limit": "512"
+          }
+        },
+        {
+          "widget_name": "Allocated Containers",
+          "description": "",
+          "widget_type": "HEATMAP",
+          "is_visible": false,
+          "metrics": [
+            {
+              "name": "yarn.NodeManagerMetrics.AllocatedContainers",
+              "metric_path": "metrics/yarn/AllocatedContainers",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            }
+          ],
+          "values": [
+            {
+              "name": "Allocated Containers",
+              "value": "${yarn.NodeManagerMetrics.AllocatedContainers}"
+            }
+          ],
+          "properties": {
+            "display_unit": "",
+            "max_limit": "100"
+          }
+        },
+        {
+          "widget_name": "NodeManager RAM Utilized",
+          "description": "",
+          "widget_type": "HEATMAP",
+          "is_visible": false,
+          "metrics": [
+            {
+              "name": "yarn.NodeManagerMetrics.AllocatedGB",
+              "metric_path": "metrics/yarn/AllocatedGB",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            }
+          ],
+          "values": [
+            {
+              "name": "NodeManager RAM Utilized",
+              "value": "${yarn.NodeManagerMetrics.AllocatedGB}"
+            }
+          ],
+          "properties": {
+            "display_unit": "",
+            "max_limit": "100"
+          }
+        },
+        {
+          "widget_name": "NodeManager CPU Utilized",
+          "description": "",
+          "widget_type": "HEATMAP",
+          "is_visible": false,
+          "metrics": [
+            {
+              "name": "yarn.NodeManagerMetrics.AllocatedVCores",
+              "metric_path": "metrics/yarn/AllocatedVCores",
+              "service_name": "YARN",
+              "component_name": "NODEMANAGER"
+            }
+          ],
+          "values": [
+            {
+              "name": "NodeManager CPU Utilized",
+              "value": "${yarn.NodeManagerMetrics.AllocatedVCores}"
+            }
+          ],
+          "properties": {
+            "display_unit": "",
+            "max_limit": "100"
+          }
+        }
+      ]
+    }
+  ]
+}

+ 392 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/alerts.json

@@ -0,0 +1,392 @@
+{
+  "MAPREDUCE2": {
+    "service": [],
+    "HISTORYSERVER": [
+      {
+        "name": "mapreduce_history_server_webui",
+        "label": "History Server Web UI",
+        "description": "This host-level alert is triggered if the History Server Web UI is unreachable.",
+        "interval": 1,
+        "scope": "ANY",
+        "source": {
+          "type": "WEB",
+          "uri": {
+            "http": "{{mapred-site/mapreduce.jobhistory.webapp.address}}",
+            "https": "{{mapred-site/mapreduce.jobhistory.webapp.https.address}}",
+            "https_property": "{{mapred-site/mapreduce.jobhistory.http.policy}}",
+            "https_property_value": "HTTPS_ONLY",
+            "kerberos_keytab": "{{mapred-site/mapreduce.jobhistory.webapp.spnego-keytab-file}}",
+            "kerberos_principal": "{{mapred-site/mapreduce.jobhistory.webapp.spnego-principal}}",
+            "connection_timeout": 5.0
+          },
+          "reporting": {
+            "ok": {
+              "text": "HTTP {0} response in {2:.3f}s"
+            },
+            "warning":{
+              "text": "HTTP {0} response from {1} in {2:.3f}s ({3})"
+            },
+            "critical": {
+              "text": "Connection failed to {1} ({3})"
+            }
+          }
+        }
+      },
+      {
+        "name": "mapreduce_history_server_cpu",
+        "label": "History Server CPU Utilization",
+        "description": "This host-level alert is triggered if the percent of CPU utilization on the History Server exceeds the configured critical threshold. The threshold values are in percent.",
+        "interval": 5,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "METRIC",
+          "uri": {
+            "http": "{{mapred-site/mapreduce.jobhistory.webapp.address}}",
+            "kerberos_keytab": "{{mapred-site/mapreduce.jobhistory.webapp.spnego-keytab-file}}",
+            "kerberos_principal": "{{mapred-site/mapreduce.jobhistory.webapp.spnego-principal}}",
+            "https": "{{mapred-site/mapreduce.jobhistory.webapp.https.address}}",
+            "https_property": "{{mapred-site/mapreduce.jobhistory.http.policy}}",
+            "https_property_value": "HTTPS_ONLY",
+            "connection_timeout": 5.0
+          },
+          "reporting": {
+            "ok": {
+              "text": "{1} CPU, load {0:.1%}"
+            },
+            "warning": {
+              "text": "{1} CPU, load {0:.1%}",
+              "value": 200
+            },
+            "critical": {
+              "text": "{1} CPU, load {0:.1%}",
+              "value": 250
+            },
+            "units" : "%",
+            "type": "PERCENT"
+          },
+          "jmx": {
+            "property_list": [
+              "java.lang:type=OperatingSystem/SystemCpuLoad",
+              "java.lang:type=OperatingSystem/AvailableProcessors"
+            ],
+            "value": "{0} * 100"
+          }
+        }
+      },
+      {
+        "name": "mapreduce_history_server_rpc_latency",
+        "label": "History Server RPC Latency",
+        "description": "This host-level alert is triggered if the History Server operations RPC latency exceeds the configured critical threshold. Typically an increase in the RPC processing time increases the RPC queue length, causing the average queue wait time to increase for operations. The threshold values are in milliseconds.",
+        "interval": 5,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "METRIC",
+          "uri": {
+            "http": "{{mapred-site/mapreduce.jobhistory.webapp.address}}",
+            "https": "{{mapred-site/mapreduce.jobhistory.webapp.https.address}}",
+            "kerberos_keytab": "{{mapred-site/mapreduce.jobhistory.webapp.spnego-keytab-file}}",
+            "kerberos_principal": "{{mapred-site/mapreduce.jobhistory.webapp.spnego-principal}}",
+            "https_property": "{{mapred-site/mapreduce.jobhistory.http.policy}}",
+            "https_property_value": "HTTPS_ONLY",
+            "connection_timeout": 5.0
+          },
+          "reporting": {
+            "ok": {
+              "text": "Average Queue Time:[{0}], Average Processing Time:[{1}]"
+            },
+            "warning": {
+              "text": "Average Queue Time:[{0}], Average Processing Time:[{1}]",
+              "value": 3000
+            },          
+            "critical": {
+              "text": "Average Queue Time:[{0}], Average Processing Time:[{1}]",
+              "value": 5000
+            },
+            "units" : "ms"
+          },
+          "jmx": {
+            "property_list": [
+              "Hadoop:service=JobHistoryServer,name=RpcActivityForPort*/RpcQueueTimeAvgTime",
+              "Hadoop:service=JobHistoryServer,name=RpcActivityForPort*/RpcProcessingTimeAvgTime"
+            ],
+            "value": "{0}"
+          }
+        }
+      }
+    ]
+  },
+  "YARN": {
+    "service": [
+      {
+        "name": "yarn_nodemanager_webui_percent",
+        "label": "Percent NodeManagers Available",
+        "description": "This alert is triggered if the number of down NodeManagers in the cluster is greater than the configured critical threshold. It aggregates the results of NodeManager process checks.",
+        "interval": 1,
+        "scope": "SERVICE",
+        "enabled": true,
+        "source": {
+          "type": "AGGREGATE",
+          "alert_name": "yarn_nodemanager_webui",
+          "reporting": {
+            "ok": {
+              "text": "affected: [{1}], total: [{0}]"
+            },
+            "warning": {
+              "text": "affected: [{1}], total: [{0}]",
+              "value": 10
+            },
+            "critical": {
+              "text": "affected: [{1}], total: [{0}]",
+              "value": 30
+            },
+            "units" : "%",
+            "type": "PERCENT"
+          }
+        }
+      }
+    ],
+    "NODEMANAGER": [
+      {
+        "name": "yarn_nodemanager_webui",
+        "label": "NodeManager Web UI",
+        "description": "This host-level alert is triggered if the NodeManager Web UI is unreachable.",
+        "interval": 1,
+        "scope": "HOST",
+        "source": {
+          "type": "WEB",
+          "uri": {
+            "http": "{{yarn-site/yarn.nodemanager.webapp.address}}",
+            "https": "{{yarn-site/yarn.nodemanager.webapp.https.address}}",
+            "https_property": "{{yarn-site/yarn.http.policy}}",
+            "https_property_value": "HTTPS_ONLY",
+            "default_port": 8042,
+            "kerberos_keytab": "{{yarn-site/yarn.nodemanager.webapp.spnego-keytab-file}}",
+            "kerberos_principal": "{{yarn-site/yarn.nodemanager.webapp.spnego-principal}}",
+            "connection_timeout": 5.0
+          },
+          "reporting": {
+            "ok": {
+              "text": "HTTP {0} response in {2:.3f}s"
+            },
+            "warning":{
+              "text": "HTTP {0} response from {1} in {2:.3f}s ({3})"
+            },
+            "critical": {
+              "text": "Connection failed to {1} ({3})"
+            }
+          }
+        }
+      },
+      {
+        "name": "yarn_nodemanager_health",
+        "label": "NodeManager Health",
+        "description": "This host-level alert checks the node health property available from the NodeManager component.",
+        "interval": 1,
+        "scope": "HOST",
+        "enabled": true,
+        "source": {
+          "type": "SCRIPT",
+          "path": "YARN/2.1.0.2.0/package/alerts/alert_nodemanager_health.py",
+          "parameters": [
+            {
+              "name": "connection.timeout",
+              "display_name": "Connection Timeout",
+              "value": 5.0,
+              "type": "NUMERIC",
+              "description": "The maximum time before this alert is considered to be CRITICAL",
+              "units": "seconds",
+              "threshold": "CRITICAL"
+            }
+          ]
+        }
+      }
+    ],
+    "RESOURCEMANAGER": [
+      {
+        "name": "yarn_resourcemanager_webui",
+        "label": "ResourceManager Web UI",
+        "description": "This host-level alert is triggered if the ResourceManager Web UI is unreachable.",
+        "interval": 1,
+        "scope": "ANY",
+        "source": {
+          "type": "WEB",
+          "uri": {
+            "http": "{{yarn-site/yarn.resourcemanager.webapp.address}}",
+            "https": "{{yarn-site/yarn.resourcemanager.webapp.https.address}}",
+            "https_property": "{{yarn-site/yarn.http.policy}}",
+            "https_property_value": "HTTPS_ONLY",
+            "kerberos_keytab": "{{yarn-site/yarn.resourcemanager.webapp.spnego-keytab-file}}",
+            "kerberos_principal": "{{yarn-site/yarn.resourcemanager.webapp.spnego-principal}}",
+            "connection_timeout": 5.0,
+            "high_availability": {
+              "alias_key" : "{{yarn-site/yarn.resourcemanager.ha.rm-ids}}",
+              "http_pattern" : "{{yarn-site/yarn.resourcemanager.webapp.address.{{alias}}}}",
+              "https_pattern" : "{{yarn-site/yarn.resourcemanager.webapp.https.address.{{alias}}}}"
+            }
+          },
+          "reporting": {
+            "ok": {
+              "text": "HTTP {0} response in {2:.3f}s"
+            },
+            "warning":{
+              "text": "HTTP {0} response from {1} in {2:.3f}s ({3})"
+            },
+            "critical": {
+              "text": "Connection failed to {1} ({3})"
+            }
+          }
+        }
+      },
+      {
+        "name": "yarn_resourcemanager_cpu",
+        "label": "ResourceManager CPU Utilization",
+        "description": "This host-level alert is triggered if CPU utilization of the ResourceManager exceeds certain warning and critical thresholds. It checks the ResourceManager JMX Servlet for the SystemCPULoad property. The threshold values are in percent.",
+        "interval": 5,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "METRIC",
+          "uri": {
+            "http": "{{yarn-site/yarn.resourcemanager.webapp.address}}",
+            "https": "{{yarn-site/yarn.resourcemanager.webapp.https.address}}",
+            "kerberos_keytab": "{{yarn-site/yarn.resourcemanager.webapp.spnego-keytab-file}}",
+            "kerberos_principal": "{{yarn-site/yarn.resourcemanager.webapp.spnego-principal}}",
+            "https_property": "{{yarn-site/yarn.http.policy}}",
+            "https_property_value": "HTTPS_ONLY",
+            "connection_timeout": 5.0,
+            "high_availability": {
+              "alias_key" : "{{yarn-site/yarn.resourcemanager.ha.rm-ids}}",
+              "http_pattern" : "{{yarn-site/yarn.resourcemanager.webapp.address.{{alias}}}}",
+              "https_pattern" : "{{yarn-site/yarn.resourcemanager.webapp.https.address.{{alias}}}}"
+            }
+          },
+          "reporting": {
+            "ok": {
+              "text": "{1} CPU, load {0:.1%}"
+            },
+            "warning": {
+              "text": "{1} CPU, load {0:.1%}",
+              "value": 200
+            },
+            "critical": {
+              "text": "{1} CPU, load {0:.1%}",
+              "value": 250
+            },
+            "units" : "%",
+            "type": "PERCENT"
+          },
+          "jmx": {
+            "property_list": [
+              "java.lang:type=OperatingSystem/SystemCpuLoad",
+              "java.lang:type=OperatingSystem/AvailableProcessors"
+            ],
+            "value": "{0} * 100"
+          }
+        }
+      },
+      {
+        "name": "yarn_resourcemanager_rpc_latency",
+        "label": "ResourceManager RPC Latency",
+        "description": "This host-level alert is triggered if the ResourceManager operations RPC latency exceeds the configured critical threshold. Typically an increase in the RPC processing time increases the RPC queue length, causing the average queue wait time to increase for ResourceManager operations. The threshold values are in milliseconds.",
+        "interval": 5,
+        "scope": "ANY",
+        "enabled": true,
+        "source": {
+          "type": "METRIC",
+          "uri": {
+            "http": "{{yarn-site/yarn.resourcemanager.webapp.address}}",
+            "https": "{{yarn-site/yarn.resourcemanager.webapp.https.address}}",
+            "kerberos_keytab": "{{yarn-site/yarn.resourcemanager.webapp.spnego-keytab-file}}",
+            "kerberos_principal": "{{yarn-site/yarn.resourcemanager.webapp.spnego-principal}}",
+            "https_property": "{{yarn-site/yarn.http.policy}}",
+            "https_property_value": "HTTPS_ONLY",
+            "connection_timeout": 5.0,
+            "high_availability": {
+              "alias_key" : "{{yarn-site/yarn.resourcemanager.ha.rm-ids}}",
+              "http_pattern" : "{{yarn-site/yarn.resourcemanager.webapp.address.{{alias}}}}",
+              "https_pattern" : "{{yarn-site/yarn.resourcemanager.webapp.https.address.{{alias}}}}"
+            }
+          },
+          "reporting": {
+            "ok": {
+              "text": "Average Queue Time:[{0}], Average Processing Time:[{1}]"
+            },
+            "warning": {
+              "text": "Average Queue Time:[{0}], Average Processing Time:[{1}]",
+              "value": 3000
+            },          
+            "critical": {
+              "text": "Average Queue Time:[{0}], Average Processing Time:[{1}]",
+              "value": 5000
+            },
+            "units" : "ms"
+          },
+          "jmx": {
+            "property_list": [
+              "Hadoop:service=ResourceManager,name=RpcActivityForPort*/RpcQueueTimeAvgTime",
+              "Hadoop:service=ResourceManager,name=RpcActivityForPort*/RpcProcessingTimeAvgTime"
+            ],
+            "value": "{0}"
+          }
+        }
+      },
+      {
+        "name": "nodemanager_health_summary",
+        "label": "NodeManager Health Summary",
+        "description": "This service-level alert is triggered if there are unhealthy NodeManagers",
+        "interval": 1,
+        "scope": "SERVICE",
+        "enabled": true,
+        "source": {
+          "type": "SCRIPT",
+          "path": "YARN/2.1.0.2.0/package/alerts/alert_nodemanagers_summary.py",
+          "parameters": [
+            {
+              "name": "connection.timeout",
+              "display_name": "Connection Timeout",
+              "value": 5.0,
+              "type": "NUMERIC",
+              "description": "The maximum time before this alert is considered to be CRITICAL",
+              "units": "seconds",
+              "threshold": "CRITICAL"
+            }
+          ]
+        }
+      }
+    ],
+    "APP_TIMELINE_SERVER": [
+      {
+        "name": "yarn_app_timeline_server_webui",
+        "label": "App Timeline Web UI",
+        "description": "This host-level alert is triggered if the App Timeline Server Web UI is unreachable.",
+        "interval": 1,
+        "scope": "ANY",
+        "source": {
+          "type": "WEB",
+          "uri": {
+            "http": "{{yarn-site/yarn.timeline-service.webapp.address}}/ws/v1/timeline",
+            "https": "{{yarn-site/yarn.timeline-service.webapp.https.address}}/ws/v1/timeline",
+            "https_property": "{{yarn-site/yarn.http.policy}}",
+            "https_property_value": "HTTPS_ONLY",
+            "kerberos_keytab": "{{yarn-site/yarn.timeline-service.http-authentication.kerberos.keytab}}",
+            "kerberos_principal": "{{yarn-site/yarn.timeline-service.http-authentication.kerberos.principal}}",
+            "connection_timeout": 5.0
+          },
+          "reporting": {
+            "ok": {
+              "text": "HTTP {0} response in {2:.3f}s"
+            },
+            "warning":{
+              "text": "HTTP {0} response from {1} in {2:.3f}s ({3})"
+            },
+            "critical": {
+              "text": "Connection failed to {1} ({3})"
+            }
+          }
+        }
+      }
+    ]
+  }
+}

+ 50 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/configuration-mapred/mapred-env.xml

@@ -0,0 +1,50 @@
+<?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 supports_adding_forbidden="true">
+  <!-- mapred-env.sh -->
+  <property>
+    <name>content</name>
+    <display-name>mapred-env template</display-name>
+    <description>This is the jinja template for mapred-env.sh file</description>
+    <value>
+# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
+
+export HADOOP_JOB_HISTORYSERVER_HEAPSIZE={{jobhistory_heapsize}}
+
+export HADOOP_MAPRED_ROOT_LOGGER=INFO,RFA
+
+#export HADOOP_JOB_HISTORYSERVER_OPTS=
+#export HADOOP_MAPRED_LOG_DIR="" # Where log files are stored.  $HADOOP_MAPRED_HOME/logs by default.
+#export HADOOP_JHS_LOGGER=INFO,RFA # Hadoop JobSummary logger.
+#export HADOOP_MAPRED_PID_DIR= # The pid files are stored. /tmp by default.
+#export HADOOP_MAPRED_IDENT_STRING= #A string representing this instance of hadoop. $USER by default
+#export HADOOP_MAPRED_NICENESS= #The scheduling priority for daemons. Defaults to 0.
+export HADOOP_OPTS="-Dhdp.version=$HDP_VERSION $HADOOP_OPTS"
+export HADOOP_OPTS="-Djava.io.tmpdir={{hadoop_java_io_tmpdir}} $HADOOP_OPTS"
+export JAVA_LIBRARY_PATH="${JAVA_LIBRARY_PATH}:{{hadoop_java_io_tmpdir}}"
+    </value>
+    <value-attributes>
+      <type>content</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+</configuration>

+ 134 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/configuration-mapred/mapred-site.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 xmlns:xi="http://www.w3.org/2001/XInclude" supports_final="true">
+  <!-- These properties exist in HDP 2.2 and higher. -->
+  <property>
+    <name>mapreduce.admin.user.env</name>
+    <value>LD_LIBRARY_PATH=/usr/hdp/${hdp.version}/hadoop/lib/native:/usr/hdp/${hdp.version}/hadoop/lib/native/Linux-amd64-64</value>
+    <description>
+      Additional execution environment entries for map and reduce task processes.
+      This is not an additive property. You must preserve the original value if
+      you want your map and reduce tasks to have access to native libraries (compression, etc)
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>mapreduce.application.classpath</name>
+    <value>$PWD/mr-framework/hadoop/share/hadoop/mapreduce/*:$PWD/mr-framework/hadoop/share/hadoop/mapreduce/lib/*:$PWD/mr-framework/hadoop/share/hadoop/common/*:$PWD/mr-framework/hadoop/share/hadoop/common/lib/*:$PWD/mr-framework/hadoop/share/hadoop/yarn/*:$PWD/mr-framework/hadoop/share/hadoop/yarn/lib/*:$PWD/mr-framework/hadoop/share/hadoop/hdfs/*:$PWD/mr-framework/hadoop/share/hadoop/hdfs/lib/*:$PWD/mr-framework/hadoop/share/hadoop/tools/lib/*:/usr/hdp/${hdp.version}/hadoop/lib/hadoop-lzo-0.6.0.${hdp.version}.jar:/etc/hadoop/conf/secure</value>
+    <description>
+      CLASSPATH for MR applications. A comma-separated list of CLASSPATH
+      entries.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>mapreduce.application.framework.path</name>
+    <value>/hdp/apps/${hdp.version}/mapreduce/mapreduce.tar.gz#mr-framework</value>
+    <description/>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.app.mapreduce.am.admin-command-opts</name>
+    <value>-Dhdp.version=${hdp.version}</value>
+    <description>
+      Java opts for the MR App Master processes.
+      The following symbol, if present, will be interpolated: @taskid@ is replaced
+      by current TaskID. Any other occurrences of '@' will go unchanged.
+      For example, to enable verbose gc logging to a file named for the taskid in
+      /tmp and to set the heap maximum to be a gigabyte, pass a 'value' of:
+      -Xmx1024m -verbose:gc -Xloggc:/tmp/@taskid@.gc
+
+      Usage of -Djava.library.path can cause programs to no longer function if
+      hadoop native libraries are used. These values should instead be set as part
+      of LD_LIBRARY_PATH in the map / reduce JVM env using the mapreduce.map.env and
+      mapreduce.reduce.env config settings.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>mapreduce.admin.map.child.java.opts</name>
+    <value>-server -XX:NewRatio=8 -Djava.net.preferIPv4Stack=true -Dhdp.version=${hdp.version}</value>
+    <description/>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>mapreduce.admin.reduce.child.java.opts</name>
+    <value>-server -XX:NewRatio=8 -Djava.net.preferIPv4Stack=true -Dhdp.version=${hdp.version}</value>
+    <description/>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>mapreduce.reduce.shuffle.fetch.retry.enabled</name>
+    <value>1</value>
+    <description/>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>mapreduce.reduce.shuffle.fetch.retry.interval-ms</name>
+    <value>1000</value>
+    <description/>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>mapreduce.reduce.shuffle.fetch.retry.timeout-ms</name>
+    <value>30000</value>
+    <description/>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>mapreduce.job.emit-timeline-data</name>
+    <value>false</value>
+    <description/>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>mapreduce.jobhistory.bind-host</name>
+    <value>0.0.0.0</value>
+    <description/>
+    <on-ambari-upgrade add="true"/>
+  </property>
+
+  <!-- These properties exist in HDP 2.3 and higher. -->
+  <property>
+    <name>mapreduce.jobhistory.recovery.enable</name>
+    <value>true</value>
+    <description>Enable the history server to store server state and recover
+      server state upon startup.  If enabled then
+      mapreduce.jobhistory.recovery.store.class must be specified.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>mapreduce.jobhistory.recovery.store.class</name>
+    <value>org.apache.hadoop.mapreduce.v2.hs.HistoryServerLeveldbStateStoreService</value>
+    <description>The HistoryServerStateStoreService class to store history server
+      state for recovery.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>mapreduce.jobhistory.recovery.store.leveldb.path</name>
+    <value>/hadoop/mapreduce/jhs</value>
+    <description>The URI where history server state will be stored if HistoryServerLeveldbSystemStateStoreService
+      is configured as the recovery storage class.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+</configuration>

+ 69 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/configuration/capacity-scheduler.xml

@@ -0,0 +1,69 @@
+<?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 supports_final="false" supports_adding_forbidden="true">
+  <!-- These properties exist in HDP 2.2 and higher. -->
+  <property>
+    <name>yarn.scheduler.capacity.resource-calculator</name>
+    <description>
+      The ResourceCalculator implementation to be used to compare Resources in the scheduler.
+      The default i.e. org.apache.hadoop.yarn.util.resource.DefaultResourseCalculator only uses
+      Memory while DominantResourceCalculator uses Dominant-resource to compare multi-dimensional
+      resources such as Memory, CPU etc. A Java ResourceCalculator class name is expected.
+    </description>
+    <value>org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator</value>
+    <display-name>CPU Scheduling</display-name>
+    <value-attributes>
+      <type>value-list</type>
+      <entries>
+        <entry>
+          <value>org.apache.hadoop.yarn.util.resource.DominantResourceCalculator</value>
+          <label>Enabled</label>
+        </entry>
+        <entry>
+          <value>org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator</value>
+          <label>Disabled</label>
+        </entry>
+      </entries>
+      <selection-cardinality>1</selection-cardinality>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>yarn.scheduler.capacity.root.accessible-node-labels</name>
+    <value>*</value>
+    <description/>
+    <on-ambari-upgrade add="false"/>
+  </property>
+
+  <!-- These properties exist in HDP 2.5 and higher. -->
+  <property>
+    <name>capacity-scheduler</name>
+    <description>Enter key=value (one per line) for all properties of capacity-scheduler.xml</description>
+    <depends-on>
+      <property>
+        <type>hive-interactive-env</type>
+        <name>enable_hive_interactive</name>
+      </property>
+      <property>
+        <type>hive-interactive-env</type>
+        <name>llap_queue_capacity</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="false"/>
+  </property>
+</configuration>

+ 121 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/configuration/ranger-yarn-audit.xml

@@ -0,0 +1,121 @@
+<?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>
+  <property>
+    <name>xasecure.audit.is.enabled</name>
+    <value>true</value>
+    <description>Is Audit enabled?</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.hdfs</name>
+    <value>true</value>
+    <display-name>Audit to HDFS</display-name>
+    <description>Is Audit to HDFS enabled?</description>
+    <value-attributes>
+      <type>boolean</type>
+    </value-attributes>
+    <depends-on>
+      <property>
+        <type>ranger-env</type>
+        <name>xasecure.audit.destination.hdfs</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.hdfs.dir</name>
+    <value>hdfs://NAMENODE_HOSTNAME:8020/ranger/audit</value>
+    <description>HDFS folder to write audit to, make sure the service user has requried permissions</description>
+    <depends-on>
+      <property>
+        <type>ranger-env</type>
+        <name>xasecure.audit.destination.hdfs.dir</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.hdfs.batch.filespool.dir</name>
+    <value>/var/log/hadoop/yarn/audit/hdfs/spool</value>
+    <description>/var/log/hadoop/yarn/audit/hdfs/spool</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.solr</name>
+    <value>false</value>
+    <display-name>Audit to SOLR</display-name>
+    <description>Is Solr audit enabled?</description>
+    <value-attributes>
+      <type>boolean</type>
+    </value-attributes>
+    <depends-on>
+      <property>
+        <type>ranger-env</type>
+        <name>xasecure.audit.destination.solr</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.solr.urls</name>
+    <value/>
+    <description>Solr URL</description>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <depends-on>
+      <property>
+        <type>ranger-admin-site</type>
+        <name>ranger.audit.solr.urls</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.solr.zookeepers</name>
+    <value>NONE</value>
+    <description>Solr Zookeeper string</description>
+    <depends-on>
+      <property>
+        <type>ranger-admin-site</type>
+        <name>ranger.audit.solr.zookeepers</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.solr.batch.filespool.dir</name>
+    <value>/var/log/hadoop/yarn/audit/solr/spool</value>
+    <description>/var/log/hadoop/yarn/audit/solr/spool</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.provider.summary.enabled</name>
+    <value>false</value>
+    <display-name>Audit provider summary enabled</display-name>
+    <description>Enable Summary audit?</description>
+    <value-attributes>
+      <type>boolean</type>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+</configuration>

+ 82 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/configuration/ranger-yarn-plugin-properties.xml

@@ -0,0 +1,82 @@
+<?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.
+ */
+-->
+<configuration supports_final="true">
+  <property>
+    <name>policy_user</name>
+    <value>ambari-qa</value>
+    <display-name>Policy user for YARN</display-name>
+    <description>This user must be system user and also present at Ranger admin portal</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>hadoop.rpc.protection</name>
+    <value/>
+    <description>Used for repository creation on ranger admin</description>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>common.name.for.certificate</name>
+    <value/>
+    <description>Common name for certificate, this value should match what is specified in repo within ranger admin</description>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>ranger-yarn-plugin-enabled</name>
+    <value>No</value>
+    <display-name>Enable Ranger for YARN</display-name>
+    <description>Enable ranger yarn plugin ?</description>
+    <depends-on>
+      <property>
+        <type>ranger-env</type>
+        <name>ranger-yarn-plugin-enabled</name>
+      </property>
+    </depends-on>
+    <value-attributes>
+      <type>boolean</type>
+      <overridable>false</overridable>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>REPOSITORY_CONFIG_USERNAME</name>
+    <value>yarn</value>
+    <display-name>Ranger repository config user</display-name>
+    <description>Used for repository creation on ranger admin</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>REPOSITORY_CONFIG_PASSWORD</name>
+    <value>yarn</value>
+    <display-name>Ranger repository config password</display-name>
+    <property-type>PASSWORD</property-type>
+    <description>Used for repository creation on ranger admin</description>
+    <value-attributes>
+      <type>password</type>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+</configuration>

+ 66 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/configuration/ranger-yarn-policymgr-ssl.xml

@@ -0,0 +1,66 @@
+<?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>
+  <property>
+    <name>xasecure.policymgr.clientssl.keystore</name>
+    <value>/usr/hdp/current/hadoop-client/conf/ranger-yarn-plugin-keystore.jks</value>
+    <description>Java Keystore files</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.policymgr.clientssl.keystore.password</name>
+    <value>myKeyFilePassword</value>
+    <property-type>PASSWORD</property-type>
+    <description>password for keystore</description>
+    <value-attributes>
+      <type>password</type>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.policymgr.clientssl.truststore</name>
+    <value>/usr/hdp/current/hadoop-client/conf/ranger-yarn-plugin-truststore.jks</value>
+    <description>java truststore file</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.policymgr.clientssl.truststore.password</name>
+    <value>changeit</value>
+    <property-type>PASSWORD</property-type>
+    <description>java truststore password</description>
+    <value-attributes>
+      <type>password</type>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.policymgr.clientssl.keystore.credential.file</name>
+    <value>jceks://file{{credential_file}}</value>
+    <description>java keystore credential file</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.policymgr.clientssl.truststore.credential.file</name>
+    <value>jceks://file{{credential_file}}</value>
+    <description>java truststore credential file</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+</configuration>

+ 58 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/configuration/ranger-yarn-security.xml

@@ -0,0 +1,58 @@
+<?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>
+  <property>
+    <name>ranger.plugin.yarn.service.name</name>
+    <value>{{repo_name}}</value>
+    <description>Name of the Ranger service containing policies for this Yarn instance</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>ranger.plugin.yarn.policy.source.impl</name>
+    <value>org.apache.ranger.admin.client.RangerAdminRESTClient</value>
+    <description>Class to retrieve policies from the source</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>ranger.plugin.yarn.policy.rest.url</name>
+    <value>{{policymgr_mgr_url}}</value>
+    <description>URL to Ranger Admin</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>ranger.plugin.yarn.policy.rest.ssl.config.file</name>
+    <value>/etc/hadoop/conf/ranger-policymgr-ssl-yarn.xml</value>
+    <description>Path to the file containing SSL details to contact Ranger Admin</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>ranger.plugin.yarn.policy.pollIntervalMs</name>
+    <value>30000</value>
+    <description>How often to poll for changes in policies?</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>ranger.plugin.yarn.policy.cache.dir</name>
+    <value>/etc/ranger/{{repo_name}}/policycache</value>
+    <description>Directory where Ranger policies are cached after successful retrieval from the source</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+</configuration>

+ 201 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/configuration/yarn-env.xml

@@ -0,0 +1,201 @@
+<?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.
+ */
+-->
+<configuration supports_final="true" supports_adding_forbidden="true">
+  <!-- These properties exist in HDP 2.1 and higher. -->
+  <property>
+    <name>apptimelineserver_heapsize</name>
+    <value>1024</value>
+    <display-name>AppTimelineServer Java heap size</display-name>
+    <description>Max heapsize for AppTimelineServer using a numerical value in the scale of MB</description>
+    <value-attributes>
+      <overridable>false</overridable>
+      <unit>MB</unit>
+      <type>int</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+
+  <!-- These properties exist in HDP 2.2 and higher. -->
+  <property>
+    <name>yarn_cgroups_enabled</name>
+    <value>false</value>
+    <description>You can use CGroups to isolate CPU-heavy processes in a Hadoop cluster.</description>
+    <display-name>CPU Isolation</display-name>
+    <value-attributes>
+      <type>value-list</type>
+      <entries>
+        <entry>
+          <value>true</value>
+          <label>Enabled</label>
+        </entry>
+        <entry>
+          <value>false</value>
+          <label>Disabled</label>
+        </entry>
+      </entries>
+      <selection-cardinality>1</selection-cardinality>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+
+  <!-- These properties exist in HDP 2.3 and higher. -->
+  <property>
+    <name>is_supported_yarn_ranger</name>
+    <value>true</value>
+    <description>Set to false by default,  needs to be set to true in stacks that use Ranger Yarn Plugin</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+
+  <!-- yarn-env.sh -->
+  <property>
+    <name>content</name>
+    <display-name>yarn-env template</display-name>
+    <description>This is the jinja template for yarn-env.sh file</description>
+    <value>
+      export HADOOP_YARN_HOME={{hadoop_yarn_home}}
+      export YARN_LOG_DIR={{yarn_log_dir_prefix}}/$USER
+      export YARN_PID_DIR={{yarn_pid_dir_prefix}}/$USER
+      export HADOOP_LIBEXEC_DIR={{hadoop_libexec_dir}}
+      export JAVA_HOME={{java64_home}}
+      export JAVA_LIBRARY_PATH="${JAVA_LIBRARY_PATH}:{{hadoop_java_io_tmpdir}}"
+
+      # We need to add the EWMA appender for the yarn daemons only;
+      # however, YARN_ROOT_LOGGER is shared by the yarn client and the
+      # daemons. This is restrict the EWMA appender to daemons only.
+      INVOKER="${0##*/}"
+      if [ "$INVOKER" == "yarn-daemon.sh" ]; then
+        export YARN_ROOT_LOGGER=${YARN_ROOT_LOGGER:-INFO,EWMA,RFA}
+      fi
+
+      # User for YARN daemons
+      export HADOOP_YARN_USER=${HADOOP_YARN_USER:-yarn}
+
+      # resolve links - $0 may be a softlink
+      export YARN_CONF_DIR="${YARN_CONF_DIR:-$HADOOP_YARN_HOME/conf}"
+
+      # some Java parameters
+      # export JAVA_HOME=/home/y/libexec/jdk1.6.0/
+      if [ "$JAVA_HOME" != "" ]; then
+      #echo "run java in $JAVA_HOME"
+      JAVA_HOME=$JAVA_HOME
+      fi
+
+      if [ "$JAVA_HOME" = "" ]; then
+      echo "Error: JAVA_HOME is not set."
+      exit 1
+      fi
+
+      JAVA=$JAVA_HOME/bin/java
+      JAVA_HEAP_MAX=-Xmx1000m
+
+      # For setting YARN specific HEAP sizes please use this
+      # Parameter and set appropriately
+      YARN_HEAPSIZE={{yarn_heapsize}}
+
+      # check envvars which might override default args
+      if [ "$YARN_HEAPSIZE" != "" ]; then
+      JAVA_HEAP_MAX="-Xmx""$YARN_HEAPSIZE""m"
+      fi
+
+      # Resource Manager specific parameters
+
+      # Specify the max Heapsize for the ResourceManager using a numerical value
+      # in the scale of MB. For example, to specify an jvm option of -Xmx1000m, set
+      # the value to 1000.
+      # This value will be overridden by an Xmx setting specified in either YARN_OPTS
+      # and/or YARN_RESOURCEMANAGER_OPTS.
+      # If not specified, the default value will be picked from either YARN_HEAPMAX
+      # or JAVA_HEAP_MAX with YARN_HEAPMAX as the preferred option of the two.
+      export YARN_RESOURCEMANAGER_HEAPSIZE={{resourcemanager_heapsize}}
+
+      # Specify the JVM options to be used when starting the ResourceManager.
+      # These options will be appended to the options specified as YARN_OPTS
+      # and therefore may override any similar flags set in YARN_OPTS
+      #export YARN_RESOURCEMANAGER_OPTS=
+
+      # Node Manager specific parameters
+
+      # Specify the max Heapsize for the NodeManager using a numerical value
+      # in the scale of MB. For example, to specify an jvm option of -Xmx1000m, set
+      # the value to 1000.
+      # This value will be overridden by an Xmx setting specified in either YARN_OPTS
+      # and/or YARN_NODEMANAGER_OPTS.
+      # If not specified, the default value will be picked from either YARN_HEAPMAX
+      # or JAVA_HEAP_MAX with YARN_HEAPMAX as the preferred option of the two.
+      export YARN_NODEMANAGER_HEAPSIZE={{nodemanager_heapsize}}
+
+      # Specify the max Heapsize for the timeline server using a numerical value
+      # in the scale of MB. For example, to specify an jvm option of -Xmx1000m, set
+      # the value to 1024.
+      # This value will be overridden by an Xmx setting specified in either YARN_OPTS
+      # and/or YARN_TIMELINESERVER_OPTS.
+      # If not specified, the default value will be picked from either YARN_HEAPMAX
+      # or JAVA_HEAP_MAX with YARN_HEAPMAX as the preferred option of the two.
+      export YARN_TIMELINESERVER_HEAPSIZE={{apptimelineserver_heapsize}}
+
+      # Specify the JVM options to be used when starting the NodeManager.
+      # These options will be appended to the options specified as YARN_OPTS
+      # and therefore may override any similar flags set in YARN_OPTS
+      #export YARN_NODEMANAGER_OPTS=
+
+      # so that filenames w/ spaces are handled correctly in loops below
+      IFS=
+
+
+      # default log directory and file
+      if [ "$YARN_LOG_DIR" = "" ]; then
+      YARN_LOG_DIR="$HADOOP_YARN_HOME/logs"
+      fi
+      if [ "$YARN_LOGFILE" = "" ]; then
+      YARN_LOGFILE='yarn.log'
+      fi
+
+      # default policy file for service-level authorization
+      if [ "$YARN_POLICYFILE" = "" ]; then
+      YARN_POLICYFILE="hadoop-policy.xml"
+      fi
+
+      # restore ordinary behaviour
+      unset IFS
+
+
+      YARN_OPTS="$YARN_OPTS -Dhadoop.log.dir=$YARN_LOG_DIR"
+      YARN_OPTS="$YARN_OPTS -Dyarn.log.dir=$YARN_LOG_DIR"
+      YARN_OPTS="$YARN_OPTS -Dhadoop.log.file=$YARN_LOGFILE"
+      YARN_OPTS="$YARN_OPTS -Dyarn.log.file=$YARN_LOGFILE"
+      YARN_OPTS="$YARN_OPTS -Dyarn.home.dir=$YARN_COMMON_HOME"
+      YARN_OPTS="$YARN_OPTS -Dyarn.id.str=$YARN_IDENT_STRING"
+      YARN_OPTS="$YARN_OPTS -Dhadoop.root.logger=${YARN_ROOT_LOGGER:-INFO,console}"
+      YARN_OPTS="$YARN_OPTS -Dyarn.root.logger=${YARN_ROOT_LOGGER:-INFO,console}"
+      export YARN_NODEMANAGER_OPTS="$YARN_NODEMANAGER_OPTS -Dnm.audit.logger=INFO,NMAUDIT"
+      export YARN_RESOURCEMANAGER_OPTS="$YARN_RESOURCEMANAGER_OPTS -Drm.audit.logger=INFO,RMAUDIT"
+      if [ "x$JAVA_LIBRARY_PATH" != "x" ]; then
+      YARN_OPTS="$YARN_OPTS -Djava.library.path=$JAVA_LIBRARY_PATH"
+      fi
+      YARN_OPTS="$YARN_OPTS -Dyarn.policy.file=$YARN_POLICYFILE"
+      YARN_OPTS="$YARN_OPTS -Djava.io.tmpdir={{hadoop_java_io_tmpdir}}"
+    </value>
+    <value-attributes>
+      <type>content</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+</configuration>

+ 103 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/configuration/yarn-log4j.xml

@@ -0,0 +1,103 @@
+<?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 supports_final="false" supports_adding_forbidden="true">
+  <property>
+    <name>content</name>
+    <display-name>yarn-log4j template</display-name>
+    <description>Custom log4j.properties</description>
+    <value>
+#Relative to Yarn Log Dir Prefix
+yarn.log.dir=.
+#
+# Job Summary Appender
+#
+# Use following logger to send summary to separate file defined by
+# hadoop.mapreduce.jobsummary.log.file rolled daily:
+# hadoop.mapreduce.jobsummary.logger=INFO,JSA
+#
+hadoop.mapreduce.jobsummary.logger=${hadoop.root.logger}
+hadoop.mapreduce.jobsummary.log.file=hadoop-mapreduce.jobsummary.log
+log4j.appender.JSA=org.apache.log4j.DailyRollingFileAppender
+# Set the ResourceManager summary log filename
+yarn.server.resourcemanager.appsummary.log.file=hadoop-mapreduce.jobsummary.log
+# Set the ResourceManager summary log level and appender
+yarn.server.resourcemanager.appsummary.logger=${hadoop.root.logger}
+#yarn.server.resourcemanager.appsummary.logger=INFO,RMSUMMARY
+
+# To enable AppSummaryLogging for the RM,
+# set yarn.server.resourcemanager.appsummary.logger to
+# LEVEL,RMSUMMARY in hadoop-env.sh
+
+# Appender for ResourceManager Application Summary Log
+# Requires the following properties to be set
+#    - hadoop.log.dir (Hadoop Log directory)
+#    - yarn.server.resourcemanager.appsummary.log.file (resource manager app summary log filename)
+#    - yarn.server.resourcemanager.appsummary.logger (resource manager app summary log level and appender)
+log4j.appender.RMSUMMARY=org.apache.log4j.RollingFileAppender
+log4j.appender.RMSUMMARY.File=${yarn.log.dir}/${yarn.server.resourcemanager.appsummary.log.file}
+log4j.appender.RMSUMMARY.MaxFileSize=256MB
+log4j.appender.RMSUMMARY.MaxBackupIndex=20
+log4j.appender.RMSUMMARY.layout=org.apache.log4j.PatternLayout
+log4j.appender.RMSUMMARY.layout.ConversionPattern=%d{ISO8601} %p %c{2}: %m%n
+log4j.appender.JSA.layout=org.apache.log4j.PatternLayout
+log4j.appender.JSA.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
+log4j.appender.JSA.DatePattern=.yyyy-MM-dd
+log4j.appender.JSA.layout=org.apache.log4j.PatternLayout
+log4j.logger.org.apache.hadoop.yarn.server.resourcemanager.RMAppManager$ApplicationSummary=${yarn.server.resourcemanager.appsummary.logger}
+log4j.additivity.org.apache.hadoop.yarn.server.resourcemanager.RMAppManager$ApplicationSummary=false
+
+# Appender for viewing information for errors and warnings
+yarn.ewma.cleanupInterval=300
+yarn.ewma.messageAgeLimitSeconds=86400
+yarn.ewma.maxUniqueMessages=250
+log4j.appender.EWMA=org.apache.hadoop.yarn.util.Log4jWarningErrorMetricsAppender
+log4j.appender.EWMA.cleanupInterval=${yarn.ewma.cleanupInterval}
+log4j.appender.EWMA.messageAgeLimitSeconds=${yarn.ewma.messageAgeLimitSeconds}
+log4j.appender.EWMA.maxUniqueMessages=${yarn.ewma.maxUniqueMessages}
+
+# Audit logging for ResourceManager
+rm.audit.logger=${hadoop.root.logger}
+log4j.logger.org.apache.hadoop.yarn.server.resourcemanager.RMAuditLogger=${rm.audit.logger}
+log4j.additivity.org.apache.hadoop.yarn.server.resourcemanager.RMAuditLogger=false
+log4j.appender.RMAUDIT=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.RMAUDIT.File=${yarn.log.dir}/rm-audit.log
+log4j.appender.RMAUDIT.layout=org.apache.log4j.PatternLayout
+log4j.appender.RMAUDIT.layout.ConversionPattern=%d{ISO8601} %p %c{2}: %m%n
+log4j.appender.RMAUDIT.DatePattern=.yyyy-MM-dd
+
+# Audit logging for NodeManager
+nm.audit.logger=${hadoop.root.logger}
+log4j.logger.org.apache.hadoop.yarn.server.nodemanager.NMAuditLogger=${nm.audit.logger}
+log4j.additivity.org.apache.hadoop.yarn.server.nodemanager.NMAuditLogger=false
+log4j.appender.NMAUDIT=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.NMAUDIT.File=${yarn.log.dir}/nm-audit.log
+log4j.appender.NMAUDIT.layout=org.apache.log4j.PatternLayout
+log4j.appender.NMAUDIT.layout.ConversionPattern=%d{ISO8601} %p %c{2}: %m%n
+log4j.appender.NMAUDIT.DatePattern=.yyyy-MM-dd
+    </value>
+    <value-attributes>
+      <type>content</type>
+      <show-property-name>false</show-property-name>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+</configuration>

+ 796 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/configuration/yarn-site.xml

@@ -0,0 +1,796 @@
+<?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 supports_final="true">
+  <!-- These properties exist in HDP 2.1 and higher. -->
+  <property>
+    <name>yarn.timeline-service.enabled</name>
+    <value>true</value>
+    <description>Indicate to clients whether timeline service is enabled or not.
+      If enabled, clients will put entities and events to the timeline server.
+    </description>
+    <value-attributes>
+      <type>boolean</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.timeline-service.generic-application-history.store-class</name>
+    <value>org.apache.hadoop.yarn.server.applicationhistoryservice.NullApplicationHistoryStore</value>
+    <description>
+      Store class name for history store, defaulting to file system store
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.timeline-service.webapp.address</name>
+    <value>localhost:8188</value>
+    <description>
+      The http address of the timeline service web application.
+    </description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>yarn.timeline-service.webapp.https.address</name>
+    <value>localhost:8190</value>
+    <description>
+      The http address of the timeline service web application.
+    </description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>yarn.timeline-service.address</name>
+    <value>localhost:10200</value>
+    <description>
+      This is default address for the timeline server to start
+      the RPC server.
+    </description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <description>Time to live for timeline store data in milliseconds.</description>
+    <name>yarn.timeline-service.ttl-ms</name>
+    <value>2678400000</value>
+    <value-attributes>
+      <type>int</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <description>Length of time to wait between deletion cycles of leveldb timeline store in milliseconds.</description>
+    <name>yarn.timeline-service.leveldb-timeline-store.ttl-interval-ms</name>
+    <value>300000</value>
+    <value-attributes>
+      <type>int</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+
+  <!-- These properties exist in HDP 2.2 and higher. -->
+  <property>
+    <name>yarn.application.classpath</name>
+    <value>$HADOOP_CONF_DIR,/usr/hdp/current/hadoop-client/*,/usr/hdp/current/hadoop-client/lib/*,/usr/hdp/current/hadoop-hdfs-client/*,/usr/hdp/current/hadoop-hdfs-client/lib/*,/usr/hdp/current/hadoop-yarn-client/*,/usr/hdp/current/hadoop-yarn-client/lib/*</value>
+    <description>Classpath for typical applications.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hadoop.registry.rm.enabled</name>
+    <value>false</value>
+    <description>
+      Is the registry enabled: does the RM start it up, create the user and system paths, and purge service records when containers, application attempts and applications complete
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>hadoop.registry.zk.quorum</name>
+    <value>localhost:2181</value>
+    <description>
+      List of hostname:port pairs defining the zookeeper quorum binding for the registry
+    </description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>yarn.nodemanager.recovery.enabled</name>
+    <value>true</value>
+    <description>Enable the node manager to recover after starting</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.nodemanager.recovery.dir</name>
+    <value>{{yarn_log_dir_prefix}}/nodemanager/recovery-state</value>
+    <description>
+      The local filesystem directory in which the node manager will store
+      state when recovery is enabled.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.client.nodemanager-connect.retry-interval-ms</name>
+    <value>10000</value>
+    <description>Time interval between each attempt to connect to NM</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.client.nodemanager-connect.max-wait-ms</name>
+    <value>60000</value>
+    <description>Max time to wait to establish a connection to NM</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.resourcemanager.recovery.enabled</name>
+    <value>true</value>
+    <description>
+      Enable RM to recover state after starting.
+      If true, then yarn.resourcemanager.store.class must be specified.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.resourcemanager.work-preserving-recovery.enabled</name>
+    <value>true</value>
+    <description>
+      Enable RM work preserving recovery. This configuration is private to YARN for experimenting the feature.
+    </description>
+    <display-name>Enable Work Preserving Restart</display-name>
+    <value-attributes>
+      <type>boolean</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.resourcemanager.store.class</name>
+    <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
+    <description>
+      The class to use as the persistent store.
+      If org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore is used,
+      the store is implicitly fenced; meaning a single ResourceManager
+      is able to use the store at any point in time.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.resourcemanager.zk-address</name>
+    <value>localhost:2181</value>
+    <description>
+      List Host:Port of the ZooKeeper servers to be used by the RM. comma separated host:port pairs, each corresponding to a zk server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002" If the optional chroot suffix is used the example would look like: "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002/app/a" where the client would be rooted at "/app/a" and all paths would be relative to this root - ie getting/setting/etc...  "/foo/bar" would result in operations being run on "/app/a/foo/bar" (from the server perspective).
+    </description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>yarn.resourcemanager.zk-state-store.parent-path</name>
+    <value>/rmstore</value>
+    <description>Full path of the ZooKeeper znode where RM state will be stored. This must be supplied when using org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore as the value for yarn.resourcemanager.store.class</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.resourcemanager.zk-acl</name>
+    <value>world:anyone:rwcda</value>
+    <description>ACL's to be used for ZooKeeper znodes.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.resourcemanager.work-preserving-recovery.scheduling-wait-ms</name>
+    <value>10000</value>
+    <description>Set the amount of time RM waits before allocating new containers on work-preserving-recovery. Such wait period gives RM a chance to settle down resyncing with NMs in the cluster on recovery, before assigning new containers to applications.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.resourcemanager.connect.retry-interval.ms</name>
+    <value>30000</value>
+    <description>How often to try connecting to the ResourceManager.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.resourcemanager.connect.max-wait.ms</name>
+    <value>900000</value>
+    <description>Maximum time to wait to establish connection to ResourceManager</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.resourcemanager.zk-retry-interval-ms</name>
+    <value>1000</value>
+    <description>"Retry interval in milliseconds when connecting to ZooKeeper.
+      When HA is enabled, the value here is NOT used. It is generated
+      automatically from yarn.resourcemanager.zk-timeout-ms and
+      yarn.resourcemanager.zk-num-retries."
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.resourcemanager.zk-num-retries</name>
+    <value>1000</value>
+    <description>Number of times RM tries to connect to ZooKeeper.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.resourcemanager.zk-timeout-ms</name>
+    <value>10000</value>
+    <description>ZooKeeper session timeout in milliseconds. Session expiration is managed by the ZooKeeper cluster itself, not by the client. This value is used by the cluster to determine when the client's session expires. Expirations happens when the cluster does not hear from the client within the specified session timeout period (i.e. no heartbeat).</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.resourcemanager.state-store.max-completed-applications</name>
+    <value>${yarn.resourcemanager.max-completed-applications}</value>
+    <description>The maximum number of completed applications RM state store keeps, less than or equals to ${yarn.resourcemanager.max-completed-applications}. By default, it equals to ${yarn.resourcemanager.max-completed-applications}. This ensures that the applications kept in the state store are consistent with the applications remembered in RM memory. Any values larger than ${yarn.resourcemanager.max-completed-applications} will be reset to ${yarn.resourcemanager.max-completed-applications}. Note that this value impacts the RM recovery performance.Typically,  a smaller value indicates better performance on RM recovery.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.resourcemanager.fs.state-store.retry-policy-spec</name>
+    <value>2000, 500</value>
+    <description>hdfs client retry policy specification. hdfs client retry is always enabled. Specified in pairs of sleep-time and number-of-retries and (t0, n0), (t1, n1), ..., the first n0 retries sleep t0 milliseconds on average, the following n1 retries sleep t1 milliseconds on average, and so on.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.resourcemanager.fs.state-store.uri</name>
+    <value> </value>
+    <description>RI pointing to the location of the FileSystem path where RM state will be stored. This must be supplied when using org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore as the value for yarn.resourcemanager.store.class </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.resourcemanager.ha.enabled</name>
+    <value>false</value>
+    <description>enable RM HA or not</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.nodemanager.linux-container-executor.resources-handler.class</name>
+    <value>org.apache.hadoop.yarn.server.nodemanager.util.DefaultLCEResourcesHandler</value>
+    <description>Pre-requisite to use CGroups</description>
+    <depends-on>
+      <property>
+        <type>yarn-env</type>
+        <name>yarn_cgroups_enabled</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.nodemanager.linux-container-executor.cgroups.hierarchy</name>
+    <value>hadoop-yarn</value>
+    <description>Name of the Cgroups hierarchy under which all YARN jobs will be launched</description>
+    <depends-on>
+      <property>
+        <type>yarn-env</type>
+        <name>yarn_cgroups_enabled</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.nodemanager.linux-container-executor.cgroups.mount</name>
+    <value>false</value>
+    <description>If true, YARN will automount the CGroup, however the directory needs to already exist; else, the cgroup should be mounted by the admin</description>
+    <depends-on>
+      <property>
+        <type>yarn-env</type>
+        <name>yarn_cgroups_enabled</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.nodemanager.linux-container-executor.cgroups.mount-path</name>
+    <value>/cgroup</value>
+    <description>Path used by the LCE to mount cgroups if not found. This path must exist before the NodeManager is launched.</description>
+    <depends-on>
+      <property>
+        <type>yarn-env</type>
+        <name>yarn_cgroups_enabled</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.nodemanager.linux-container-executor.cgroups.strict-resource-usage</name>
+    <value>false</value>
+    <description>Strictly limit CPU resource usage to allocated usage even if spare CPU is available</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.nodemanager.resource.cpu-vcores</name>
+    <value>8</value>
+    <description>Number of vcores that can be allocated
+      for containers. This is used by the RM scheduler when allocating
+      resources for containers. This is not used to limit the number of
+      CPUs used by YARN containers. If it is set to -1 and
+      yarn.nodemanager.resource.detect-hardware-capabilities is true, it is
+      automatically determined from the hardware in case of Windows and Linux.
+      In other cases, number of vcores is 8 by default.
+    </description>
+    <display-name>Number of virtual cores</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>0</minimum>
+      <maximum>32</maximum>
+    </value-attributes>
+    <depends-on>
+      <property>
+        <type>yarn-site</type>
+        <name>yarn.nodemanager.resource.percentage-physical-cpu-limit</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.nodemanager.resource.percentage-physical-cpu-limit</name>
+    <value>80</value>
+    <description>The amount of CPU allocated for YARN containers - only effective when used with CGroups</description>
+    <display-name>Percentage of physical CPU allocated for all containers on a node</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>0</minimum>
+      <maximum>100</maximum>
+      <increment-step>1</increment-step>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.node-labels.fs-store.retry-policy-spec</name>
+    <value>2000, 500</value>
+    <description>
+      Retry policy used for FileSystem node label store. The policy is
+      specified by N pairs of sleep-time in milliseconds and number-of-retries
+      &quot;s1,n1,s2,n2,...&quot;.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.nodemanager.disk-health-checker.min-free-space-per-disk-mb</name>
+    <value>1000</value>
+    <description>This is related to disk size on the machines, admins should set one of yarn.nodemanager.disk-health-checker.min-free-space-per-disk-mb or yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage but not both. If both are set, the more conservative value will be used</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage</name>
+    <value>90</value>
+    <description>This is related to disk size on the machines, admins should set one of yarn.nodemanager.disk-health-checker.min-free-space-per-disk-mb or yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage but not both. If both are set, the more conservative value will be used</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.nodemanager.log-aggregation.debug-enabled</name>
+    <value>false</value>
+    <description>
+      This configuration is for debug and test purpose.
+      By setting this configuration as true.
+      We can break the lower bound of yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.nodemanager.log-aggregation.num-log-files-per-app</name>
+    <value>30</value>
+    <description>This is temporary solution. The configuration will be deleted once, we find a more scalable method to only write a single log file per LRS.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.resourcemanager.system-metrics-publisher.enabled</name>
+    <value>true</value>
+    <description/>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.resourcemanager.system-metrics-publisher.dispatcher.pool-size</name>
+    <value>10</value>
+    <description>Number of worker threads that send the yarn system metrics data.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.timeline-service.client.max-retries</name>
+    <value>30</value>
+    <description/>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.timeline-service.client.retry-interval-ms</name>
+    <value>1000</value>
+    <description/>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.timeline-service.ttl-enable</name>
+    <value>true</value>
+    <description>
+      Enable age off of timeline store data.
+    </description>
+    <value-attributes>
+      <type>boolean</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.timeline-service.state-store-class</name>
+    <value>org.apache.hadoop.yarn.server.timeline.recovery.LeveldbTimelineStateStore</value>
+    <description>Store class name for timeline state store.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.timeline-service.leveldb-state-store.path</name>
+    <value>/hadoop/yarn/timeline</value>
+    <description>Store file name for leveldb state store.</description>
+    <value-attributes>
+      <type>directory</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.timeline-service.leveldb-timeline-store.path</name>
+    <value>/hadoop/yarn/timeline</value>
+    <description>Store file name for leveldb timeline store.</description>
+    <value-attributes>
+      <type>directory</type>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.timeline-service.leveldb-timeline-store.read-cache-size</name>
+    <value>104857600</value>
+    <description>
+      Size of read cache for uncompressed blocks for leveldb timeline store in bytes.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.timeline-service.leveldb-timeline-store.start-time-read-cache-size</name>
+    <value>10000</value>
+    <description>
+      Size of cache for recently read entity start times for leveldb timeline store in number of entities.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.timeline-service.leveldb-timeline-store.start-time-write-cache-size</name>
+    <value>10000</value>
+    <description>
+      Size of cache for recently written entity start times for leveldb timeline store in number of entities.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.timeline-service.http-authentication.type</name>
+    <value>simple</value>
+    <description>
+      Defines authentication used for the Timeline Server HTTP endpoint.
+      Supported values are: simple | kerberos | $AUTHENTICATION_HANDLER_CLASSNAME
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.timeline-service.http-authentication.simple.anonymous.allowed</name>
+    <value>true</value>
+    <description/>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.resourcemanager.webapp.delegation-token-auth-filter.enabled</name>
+    <value>false</value>
+    <description>
+      Flag to enable override of the default kerberos authentication filter with
+      the RM authentication filter to allow authentication using delegation
+      tokens(fallback to kerberos if the tokens are missing).
+      Only applicable when the http authentication type is kerberos.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.resourcemanager.bind-host</name>
+    <value>0.0.0.0</value>
+    <description>Default value is 0.0.0.0, when this is set the service will bind on all interfaces.  I think these two options (blank, "0.0.0.0" sans quotes) should be the two available values, with blank as the default.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.nodemanager.bind-host</name>
+    <value>0.0.0.0</value>
+    <description>Default value is 0.0.0.0, when this is set the service will bind on all interfaces.  I think these two options (blank, "0.0.0.0" sans quotes) should be the two available values, with blank as the default.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.timeline-service.bind-host</name>
+    <value>0.0.0.0</value>
+    <description>Default value is 0.0.0.0, when this is set the service will bind on all interfaces.  I think these two options (blank, "0.0.0.0" sans quotes) should be the two available values, with blank as the default.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.node-labels.fs-store.root-dir</name>
+    <value>/system/yarn/node-labels</value>
+    <description>
+      URI for NodeLabelManager.
+    </description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.scheduler.minimum-allocation-vcores</name>
+    <value>1</value>
+    <description/>
+    <display-name>Minimum Container Size (VCores)</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>0</minimum>
+      <maximum>8</maximum>
+      <increment-step>1</increment-step>
+    </value-attributes>
+    <depends-on>
+      <property>
+        <type>yarn-site</type>
+        <name>yarn.nodemanager.resource.cpu-vcores</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.scheduler.maximum-allocation-vcores</name>
+    <value>8</value>
+    <description/>
+    <display-name>Maximum Container Size (VCores)</display-name>
+    <value-attributes>
+      <type>int</type>
+      <minimum>0</minimum>
+      <maximum>8</maximum>
+      <increment-step>1</increment-step>
+    </value-attributes>
+    <depends-on>
+      <property>
+        <type>yarn-site</type>
+        <name>yarn.nodemanager.resource.cpu-vcores</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.node-labels.enabled</name>
+    <value>false</value>
+    <description>
+      Enable node labels to restrict YARN applications so that they run only on cluster nodes that have a specified node label.
+    </description>
+    <display-name>Node Labels</display-name>
+    <value-attributes>
+      <type>value-list</type>
+      <entries>
+        <entry>
+          <value>true</value>
+          <label>Enabled</label>
+        </entry>
+        <entry>
+          <value>false</value>
+          <label>Disabled</label>
+        </entry>
+      </entries>
+      <selection-cardinality>1</selection-cardinality>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.nodemanager.container-executor.class</name>
+    <value>org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor</value>
+    <description>ContainerExecutor for launching containers</description>
+    <depends-on>
+      <property>
+        <type>yarn-env</type>
+        <name>yarn_cgroups_enabled</name>
+      </property>
+      <property>
+        <type>core-site</type>
+        <name>hadoop.security.authentication</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.nodemanager.linux-container-executor.group</name>
+    <value>hadoop</value>
+    <description>Unix group of the NodeManager</description>
+    <depends-on>
+      <property>
+        <type>yarn-env</type>
+        <name>yarn_cgroups_enabled</name>
+      </property>
+      <property>
+        <type>cluster-env</type>
+        <name>user_group</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.resourcemanager.scheduler.monitor.enable</name>
+    <description>
+      Enable a set of periodic monitors (specified in
+      yarn.resourcemanager.scheduler.monitor.policies) that affect the
+      scheduler.
+    </description>
+    <value>false</value>
+    <display-name>Pre-emption</display-name>
+    <value-attributes>
+      <type>value-list</type>
+      <entries>
+        <entry>
+          <value>true</value>
+          <label>Enabled</label>
+        </entry>
+        <entry>
+          <value>false</value>
+          <label>Disabled</label>
+        </entry>
+      </entries>
+      <selection-cardinality>1</selection-cardinality>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+
+  <!-- This first section of properties exists in HDP 2.3 and higher. -->
+  <property>
+    <name>yarn.timeline-service.recovery.enabled</name>
+    <description>
+      Enable timeline server to recover state after starting. If
+      true, then yarn.timeline-service.state-store-class must be specified.
+    </description>
+    <value>true</value>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.acl.enable</name>
+    <value>false</value>
+    <description> Are acls enabled. </description>
+    <depends-on>
+      <property>
+        <type>ranger-yarn-plugin-properties</type>
+        <name>ranger-yarn-plugin-enabled</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="true"/>
+  </property>arn.nodemanager.linux-container-executo
+  <property>
+    <name>yarn.authorization-provider</name>
+    <description> Yarn authorization provider class. </description>
+    <depends-on>
+      <property>
+        <type>ranger-yarn-plugin-properties</type>
+        <name>ranger-yarn-plugin-enabled</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.admin.acl</name>
+    <value>yarn</value>
+    <description> ACL of who can be admin of the YARN cluster. </description>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <!-- ATS v1.5 properties that exist in HDP 2.3 and higher. -->
+  <property>
+    <name>yarn.timeline-service.version</name>
+    <value>1.5</value>
+    <description>Timeline service version we&#x2019;re currently using.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.timeline-service.store-class</name>
+    <value>org.apache.hadoop.yarn.server.timeline.EntityGroupFSTimelineStore</value>
+    <description>Main storage class for YARN timeline server.</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.timeline-service.entity-group-fs-store.active-dir</name>
+    <value>/ats/active/</value>
+    <description>DFS path to store active application&#x2019;s timeline data</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.timeline-service.entity-group-fs-store.done-dir</name>
+    <value>/ats/done/</value>
+    <description>DFS path to store done application&#x2019;s timeline data</description>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.timeline-service.entity-group-fs-store.group-id-plugin-classes</name>
+    <value/>
+    <description>Plugins that can translate a timeline entity read request into a list of timeline cache ids, separated by commas. </description>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <!-- advanced ats v1.5 properties-->
+  <property>
+    <name>yarn.timeline-service.entity-group-fs-store.summary-store</name>
+    <description>Summary storage for ATS v1.5</description>
+    <!-- Use rolling leveldb, advanced -->
+    <value>org.apache.hadoop.yarn.server.timeline.RollingLevelDBTimelineStore</value>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.timeline-service.entity-group-fs-store.scan-interval-seconds</name>
+    <description>
+      Scan interval for ATS v1.5 entity group file system storage reader.This
+      value controls how frequent the reader will scan the HDFS active directory
+      for application status.
+    </description>
+    <!-- Default is 60 seconds, advanced -->
+    <value>60</value>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.timeline-service.entity-group-fs-store.cleaner-interval-seconds</name>
+    <description>
+      Scan interval for ATS v1.5 entity group file system storage cleaner.This
+      value controls how frequent the reader will scan the HDFS done directory
+      for stale application data.
+    </description>
+    <!-- 3600 is default, advanced -->
+    <value>3600</value>
+    <on-ambari-upgrade add="true"/>
+  </property>
+  <property>
+    <name>yarn.timeline-service.entity-group-fs-store.retain-seconds</name>
+    <description>
+      How long the ATS v1.5 entity group file system storage will keep an
+      application's data in the done directory.
+    </description>
+    <!-- 7 days is default, advanced -->
+    <value>604800</value>
+    <on-ambari-upgrade add="true"/>
+  </property>
+
+
+  <!-- This section of properties exists in HDP 2.5 and higher. -->
+  <property>
+    <name>yarn.nodemanager.aux-services</name>
+    <value>mapreduce_shuffle,spark_shuffle,spark2_shuffle</value>
+    <description>Auxilliary services of NodeManager. A valid service name should only contain a-zA-Z0-9_ and cannot start with numbers</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>yarn.nodemanager.aux-services.spark2_shuffle.class</name>
+    <value>org.apache.spark.network.yarn.YarnShuffleService</value>
+    <description>The auxiliary service class to use for Spark 2</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>yarn.nodemanager.aux-services.spark_shuffle.classpath</name>
+    <value>{{stack_root}}/${hdp.version}/spark/aux/*</value>
+    <description>The auxiliary service classpath to use for Spark</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>yarn.nodemanager.aux-services.spark2_shuffle.classpath</name>
+    <value>{{stack_root}}/${hdp.version}/spark2/aux/*</value>
+    <description>The auxiliary service classpath to use for Spark 2</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds</name>
+    <value>3600</value>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>yarn.nodemanager.container-metrics.unregister-delay-ms</name>
+    <value>60000</value>
+    <description>The delay time ms to unregister container metrics after completion.</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>yarn.timeline-service.entity-group-fs-store.group-id-plugin-classpath</name>
+    <value/>
+    <description>Classpath for all plugins defined in yarn.timeline-service.entity-group-fs-store.group-id-plugin-classes.</description>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+</configuration>

+ 279 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/kerberos.json

@@ -0,0 +1,279 @@
+{
+  "services": [
+    {
+      "name": "YARN",
+      "identities": [
+        {
+          "name": "/spnego"
+        },
+        {
+          "name": "/smokeuser"
+        }
+      ],
+      "configurations": [
+        {
+          "yarn-site": {
+            "yarn.timeline-service.enabled": "true",
+            "yarn.timeline-service.http-authentication.type": "kerberos",
+            "yarn.acl.enable": "true",
+            "yarn.admin.acl": "${yarn-env/yarn_user},dr.who",
+            "yarn.timeline-service.http-authentication.signature.secret": "",
+            "yarn.timeline-service.http-authentication.signature.secret.file": "",
+            "yarn.timeline-service.http-authentication.signer.secret.provider": "",
+            "yarn.timeline-service.http-authentication.signer.secret.provider.object": "",
+            "yarn.timeline-service.http-authentication.token.validity": "",
+            "yarn.timeline-service.http-authentication.cookie.domain": "",
+            "yarn.timeline-service.http-authentication.cookie.path": "",
+            "yarn.timeline-service.http-authentication.proxyusers.*.hosts": "",
+            "yarn.timeline-service.http-authentication.proxyusers.*.users": "",
+            "yarn.timeline-service.http-authentication.proxyusers.*.groups": "",
+            "yarn.timeline-service.http-authentication.kerberos.name.rules": "",
+            "yarn.resourcemanager.proxyusers.*.groups": "",
+            "yarn.resourcemanager.proxyusers.*.hosts": "",
+            "yarn.resourcemanager.proxyusers.*.users": "",
+            "yarn.resourcemanager.proxy-user-privileges.enabled": "true",
+            "yarn.nodemanager.linux-container-executor.cgroups.mount-path": "",
+            "yarn.resourcemanager.zk-state-store.parent-path": "/rmstore-secure"
+          }
+        },
+        {
+          "core-site": {
+            "hadoop.proxyuser.${yarn-env/yarn_user}.groups": "*",
+            "hadoop.proxyuser.${yarn-env/yarn_user}.hosts": "${clusterHostInfo/rm_host}"
+          }
+        },
+        {
+          "capacity-scheduler": {
+            "yarn.scheduler.capacity.root.acl_administer_queue": "${yarn-env/yarn_user}",
+            "yarn.scheduler.capacity.root.default.acl_administer_queue": "${yarn-env/yarn_user}",
+            "yarn.scheduler.capacity.root.acl_administer_jobs": "${yarn-env/yarn_user}",
+            "yarn.scheduler.capacity.root.default.acl_administer_jobs": "${yarn-env/yarn_user}",
+            "yarn.scheduler.capacity.root.default.acl_submit_applications": "${yarn-env/yarn_user}"
+          }
+        },
+        {
+          "ranger-yarn-audit": {
+            "xasecure.audit.jaas.Client.loginModuleName": "com.sun.security.auth.module.Krb5LoginModule",
+            "xasecure.audit.jaas.Client.loginModuleControlFlag": "required",
+            "xasecure.audit.jaas.Client.option.useKeyTab": "true",
+            "xasecure.audit.jaas.Client.option.storeKey": "false",
+            "xasecure.audit.jaas.Client.option.serviceName": "solr",
+            "xasecure.audit.destination.solr.force.use.inmemory.jaas.config": "true"
+          }
+        }
+      ],
+      "components": [
+        {
+          "name": "NODEMANAGER",
+          "identities": [
+            {
+              "name": "nodemanager_nm",
+              "principal": {
+                "value": "nm/_HOST@${realm}",
+                "type" : "service",
+                "configuration": "yarn-site/yarn.nodemanager.principal",
+                "local_username": "${yarn-env/yarn_user}"
+              },
+              "keytab": {
+                "file": "${keytab_dir}/nm.service.keytab",
+                "owner": {
+                  "name": "${yarn-env/yarn_user}",
+                  "access": "r"
+                },
+                "group": {
+                  "name": "${cluster-env/user_group}",
+                  "access": ""
+                },
+                "configuration": "yarn-site/yarn.nodemanager.keytab"
+              }
+            },
+            {
+              "name": "/HIVE/HIVE_SERVER/hive_server_hive",
+              "principal": {
+                "configuration": "hive-interactive-site/hive.llap.daemon.service.principal"
+              },
+              "keytab": {
+                "configuration": "hive-interactive-site/hive.llap.daemon.keytab.file"
+              },
+              "when" : {
+                "contains" : ["services", "HIVE"]
+              }
+            },
+            {
+              "name": "llap_zk_hive",
+              "principal": {
+                "value": "hive/_HOST@${realm}",
+                "type" : "service",
+                "configuration": "hive-interactive-site/hive.llap.zk.sm.principal"
+              },
+              "keytab": {
+                "file": "${keytab_dir}/hive.llap.zk.sm.keytab",
+                "owner": {
+                  "name": "${yarn-env/yarn_user}",
+                  "access": "r"
+                },
+                "group": {
+                  "name": "${cluster-env/user_group}",
+                  "access": "r"
+                },
+                "configuration": "hive-interactive-site/hive.llap.zk.sm.keytab.file"
+              },
+              "when" : {
+                "contains" : ["services", "HIVE"]
+              }
+            },
+            {
+              "name": "/spnego",
+              "principal": {
+                "configuration": "yarn-site/yarn.nodemanager.webapp.spnego-principal"
+              },
+              "keytab": {
+                "configuration": "yarn-site/yarn.nodemanager.webapp.spnego-keytab-file"
+              }
+            }
+          ],
+          "configurations": [
+            {
+              "yarn-site": {
+                "yarn.nodemanager.container-executor.class": "org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor"
+              }
+            }
+          ]
+        },
+        {
+          "name": "RESOURCEMANAGER",
+          "identities": [
+            {
+              "name": "resource_manager_rm",
+              "principal": {
+                "value": "rm/_HOST@${realm}",
+                "type" : "service",
+                "configuration": "yarn-site/yarn.resourcemanager.principal",
+                "local_username": "${yarn-env/yarn_user}"
+              },
+              "keytab": {
+                "file": "${keytab_dir}/rm.service.keytab",
+                "owner": {
+                  "name": "${yarn-env/yarn_user}",
+                  "access": "r"
+                },
+                "group": {
+                  "name": "${cluster-env/user_group}",
+                  "access": ""
+                },
+                "configuration": "yarn-site/yarn.resourcemanager.keytab"
+              }
+            },
+            {
+              "name": "/spnego",
+              "principal": {
+                "configuration": "yarn-site/yarn.resourcemanager.webapp.spnego-principal"
+              },
+              "keytab": {
+                "configuration": "yarn-site/yarn.resourcemanager.webapp.spnego-keytab-file"
+              }
+            },
+            {
+              "name": "/YARN/RESOURCEMANAGER/resource_manager_rm",
+              "principal": {
+                "configuration": "ranger-yarn-audit/xasecure.audit.jaas.Client.option.principal"
+              },
+              "keytab": {
+                "configuration": "ranger-yarn-audit/xasecure.audit.jaas.Client.option.keyTab"
+              }
+            }
+          ]
+        },
+        {
+          "name": "APP_TIMELINE_SERVER",
+          "identities": [
+            {
+              "name": "app_timeline_server_yarn",
+              "principal": {
+                "value": "yarn/_HOST@${realm}",
+                "type" : "service",
+                "configuration": "yarn-site/yarn.timeline-service.principal",
+                "local_username": "${yarn-env/yarn_user}"
+              },
+              "keytab": {
+                "file": "${keytab_dir}/yarn.service.keytab",
+                "owner": {
+                  "name": "${yarn-env/yarn_user}",
+                  "access": "r"
+                },
+                "group": {
+                  "name": "${cluster-env/user_group}",
+                  "access": ""
+                },
+                "configuration": "yarn-site/yarn.timeline-service.keytab"
+              }
+            },
+            {
+              "name": "/spnego",
+              "principal": {
+                "configuration": "yarn-site/yarn.timeline-service.http-authentication.kerberos.principal"
+              },
+              "keytab": {
+                "configuration": "yarn-site/yarn.timeline-service.http-authentication.kerberos.keytab"
+              }
+            },
+            {
+              "name": "/HDFS/NAMENODE/hdfs"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "name": "MAPREDUCE2",
+      "identities": [
+        {
+          "name": "/spnego"
+        },
+        {
+          "name": "/smokeuser"
+        }
+      ],
+      "components": [
+        {
+          "name": "HISTORYSERVER",
+          "identities": [
+            {
+              "name": "/HDFS/NAMENODE/hdfs"
+            },
+            {
+              "name": "history_server_jhs",
+              "principal": {
+                "value": "jhs/_HOST@${realm}",
+                "type" : "service",
+                "configuration": "mapred-site/mapreduce.jobhistory.principal",
+                "local_username": "${mapred-env/mapred_user}"
+              },
+              "keytab": {
+                "file": "${keytab_dir}/jhs.service.keytab",
+                "owner": {
+                  "name": "${mapred-env/mapred_user}",
+                  "access": "r"
+                },
+                "group": {
+                  "name": "${cluster-env/user_group}",
+                  "access": ""
+                },
+                "configuration": "mapred-site/mapreduce.jobhistory.keytab"
+              }
+            },
+            {
+              "name": "/spnego",
+              "principal": {
+                "configuration": "mapred-site/mapreduce.jobhistory.webapp.spnego-principal"
+              },
+              "keytab": {
+                "configuration": "mapred-site/mapreduce.jobhistory.webapp.spnego-keytab-file"
+              }
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}

+ 352 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/metainfo.xml

@@ -0,0 +1,352 @@
+<?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>
+  <schemaVersion>2.0</schemaVersion>
+  <services>
+    <service>
+      <name>YARN</name>
+      <displayName>YARN</displayName>
+      <comment>Apache Hadoop NextGen MapReduce (YARN)</comment>
+      <version>2.7.1.2.5</version>
+
+      <quickLinksConfigurations>
+        <quickLinksConfiguration>
+          <fileName>quicklinks.json</fileName>
+          <default>true</default>
+        </quickLinksConfiguration>
+      </quickLinksConfigurations>
+
+      <components>
+
+        <component>
+          <name>APP_TIMELINE_SERVER</name>
+          <displayName>App Timeline Server</displayName>
+          <category>MASTER</category>
+          <cardinality>1</cardinality>
+          <reassignAllowed>true</reassignAllowed>
+          <commandScript>
+            <script>scripts/application_timeline_server.py</script>
+            <scriptType>PYTHON</scriptType>
+            <timeout>600</timeout>
+          </commandScript>
+
+          <!--
+          <dependencies>
+            <dependency>
+              <name>TEZ/TEZ_CLIENT</name>
+              <scope>host</scope>
+              <auto-deploy>
+                <enabled>true</enabled>
+              </auto-deploy>
+            </dependency>
+            <dependency>
+              <name>SPARK/SPARK_CLIENT</name>
+              <scope>host</scope>
+              <auto-deploy>
+                <enabled>true</enabled>
+              </auto-deploy>
+            </dependency>
+          </dependencies>
+          -->
+        </component>
+
+        <component>
+          <name>RESOURCEMANAGER</name>
+          <displayName>ResourceManager</displayName>
+          <category>MASTER</category>
+          <cardinality>1-2</cardinality>
+
+          <commandScript>
+            <script>scripts/resourcemanager.py</script>
+            <scriptType>PYTHON</scriptType>
+            <timeout>1200</timeout>
+          </commandScript>
+          <logs>
+            <log>
+              <logId>yarn_resourcemanager</logId>
+              <primary>true</primary>
+            </log>
+            <log>
+              <logId>yarn_historyserver</logId>
+            </log>
+            <log>
+              <logId>yarn_jobsummary</logId>
+            </log>
+          </logs>
+
+          <customCommands>
+            <customCommand>
+              <name>DECOMMISSION</name>
+              <commandScript>
+                <script>scripts/resourcemanager.py</script>
+                <scriptType>PYTHON</scriptType>
+                <timeout>600</timeout>
+              </commandScript>
+            </customCommand>
+            <customCommand>
+              <name>REFRESHQUEUES</name>
+              <commandScript>
+                <script>scripts/resourcemanager.py</script>
+                <scriptType>PYTHON</scriptType>
+                <timeout>600</timeout>
+              </commandScript>
+            </customCommand>
+          </customCommands>
+
+          <!--
+          <dependencies>
+            <dependency>
+              <name>TEZ/TEZ_CLIENT</name>
+              <scope>host</scope>
+              <auto-deploy>
+                <enabled>true</enabled>
+              </auto-deploy>
+            </dependency>
+          </dependencies>
+          -->
+
+          <configuration-dependencies>
+            <config-type>capacity-scheduler</config-type>
+            <config-type>hdfs-site</config-type>
+          </configuration-dependencies>
+        </component>
+
+        <component>
+          <name>NODEMANAGER</name>
+          <displayName>NodeManager</displayName>
+          <category>SLAVE</category>
+          <cardinality>1+</cardinality>
+          <versionAdvertised>true</versionAdvertised>
+          <decommissionAllowed>true</decommissionAllowed>
+          <commandScript>
+            <script>scripts/nodemanager.py</script>
+            <scriptType>PYTHON</scriptType>
+            <timeout>1200</timeout>
+          </commandScript>
+          <bulkCommands>
+            <displayName>NodeManagers</displayName>
+            <!-- Used by decommission and recommission -->
+            <masterComponent>RESOURCEMANAGER</masterComponent>
+          </bulkCommands>
+          <logs>
+            <log>
+              <logId>yarn_nodemanager</logId>
+            </log>
+          </logs>
+        </component>
+
+        <component>
+          <name>YARN_CLIENT</name>
+          <displayName>YARN Client</displayName>
+          <category>CLIENT</category>
+          <cardinality>1+</cardinality>
+          <versionAdvertised>true</versionAdvertised>
+          <commandScript>
+            <script>scripts/yarn_client.py</script>
+            <scriptType>PYTHON</scriptType>
+            <timeout>1200</timeout>
+          </commandScript>
+          <configFiles>
+            <configFile>
+              <type>xml</type>
+              <fileName>yarn-site.xml</fileName>
+              <dictionaryName>yarn-site</dictionaryName>
+            </configFile>
+            <configFile>
+              <type>xml</type>
+              <fileName>core-site.xml</fileName>
+              <dictionaryName>core-site</dictionaryName>
+            </configFile>
+            <configFile>
+              <type>env</type>
+              <fileName>yarn-env.sh</fileName>
+              <dictionaryName>yarn-env</dictionaryName>
+            </configFile>
+            <configFile>
+              <type>env</type>
+              <fileName>log4j.properties</fileName>
+              <dictionaryName>hdfs-log4j,yarn-log4j</dictionaryName>
+            </configFile>
+            <configFile>
+              <type>xml</type>
+              <fileName>capacity-scheduler.xml</fileName>
+              <dictionaryName>capacity-scheduler</dictionaryName>
+            </configFile>
+          </configFiles>
+        </component>
+      </components>
+
+      <configuration-dependencies>
+        <config-type>yarn-site</config-type>
+        <config-type>yarn-env</config-type>
+        <config-type>hdfs-site</config-type>
+        <config-type>hadoop-env</config-type>
+        <config-type>core-site</config-type>
+        <config-type>mapred-site</config-type>
+        <config-type>yarn-log4j</config-type>
+        <config-type>ams-ssl-client</config-type>
+        <config-type>ranger-yarn-plugin-properties</config-type>
+        <config-type>ranger-yarn-audit</config-type>
+        <config-type>ranger-yarn-policymgr-ssl</config-type>
+        <config-type>ranger-yarn-security</config-type>
+      </configuration-dependencies>
+      <widgetsFileName>YARN_widgets.json</widgetsFileName>
+      <metricsFileName>YARN_metrics.json</metricsFileName>
+
+      <commandScript>
+        <script>scripts/service_check.py</script>
+        <scriptType>PYTHON</scriptType>
+        <timeout>300</timeout>
+      </commandScript>
+
+      <requiredServices>
+        <service>HDFS</service>
+        <service>MAPREDUCE2</service>
+      </requiredServices>
+
+      <!-- No packages to install. -->
+      <osSpecifics></osSpecifics>
+    </service>
+
+    <service>
+      <name>MAPREDUCE2</name>
+      <version>2.7.1.2.5</version>
+      <displayName>MapReduce2</displayName>
+      <comment>Apache Hadoop NextGen MapReduce (YARN)</comment>
+      <configuration-dir>configuration-mapred</configuration-dir>
+
+      <components>
+        <component>
+          <name>HISTORYSERVER</name>
+          <displayName>History Server</displayName>
+          <category>MASTER</category>
+          <cardinality>1</cardinality>
+          <versionAdvertised>true</versionAdvertised>
+          <reassignAllowed>true</reassignAllowed>
+          <auto-deploy>
+            <enabled>true</enabled>
+            <co-locate>YARN/RESOURCEMANAGER</co-locate>
+          </auto-deploy>
+          <dependencies>
+            <dependency>
+              <name>HDFS/HDFS_CLIENT</name>
+              <scope>host</scope>
+              <auto-deploy>
+                <enabled>true</enabled>
+              </auto-deploy>
+            </dependency>
+
+            <!--
+            <dependency>
+              <name>TEZ/TEZ_CLIENT</name>
+              <scope>host</scope>
+              <auto-deploy>
+                <enabled>true</enabled>
+              </auto-deploy>
+            </dependency>
+            <dependency>
+              <name>SLIDER/SLIDER</name>
+              <scope>host</scope>
+              <auto-deploy>
+                <enabled>true</enabled>
+              </auto-deploy>
+            </dependency>
+            -->
+          </dependencies>
+          <commandScript>
+            <script>scripts/historyserver.py</script>
+            <scriptType>PYTHON</scriptType>
+            <timeout>1200</timeout>
+          </commandScript>
+          <logs>
+            <log>
+              <logId>mapred_historyserver</logId>
+              <primary>true</primary>
+            </log>
+          </logs>
+        </component>
+
+        <component>
+          <name>MAPREDUCE2_CLIENT</name>
+          <displayName>MapReduce2 Client</displayName>
+          <category>CLIENT</category>
+          <cardinality>0+</cardinality>
+          <versionAdvertised>true</versionAdvertised>
+          <commandScript>
+            <script>scripts/mapreduce2_client.py</script>
+            <scriptType>PYTHON</scriptType>
+            <timeout>1200</timeout>
+          </commandScript>
+          <configFiles>
+            <configFile>
+              <type>xml</type>
+              <fileName>mapred-site.xml</fileName>
+              <dictionaryName>mapred-site</dictionaryName>
+            </configFile>
+            <configFile>
+              <type>xml</type>
+              <fileName>core-site.xml</fileName>
+              <dictionaryName>core-site</dictionaryName>
+            </configFile>
+            <configFile>
+              <type>env</type>
+              <fileName>mapred-env.sh</fileName>
+              <dictionaryName>mapred-env</dictionaryName>
+            </configFile>
+          </configFiles>
+        </component>
+      </components>
+
+      <commandScript>
+        <script>scripts/mapred_service_check.py</script>
+        <scriptType>PYTHON</scriptType>
+        <timeout>300</timeout>
+      </commandScript>
+
+      <requiredServices>
+        <service>YARN</service>
+      </requiredServices>
+
+      <configuration-dependencies>
+        <config-type>hdfs-site</config-type>
+        <config-type>hadoop-env</config-type>
+        <config-type>core-site</config-type>
+        <config-type>mapred-site</config-type>
+        <config-type>mapred-env</config-type>
+        <config-type>ssl-client</config-type>
+        <config-type>ssl-server</config-type>
+        <config-type>ams-ssl-client</config-type>
+      </configuration-dependencies>
+      <restartRequiredAfterRackChange>true</restartRequiredAfterRackChange>
+      <widgetsFileName>MAPREDUCE2_widgets.json</widgetsFileName>
+      <metricsFileName>MAPREDUCE2_metrics.json</metricsFileName>
+
+      <quickLinksConfigurations-dir>quicklinks-mapred</quickLinksConfigurations-dir>
+      <quickLinksConfigurations>
+        <quickLinksConfiguration>
+          <fileName>quicklinks.json</fileName>
+          <default>true</default>
+        </quickLinksConfiguration>
+      </quickLinksConfigurations>
+
+      <!-- No packages to install. -->
+      <osSpecifics></osSpecifics>
+    </service>
+  </services>
+</metainfo>

+ 67 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/package/alerts/alert_nodemanager_health.py

@@ -0,0 +1,67 @@
+#!/usr/bin/env python
+
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import logging
+
+RESULT_CODE_OK = 'OK'
+RESULT_CODE_CRITICAL = 'CRITICAL'
+RESULT_CODE_UNKNOWN = 'UNKNOWN'
+
+OK_MESSAGE = 'NodeManager Healthy'
+
+NODEMANAGER_HTTP_ADDRESS_KEY = '{{yarn-site/yarn.nodemanager.webapp.address}}'
+NODEMANAGER_HTTPS_ADDRESS_KEY = '{{yarn-site/yarn.nodemanager.webapp.https.address}}'
+YARN_HTTP_POLICY_KEY = '{{yarn-site/yarn.http.policy}}'
+
+KERBEROS_KEYTAB = '{{yarn-site/yarn.nodemanager.webapp.spnego-keytab-file}}'
+KERBEROS_PRINCIPAL = '{{yarn-site/yarn.nodemanager.webapp.spnego-principal}}'
+SECURITY_ENABLED_KEY = '{{cluster-env/security_enabled}}'
+SMOKEUSER_KEY = '{{cluster-env/smokeuser}}'
+EXECUTABLE_SEARCH_PATHS = '{{kerberos-env/executable_search_paths}}'
+
+logger = logging.getLogger('ambari_alerts')
+
+
+def get_tokens():
+  """
+  Returns a tuple of tokens in the format {{site/property}} that will be used
+  to build the dictionary passed into execute
+  """
+  return (NODEMANAGER_HTTP_ADDRESS_KEY,NODEMANAGER_HTTPS_ADDRESS_KEY, EXECUTABLE_SEARCH_PATHS,
+  YARN_HTTP_POLICY_KEY, SMOKEUSER_KEY, KERBEROS_KEYTAB, KERBEROS_PRINCIPAL, SECURITY_ENABLED_KEY)
+  
+
+def execute(configurations={}, parameters={}, host_name=None):
+  """
+  Returns a tuple containing the result code and a pre-formatted result label
+
+  Keyword arguments:
+  configurations (dictionary): a mapping of configuration key to value
+  parameters (dictionary): a mapping of script parameter key to value
+  host_name (string): the name of this host where the alert is running
+  """
+  result_code = RESULT_CODE_UNKNOWN
+
+  if configurations is None:
+    return (result_code, ['There were no configurations supplied to the script.'])
+
+  result_code = RESULT_CODE_OK
+  label = OK_MESSAGE
+  return (result_code, [label])

+ 68 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/package/alerts/alert_nodemanagers_summary.py

@@ -0,0 +1,68 @@
+#!/usr/bin/env python
+
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import logging
+
+RESULT_CODE_OK = 'OK'
+RESULT_CODE_CRITICAL = 'CRITICAL'
+RESULT_CODE_UNKNOWN = 'UNKNOWN'
+
+OK_MESSAGE = 'All NodeManagers are healthy'
+
+NODEMANAGER_HTTP_ADDRESS_KEY = '{{yarn-site/yarn.resourcemanager.webapp.address}}'
+NODEMANAGER_HTTPS_ADDRESS_KEY = '{{yarn-site/yarn.resourcemanager.webapp.https.address}}'
+YARN_HTTP_POLICY_KEY = '{{yarn-site/yarn.http.policy}}'
+
+KERBEROS_KEYTAB = '{{yarn-site/yarn.nodemanager.webapp.spnego-keytab-file}}'
+KERBEROS_PRINCIPAL = '{{yarn-site/yarn.nodemanager.webapp.spnego-principal}}'
+SECURITY_ENABLED_KEY = '{{cluster-env/security_enabled}}'
+SMOKEUSER_KEY = '{{cluster-env/smokeuser}}'
+EXECUTABLE_SEARCH_PATHS = '{{kerberos-env/executable_search_paths}}'
+
+logger = logging.getLogger('ambari_alerts')
+
+
+def get_tokens():
+  """
+  Returns a tuple of tokens in the format {{site/property}} that will be used
+  to build the dictionary passed into execute
+  """
+  return NODEMANAGER_HTTP_ADDRESS_KEY, NODEMANAGER_HTTPS_ADDRESS_KEY, EXECUTABLE_SEARCH_PATHS, \
+    YARN_HTTP_POLICY_KEY, SMOKEUSER_KEY, KERBEROS_KEYTAB, KERBEROS_PRINCIPAL, SECURITY_ENABLED_KEY
+
+
+def execute(configurations={}, parameters={}, host_name=None):
+  """
+  Returns a tuple containing the result code and a pre-formatted result label
+
+  Keyword arguments:
+  configurations (dictionary): a mapping of configuration key to value
+  parameters (dictionary): a mapping of script parameter key to value
+  host_name (string): the name of this host where the alert is running
+  """
+  result_code = RESULT_CODE_UNKNOWN
+
+  if configurations is None:
+    return (result_code, ['There were no configurations supplied to the script.'])
+
+  result_code = RESULT_CODE_OK
+  label = OK_MESSAGE
+
+  return (result_code, [label])

+ 38 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/package/scripts/application_timeline_server.py

@@ -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.
+
+Ambari Agent
+
+"""
+
+# Python Imports
+
+# Local Imports
+from resource_management.libraries.script.dummy import Dummy
+
+
+class ApplicationTimelineServer(Dummy):
+  """
+  Dummy script that simulates a master component.
+  """
+
+  def __init__(self):
+    super(ApplicationTimelineServer, self).__init__()
+    self.component_name = "APP_TIMELINE_SERVER"
+
+if __name__ == "__main__":
+  ApplicationTimelineServer().execute()

+ 38 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/package/scripts/historyserver.py

@@ -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.
+
+Ambari Agent
+
+"""
+
+# Python Imports
+
+# Local Imports
+from resource_management.libraries.script.dummy import Dummy
+
+
+class HistoryServer(Dummy):
+  """
+  Dummy script that simulates a master component.
+  """
+
+  def __init__(self):
+    super(HistoryServer, self).__init__()
+    self.component_name = "HISTORYSERVER"
+
+if __name__ == "__main__":
+  HistoryServer().execute()

+ 30 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/package/scripts/mapred_service_check.py

@@ -0,0 +1,30 @@
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Ambari Agent
+
+"""
+
+from resource_management.libraries.script.script import Script
+
+class ServiceCheck(Script):
+
+  def service_check(self, env):
+    print "Service Check"
+
+if __name__ == "__main__":
+  ServiceCheck().execute()

+ 38 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/package/scripts/mapreduce2_client.py

@@ -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.
+
+Ambari Agent
+
+"""
+
+# Python Imports
+
+# Local Imports
+from resource_management.libraries.script.dummy import Dummy
+
+
+class MapReduce2Client(Dummy):
+  """
+  Dummy script that simulates a client component.
+  """
+
+  def __init__(self):
+    super(MapReduce2Client, self).__init__()
+    self.component_name = "MAPREDUCE2_CLIENT"
+
+if __name__ == "__main__":
+  MapReduce2Client().execute()

+ 38 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/package/scripts/nodemanager.py

@@ -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.
+
+Ambari Agent
+
+"""
+
+# Python Imports
+
+# Local Imports
+from resource_management.libraries.script.dummy import Dummy
+
+
+class Nodemanager(Dummy):
+  """
+  Dummy script that simulates a client component.
+  """
+
+  def __init__(self):
+    super(Nodemanager, self).__init__()
+    self.component_name = "NODEMANAGER"
+
+if __name__ == "__main__":
+  Nodemanager().execute()

+ 44 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/package/scripts/resourcemanager.py

@@ -0,0 +1,44 @@
+"""
+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.
+
+Ambari Agent
+
+"""
+
+# Python Imports
+
+# Local Imports
+from resource_management.libraries.script.dummy import Dummy
+
+
+class Resourcemanager(Dummy):
+  """
+  Dummy script that simulates a client component.
+  """
+
+  def __init__(self):
+    super(Resourcemanager, self).__init__()
+    self.component_name = "RESOURCEMANAGER"
+
+  def decommission(self, env):
+    print "Decommission"
+
+  def refreshqueues(self, env):
+    print "Refresh Queues"
+
+if __name__ == "__main__":
+  Resourcemanager().execute()

+ 30 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/package/scripts/service_check.py

@@ -0,0 +1,30 @@
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Ambari Agent
+
+"""
+
+from resource_management.libraries.script.script import Script
+
+class ServiceCheck(Script):
+
+  def service_check(self, env):
+    print "Service Check"
+
+if __name__ == "__main__":
+  ServiceCheck().execute()

+ 38 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/package/scripts/yarn_client.py

@@ -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.
+
+Ambari Agent
+
+"""
+
+# Python Imports
+
+# Local Imports
+from resource_management.libraries.script.dummy import Dummy
+
+
+class YarnClient(Dummy):
+  """
+  Dummy script that simulates a client component.
+  """
+
+  def __init__(self):
+    super(YarnClient, self).__init__()
+    self.component_name = "YARN_CLIENT"
+
+if __name__ == "__main__":
+  YarnClient().execute()

+ 76 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/quicklinks-mapred/quicklinks.json

@@ -0,0 +1,76 @@
+{
+  "name": "default",
+  "description": "default quick links configuration",
+  "configuration": {
+    "protocol":
+    {
+      "type":"https",
+      "checks":[
+        {
+          "property":"mapreduce.jobhistory.http.policy",
+          "desired":"HTTPS_ONLY",
+          "site":"mapred-site"
+        }
+      ]
+    },
+
+    "links": [
+      {
+        "name": "jobhistory_ui",
+        "label": "JobHistory UI",
+        "requires_user_name": "false",
+        "url": "%@://%@:%@",
+        "port":{
+          "http_property": "mapreduce.jobhistory.webapp.address",
+          "http_default_port": "19888",
+          "https_property": "mapreduce.jobhistory.webapp.https.address",
+          "https_default_port": "8090",
+          "regex": "\\w*:(\\d+)",
+          "site": "mapred-site"
+        }
+      },
+      {
+        "name": "jobhistory_logs",
+        "label": "JobHistory logs",
+        "requires_user_name": "false",
+        "url": "%@://%@:%@/logs",
+        "port":{
+          "http_property": "mapreduce.jobhistory.webapp.address",
+          "http_default_port": "19888",
+          "https_property": "mapreduce.jobhistory.webapp.https.address",
+          "https_default_port": "8090",
+          "regex": "\\w*:(\\d+)",
+          "site": "mapred-site"
+        }
+      },
+      {
+        "name":"jobhistory_jmx",
+        "label":"JobHistory JMX",
+        "requires_user_name":"false",
+        "url":"%@://%@:%@/jmx",
+        "port":{
+          "http_property": "mapreduce.jobhistory.webapp.address",
+          "http_default_port": "19888",
+          "https_property": "mapreduce.jobhistory.webapp.https.address",
+          "https_default_port": "8090",
+          "regex": "\\w*:(\\d+)",
+          "site": "mapred-site"
+        }
+      },
+      {
+        "name":"thread_stacks",
+        "label":"Thread Stacks",
+        "requires_user_name": "false",
+        "url":"%@://%@:%@/stacks",
+        "port":{
+          "http_property": "mapreduce.jobhistory.webapp.address",
+          "http_default_port": "19888",
+          "https_property": "mapreduce.jobhistory.webapp.https.address",
+          "https_default_port": "8090",
+          "regex": "\\w*:(\\d+)",
+          "site": "mapred-site"
+        }
+      }
+    ]
+  }
+}

+ 76 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/quicklinks/quicklinks.json

@@ -0,0 +1,76 @@
+{
+  "name": "default",
+  "description": "default quick links configuration",
+  "configuration": {
+    "protocol":
+    {
+      "type":"https",
+      "checks":[
+        {
+          "property":"yarn.http.policy",
+          "desired":"HTTPS_ONLY",
+          "site":"yarn-site"
+        }
+      ]
+    },
+
+    "links": [
+      {
+        "name": "resourcemanager_ui",
+        "label": "ResourceManager UI",
+        "requires_user_name": "false",
+        "url": "%@://%@:%@",
+        "port":{
+          "http_property": "yarn.resourcemanager.webapp.address",
+          "http_default_port": "8088",
+          "https_property": "yarn.resourcemanager.webapp.https.address",
+          "https_default_port": "8090",
+          "regex": "\\w*:(\\d+)",
+          "site": "yarn-site"
+        }
+      },
+      {
+        "name": "resourcemanager_logs",
+        "label": "ResourceManager logs",
+        "requires_user_name": "false",
+        "url": "%@://%@:%@/logs",
+        "port":{
+          "http_property": "yarn.resourcemanager.webapp.address",
+          "http_default_port": "8088",
+          "https_property": "yarn.resourcemanager.webapp.https.address",
+          "https_default_port": "8090",
+          "regex": "\\w*:(\\d+)",
+          "site": "yarn-site"
+        }
+      },
+      {
+        "name": "resourcemanager_jmx",
+        "label":"ResourceManager JMX",
+        "requires_user_name": "false",
+        "url":"%@://%@:%@/jmx",
+        "port":{
+          "http_property": "yarn.resourcemanager.webapp.address",
+          "http_default_port": "8088",
+          "https_property": "yarn.resourcemanager.webapp.https.address",
+          "https_default_port": "8090",
+          "regex": "\\w*:(\\d+)",
+          "site": "yarn-site"
+        }
+      },
+      {
+        "name": "thread_stacks",
+        "label":"Thread Stacks",
+        "requires_user_name": "false",
+        "url":"%@://%@:%@/stacks",
+        "port":{
+          "http_property": "yarn.resourcemanager.webapp.address",
+          "http_default_port": "8088",
+          "https_property": "yarn.resourcemanager.webapp.https.address",
+          "https_default_port": "8090",
+          "regex": "\\w*:(\\d+)",
+          "site": "yarn-site"
+        }
+      }
+    ]
+  }
+}

+ 132 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/themes-mapred/theme.json

@@ -0,0 +1,132 @@
+{
+  "name": "default",
+  "description": "Default theme for MAPREDUCE service",
+  "configuration": {
+    "layouts": [
+      {
+        "name": "default",
+        "tabs": [
+          {
+            "name": "settings",
+            "display-name": "Settings",
+            "layout": {
+              "tab-columns": "1",
+              "tab-rows": "1",
+              "sections": [
+                {
+                  "name": "section-mr-scheduler",
+                  "display-name": "MapReduce",
+                  "row-index": "0",
+                  "column-index": "0",
+                  "row-span": "1",
+                  "column-span": "1",
+                  "section-columns": "3",
+                  "section-rows": "1",
+                  "subsections": [
+                    {
+                      "name": "subsection-mr-scheduler-row1-col1",
+                      "display-name": "MapReduce Framework",
+                      "row-index": "0",
+                      "column-index": "0",
+                      "row-span": "1",
+                      "column-span": "1"
+                    },
+                    {
+                      "name": "subsection-mr-scheduler-row1-col2",
+                      "row-index": "0",
+                      "column-index": "1",
+                      "row-span": "1",
+                      "column-span": "1"
+                    },
+                    {
+                      "name": "subsection-mr-scheduler-row1-col3",
+                      "row-index": "0",
+                      "column-index": "2",
+                      "row-span": "1",
+                      "column-span": "1"
+                    },
+                    {
+                      "name": "subsection-mr-scheduler-row2-col1",
+                      "display-name": "MapReduce AppMaster",
+                      "row-index": "1",
+                      "column-index": "0",
+                      "row-span": "1",
+                      "column-span": "3"
+                    }
+                  ]
+                }
+              ]
+            }
+          }
+        ]
+      }
+    ],
+    "placement": {
+      "configuration-layout": "default",
+      "configs": [
+        {
+          "config": "mapred-site/mapreduce.map.memory.mb",
+          "subsection-name": "subsection-mr-scheduler-row1-col1"
+        },
+        {
+          "config": "mapred-site/mapreduce.reduce.memory.mb",
+          "subsection-name": "subsection-mr-scheduler-row1-col2"
+        },
+        {
+          "config": "mapred-site/yarn.app.mapreduce.am.resource.mb",
+          "subsection-name": "subsection-mr-scheduler-row2-col1"
+        },
+        {
+          "config": "mapred-site/mapreduce.task.io.sort.mb",
+          "subsection-name": "subsection-mr-scheduler-row1-col3"
+        }
+      ]
+    },
+    "widgets": [
+      {
+        "config": "mapred-site/mapreduce.map.memory.mb",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "GB"
+            }
+          ]
+        }
+      },
+      {
+        "config": "mapred-site/mapreduce.reduce.memory.mb",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "GB"
+            }
+          ]
+        }
+      },
+      {
+        "config": "mapred-site/yarn.app.mapreduce.am.resource.mb",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "GB"
+            }
+          ]
+        }
+      },
+      {
+        "config": "mapred-site/mapreduce.task.io.sort.mb",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "MB"
+            }
+          ]
+        }
+      }
+    ]
+  }
+}

+ 250 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/YARN/themes/theme.json

@@ -0,0 +1,250 @@
+{
+  "name": "default",
+  "description": "Default theme for YARN service",
+  "configuration": {
+    "layouts": [
+      {
+        "name": "default",
+        "tabs": [
+          {
+            "name": "settings",
+            "display-name": "Settings",
+            "layout": {
+              "tab-columns": "3",
+              "tab-rows": "2",
+              "sections": [
+                {
+                  "name": "section-nm-sizing",
+                  "display-name": "Memory",
+                  "row-index": "0",
+                  "column-index": "0",
+                  "row-span": "1",
+                  "column-span": "2",
+                  "section-columns": "2",
+                  "section-rows": "1",
+                  "subsections": [
+                    {
+                      "name": "subsection-nm-sizing-col1",
+                      "display-name": "Node",
+                      "row-index": "0",
+                      "column-index": "0",
+                      "row-span": "1",
+                      "column-span": "1"
+                    },
+                    {
+                      "name": "subsection-nm-sizing-col2",
+                      "display-name": "Container",
+                      "row-index": "0",
+                      "column-index": "1",
+                      "row-span": "1",
+                      "column-span": "1"
+                    }
+                  ]
+                },
+                {
+                  "name": "section-yarn-platform-features",
+                  "display-name": "YARN Features",
+                  "row-index": "0",
+                  "column-index": "2",
+                  "row-span": "1",
+                  "column-span": "1",
+                  "section-columns": "1",
+                  "section-rows": "1",
+                  "subsections": [
+                    {
+                      "name": "subsection-yarn-platform-features-col1",
+                      "row-index": "0",
+                      "column-index": "0",
+                      "row-span": "1",
+                      "column-span": "1"
+                    }
+                  ]
+                },
+                {
+                  "name": "section-container-sizing",
+                  "display-name": "CPU",
+                  "row-index": "1",
+                  "column-index": "0",
+                  "row-span": "1",
+                  "column-span": "2",
+                  "section-columns": "2",
+                  "section-rows": "1",
+                  "subsections": [
+                    {
+                      "name": "subsection-container-sizing-col1",
+                      "display-name": "Node",
+                      "row-index": "0",
+                      "column-index": "0",
+                      "row-span": "1",
+                      "column-span": "1"
+                    },
+                    {
+                      "name": "subsection-container-sizing-col2",
+                      "display-name": "Container",
+                      "row-index": "0",
+                      "column-index": "1",
+                      "row-span": "1",
+                      "column-span": "1"
+                    }
+                  ]
+                }
+              ]
+            }
+          }
+        ]
+      }
+    ],
+    "placement": {
+      "configuration-layout": "default",
+      "configs": [
+        {
+          "config": "yarn-site/yarn.nodemanager.resource.memory-mb",
+          "subsection-name": "subsection-nm-sizing-col1"
+        },
+        {
+          "config": "yarn-site/yarn.scheduler.minimum-allocation-mb",
+          "subsection-name": "subsection-nm-sizing-col2"
+        },
+        {
+          "config": "yarn-site/yarn.scheduler.maximum-allocation-mb",
+          "subsection-name": "subsection-nm-sizing-col2"
+        },
+        {
+          "config": "yarn-site/yarn.node-labels.enabled",
+          "subsection-name": "subsection-yarn-platform-features-col1"
+        },
+        {
+          "config": "yarn-site/yarn.resourcemanager.scheduler.monitor.enable",
+          "subsection-name": "subsection-yarn-platform-features-col1"
+        },
+        {
+          "config": "capacity-scheduler/yarn.scheduler.capacity.resource-calculator",
+          "subsection-name": "subsection-container-sizing-col1"
+        },
+        {
+          "config": "yarn-env/yarn_cgroups_enabled",
+          "subsection-name": "subsection-container-sizing-col1"
+        },
+        {
+          "config": "yarn-site/yarn.nodemanager.resource.percentage-physical-cpu-limit",
+          "subsection-name": "subsection-container-sizing-col1"
+        },
+        {
+          "config": "yarn-site/yarn.nodemanager.resource.cpu-vcores",
+          "subsection-name": "subsection-container-sizing-col1"
+        },
+        {
+          "config": "yarn-site/yarn.scheduler.minimum-allocation-vcores",
+          "subsection-name": "subsection-container-sizing-col2"
+        },
+        {
+          "config": "yarn-site/yarn.scheduler.maximum-allocation-vcores",
+          "subsection-name": "subsection-container-sizing-col2"
+        }
+      ]
+    },
+    "widgets": [
+      {
+        "config": "yarn-site/yarn.nodemanager.resource.memory-mb",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "MB"
+            }
+          ]
+        }
+      },
+      {
+        "config": "yarn-site/yarn.nodemanager.resource.percentage-physical-cpu-limit",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "percent"
+            }
+          ]
+        }
+      },
+      {
+        "config": "yarn-site/yarn.nodemanager.resource.cpu-vcores",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "int"
+            }
+          ]
+        }
+      },
+      {
+        "config": "yarn-site/yarn.scheduler.minimum-allocation-mb",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "MB"
+            }
+          ]
+        }
+      },
+      {
+        "config": "yarn-site/yarn.scheduler.maximum-allocation-mb",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "MB"
+            }
+          ]
+        }
+      },
+      {
+        "config": "yarn-site/yarn.scheduler.minimum-allocation-vcores",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "int"
+            }
+          ]
+        }
+      },
+      {
+        "config": "yarn-site/yarn.scheduler.maximum-allocation-vcores",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "int"
+            }
+          ]
+        }
+      },
+      {
+        "config": "yarn-site/yarn.node-labels.enabled",
+        "widget": {
+          "type": "toggle"
+        }
+      },
+      {
+        "config": "yarn-env/yarn_cgroups_enabled",
+        "widget": {
+          "type": "toggle"
+        }
+      },
+      {
+        "config": "yarn-site/yarn.resourcemanager.scheduler.monitor.enable",
+        "widget": {
+          "type": "toggle"
+        }
+      },
+      {
+        "config": "capacity-scheduler/yarn.scheduler.capacity.resource-calculator",
+        "widget": {
+          "type": "toggle"
+        }
+      }
+    ]
+  }
+}

+ 50 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/ZOOKEEPER/metainfo.xml

@@ -0,0 +1,50 @@
+<?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>
+  <schemaVersion>2.0</schemaVersion>
+  <services>
+    <service>
+      <name>ZOOKEEPER</name>
+      <version>3.4.6.2.3</version>
+      <extends>common-services/ZOOKEEPER/3.4.6</extends>
+
+      <!-- Overwrite the commandScript for each of the components. -->
+      <components>
+        <component>
+          <name>ZOOKEEPER_SERVER</name>
+          <commandScript>
+            <script>scripts/zookeeper_server.py</script>
+            <scriptType>PYTHON</scriptType>
+            <timeout>1200</timeout>
+          </commandScript>
+        </component>
+
+        <component>
+          <name>ZOOKEEPER_CLIENT</name>
+          <commandScript>
+            <script>scripts/zookeeper_client.py</script>
+            <scriptType>PYTHON</scriptType>
+          </commandScript>
+        </component>
+      </components>
+
+      <!-- No packages to install. -->
+      <osSpecifics></osSpecifics>
+    </service>
+  </services>
+</metainfo>

+ 30 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/ZOOKEEPER/package/scripts/service_check.py

@@ -0,0 +1,30 @@
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Ambari Agent
+
+"""
+
+from resource_management.libraries.script.script import Script
+
+class ServiceCheck(Script):
+
+  def service_check(self, env):
+    print "Service Check"
+
+if __name__ == "__main__":
+  ServiceCheck().execute()

+ 38 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/ZOOKEEPER/package/scripts/zookeeper_client.py

@@ -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.
+
+Ambari Agent
+
+"""
+
+# Python Imports
+
+# Local Imports
+from resource_management.libraries.script.dummy import Dummy
+
+
+class ZookeeperClient(Dummy):
+  """
+  Dummy script that simulates a master component.
+  """
+
+  def __init__(self):
+    super(ZookeeperClient, self).__init__()
+    self.component_name = "ZOOKEEPER_CLIENT"
+
+if __name__ == "__main__":
+  ZookeeperClient().execute()

+ 38 - 0
ambari-server/src/main/resources/stacks/PERF/1.0/services/ZOOKEEPER/package/scripts/zookeeper_server.py

@@ -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.
+
+Ambari Agent
+
+"""
+
+# Python Imports
+
+# Local Imports
+from resource_management.libraries.script.dummy import Dummy
+
+
+class ZookeeperServer(Dummy):
+  """
+  Dummy script that simulates a master component.
+  """
+
+  def __init__(self):
+    super(ZookeeperServer, self).__init__()
+    self.component_name = "ZOOKEEPER_SERVER"
+
+if __name__ == "__main__":
+  ZookeeperServer().execute()