Repository: ambari Updated Branches: refs/heads/trunk 7d0cd6536 -> 2cbf236eb
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/2cbf236e Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/2cbf236e Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/2cbf236e Branch: refs/heads/trunk Commit: 2cbf236eb87b53693270cbc092001bb950b4e870 Parents: 7d0cd65 Author: Siddharth Wagle <[email protected]> Authored: Mon Mar 16 20:11:34 2015 -0700 Committer: Siddharth Wagle <[email protected]> Committed: Mon Mar 16 20:11:34 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/2cbf236e/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/2cbf236e/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/2cbf236e/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/2cbf236e/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/2cbf236e/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/2cbf236e/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/2cbf236e/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/2cbf236e/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" } },
