You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sw...@apache.org on 2015/03/17 04:11:04 UTC

ambari git commit: AMBARI-10097. Low memory setting on phoenix client leads to perf degradation. (swagle)

Repository: ambari
Updated Branches:
  refs/heads/branch-2.0.0 e796be667 -> e35afcaa5


AMBARI-10097. Low memory setting on phoenix client leads to perf degradation. (swagle)


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

Branch: refs/heads/branch-2.0.0
Commit: e35afcaa553dafecae27d861bf439fffed5aab4e
Parents: e796be6
Author: Siddharth Wagle <sw...@hortonworks.com>
Authored: Mon Mar 16 18:34:01 2015 -0700
Committer: Siddharth Wagle <sw...@hortonworks.com>
Committed: Mon Mar 16 20:10:57 2015 -0700

----------------------------------------------------------------------
 .../metrics/timeline/PhoenixHBaseAccessor.java  |  2 +-
 .../0.1.0/configuration/ams-hbase-site.xml      | 16 ++++++++++++++
 .../0.1.0/configuration/ams-site.xml            | 17 +++++++++++++++
 .../AMBARI_METRICS/0.1.0/package/scripts/ams.py | 13 ++++++++++++
 .../0.1.0/package/scripts/hbase.py              | 11 ++++++++++
 .../0.1.0/package/scripts/params.py             |  7 +++++++
 .../stacks/HDP/2.0.6/services/stack_advisor.py  | 22 +++++++++++++-------
 .../stacks/2.2/common/test_stack_advisor.py     |  4 ++--
 8 files changed, 81 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/e35afcaa/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java
index e40a115..6a38517 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java
@@ -575,7 +575,7 @@ public class PhoenixHBaseAccessor {
       }
     }
 
-    LOG.info("Aggregate records size: " + metrics.getMetrics().size());
+    LOG.debug("Aggregate records size: " + metrics.getMetrics().size());
     return metrics;
   }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/e35afcaa/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-site.xml b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-site.xml
index 940d7af..2d11412 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-site.xml
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-site.xml
@@ -277,4 +277,20 @@
       Controls the number of pre-allocated regions for SYSTEM.SEQUENCE table.
     </description>
   </property>
+  <property>
+    <name>phoenix.query.maxGlobalMemoryPercentage</name>
+    <value>15</value>
+    <description>
+      Percentage of total heap memory (i.e. Runtime.getRuntime().maxMemory())
+      that all threads may use.
+    </description>
+  </property>
+  <property>
+    <name>phoenix.spool.directory</name>
+    <value>${hbase.tmp.dir}/phoenix-spool</value>
+    <description>
+      Set directory for Phoenix spill files. If possible set this to a
+      different mount point from the one for hbase.rootdir in embedded mode.
+    </description>
+  </property>
 </configuration>

http://git-wip-us.apache.org/repos/asf/ambari/blob/e35afcaa/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-site.xml b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-site.xml
index d3da1af..fa85556 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-site.xml
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-site.xml
@@ -231,4 +231,21 @@
       JDBC resultset prefect size for aggregator queries.
     </description>
   </property>
+  <!-- Phoenix properties that would manifest in the hbase-site.xml on the client side -->
+  <property>
+    <name>phoenix.query.maxGlobalMemoryPercentage</name>
+    <value>25</value>
+    <description>
+      Percentage of total heap memory (i.e. Runtime.getRuntime().maxMemory())
+      that all threads may use.
+    </description>
+  </property>
+  <property>
+    <name>phoenix.spool.directory</name>
+    <value>/tmp</value>
+    <description>
+      Set directory for Phoenix spill files. If possible set this to a
+      different mount point from the one for hbase.rootdir in embedded mode.
+    </description>
+  </property>
 </configuration>

http://git-wip-us.apache.org/repos/asf/ambari/blob/e35afcaa/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/ams.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/ams.py b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/ams.py
index 27d24de..68ee119 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/ams.py
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/ams.py
@@ -142,6 +142,10 @@ def ams(name=None):
     if params.security_enabled:
       merged_ams_hbase_site.update(params.config['configurations']['ams-hbase-security-site'])
 
+    # Add phoenix client side overrides
+    merged_ams_hbase_site['phoenix.query.maxGlobalMemoryPercentage'] = str(params.phoenix_max_global_mem_percent)
+    merged_ams_hbase_site['phoenix.spool.directory'] = params.phoenix_client_spool_dir
+
     XmlConfig( "hbase-site.xml",
                conf_dir = params.ams_collector_conf_dir,
                configurations = merged_ams_hbase_site,
@@ -188,6 +192,15 @@ def ams(name=None):
          mode=0755
     )
 
+    # Phoenix spool file dir if not /tmp
+    if not os.path.exists(params.phoenix_client_spool_dir):
+      Directory(params.phoenix_client_spool_dir,
+                owner=params.ams_user,
+                mode = 0755,
+                group=params.user_group,
+                cd_access="a",
+                recursive=True
+      )
     pass
 
   elif name == 'monitor':

http://git-wip-us.apache.org/repos/asf/ambari/blob/e35afcaa/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/hbase.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/hbase.py b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/hbase.py
index f488308..8c8f85a 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/hbase.py
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/hbase.py
@@ -129,6 +129,17 @@ def hbase(name=None # 'master' or 'regionserver' or 'client'
             group = params.user_group
   )
 
+  # Phoenix spool file dir if not /tmp
+  if not os.path.exists(params.phoenix_server_spool_dir):
+    Directory(params.phoenix_server_spool_dir,
+              owner=params.ams_user,
+              mode = 0755,
+              group=params.user_group,
+              cd_access="a",
+              recursive=True
+    )
+  pass
+
   if 'ams-hbase-policy' in params.config['configurations']:
     XmlConfig("hbase-policy.xml",
             conf_dir = params.hbase_conf_dir,

http://git-wip-us.apache.org/repos/asf/ambari/blob/e35afcaa/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/params.py b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/params.py
index 77b5ec1..ab8b56a 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/params.py
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/params.py
@@ -94,6 +94,13 @@ hbase_tmp_dir = config['configurations']['ams-hbase-site']['hbase.tmp.dir']
 _local_dir_conf = default('/configurations/ams-hbase-site/hbase.local.dir', "${hbase.tmp.dir}/local")
 local_dir = substitute_vars(_local_dir_conf, config['configurations']['ams-hbase-site'])
 
+phoenix_max_global_mem_percent = default('/configurations/ams-site/phoenix.query.maxGlobalMemoryPercentage', '20')
+phoenix_client_spool_dir = default('/configurations/ams-site/phoenix.spool.directory', '/tmp')
+phoenix_server_spool_dir = default('/configurations/ams-hbase-site/phoenix.spool.directory', '/tmp')
+# Substitute vars if present
+phoenix_client_spool_dir = substitute_vars(phoenix_client_spool_dir, config['configurations']['ams-hbase-site'])
+phoenix_server_spool_dir = substitute_vars(phoenix_server_spool_dir, config['configurations']['ams-hbase-site'])
+
 client_jaas_config_file = format("{hbase_conf_dir}/hbase_client_jaas.conf")
 master_jaas_config_file = format("{hbase_conf_dir}/hbase_master_jaas.conf")
 regionserver_jaas_config_file = format("{hbase_conf_dir}/hbase_regionserver_jaas.conf")

http://git-wip-us.apache.org/repos/asf/ambari/blob/e35afcaa/ambari-server/src/main/resources/stacks/HDP/2.0.6/services/stack_advisor.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.6/services/stack_advisor.py b/ambari-server/src/main/resources/stacks/HDP/2.0.6/services/stack_advisor.py
index 6ee60cf..a933d98 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.6/services/stack_advisor.py
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.6/services/stack_advisor.py
@@ -135,9 +135,10 @@ class HDP206StackAdvisor(DefaultStackAdvisor):
 
     amsCollectorHosts = self.getComponentHostNames(services, "AMBARI_METRICS", "METRICS_COLLECTOR")
     putHbaseEnvProperty("hbase_regionserver_heapsize", "1024m")
+    # blockCache = 0.3, memstore = 0.35, phoenix-server = 0.15, phoenix-client = 0.25
     putAmsHbaseSiteProperty("hfile.block.cache.size", 0.3)
-    putAmsHbaseSiteProperty("hbase.regionserver.global.memstore.upperLimit", 0.5)
-    putAmsHbaseSiteProperty("hbase.regionserver.global.memstore.lowerLimit", 0.4)
+    putAmsHbaseSiteProperty("hbase.regionserver.global.memstore.upperLimit", 0.35)
+    putAmsHbaseSiteProperty("hbase.regionserver.global.memstore.lowerLimit", 0.3)
     putTimelineServiceProperty("timeline.metrics.host.aggregator.ttl", 86400)
 
     # TODO recommend configuration for multiple AMBARI_METRICS collectors
@@ -145,23 +146,28 @@ class HDP206StackAdvisor(DefaultStackAdvisor):
       pass
     else:
       totalHostsCount = len(hosts["items"])
-      if totalHostsCount > 400:
+      # blockCache = 0.3, memstore = 0.3, phoenix-server = 0.2, phoenix-client = 0.3
+      if totalHostsCount >= 400:
         putHbaseEnvProperty("hbase_master_heapsize", "12288m")
-        putAmsEnvProperty("metrics_collector_heapsize", "4096m")
+        putAmsEnvProperty("metrics_collector_heapsize", "8192m")
         putAmsHbaseSiteProperty("hbase.regionserver.handler.count", 60)
         putAmsHbaseSiteProperty("hbase.regionserver.hlog.blocksize", 134217728)
         putAmsHbaseSiteProperty("hbase.regionserver.maxlogs", 64)
         putAmsHbaseSiteProperty("hbase.hregion.memstore.flush.size", 268435456)
-      elif totalHostsCount > 100:
+        putAmsHbaseSiteProperty("hbase.regionserver.global.memstore.upperLimit", 0.3)
+        putAmsHbaseSiteProperty("hbase.regionserver.global.memstore.lowerLimit", 0.25)
+        putAmsHbaseSiteProperty("phoenix.query.maxGlobalMemoryPercentage", 20)
+        putTimelineServiceProperty("phoenix.query.maxGlobalMemoryPercentage", 30)
+      elif totalHostsCount >= 100:
         putHbaseEnvProperty("hbase_master_heapsize", "6144m")
-        putAmsEnvProperty("metrics_collector_heapsize", "2048m")
+        putAmsEnvProperty("metrics_collector_heapsize", "4096m")
         putAmsHbaseSiteProperty("hbase.regionserver.handler.count", 60)
         putAmsHbaseSiteProperty("hbase.regionserver.hlog.blocksize", 134217728)
         putAmsHbaseSiteProperty("hbase.regionserver.maxlogs", 64)
         putAmsHbaseSiteProperty("hbase.hregion.memstore.flush.size", 268435456)
-      elif totalHostsCount > 50:
+      elif totalHostsCount >= 50:
         putHbaseEnvProperty("hbase_master_heapsize", "2048m")
-        putAmsEnvProperty("metrics_collector_heapsize", "1024m")
+        putAmsEnvProperty("metrics_collector_heapsize", "2048m")
       else:
         putHbaseEnvProperty("hbase_master_heapsize", "1024m")
         putAmsEnvProperty("metrics_collector_heapsize", "512m")

http://git-wip-us.apache.org/repos/asf/ambari/blob/e35afcaa/ambari-server/src/test/python/stacks/2.2/common/test_stack_advisor.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.2/common/test_stack_advisor.py b/ambari-server/src/test/python/stacks/2.2/common/test_stack_advisor.py
index 2dafb67..33bac19 100644
--- a/ambari-server/src/test/python/stacks/2.2/common/test_stack_advisor.py
+++ b/ambari-server/src/test/python/stacks/2.2/common/test_stack_advisor.py
@@ -684,8 +684,8 @@ class TestHDP22StackAdvisor(TestCase):
       },
       "ams-hbase-site": {
         "properties": {
-          "hbase.regionserver.global.memstore.lowerLimit": "0.4",
-          "hbase.regionserver.global.memstore.upperLimit": "0.5",
+          "hbase.regionserver.global.memstore.lowerLimit": "0.3",
+          "hbase.regionserver.global.memstore.upperLimit": "0.35",
           "hfile.block.cache.size": "0.3"
         }
       },