You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by dm...@apache.org on 2017/01/20 10:19:48 UTC
[46/46] ambari git commit: AMBARI-18739. Perf: Create Rolling and
Express Upgrade Packs (dlysnichenko)
AMBARI-18739. Perf: Create Rolling and Express Upgrade Packs (dlysnichenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/2c362fd0
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/2c362fd0
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/2c362fd0
Branch: refs/heads/trunk
Commit: 2c362fd0fedb63831ea890bfda984b1cde56d216
Parents: 6ba9bd0
Author: Lisnichenko Dmitro <dl...@hortonworks.com>
Authored: Fri Jan 20 12:15:31 2017 +0200
Committer: Lisnichenko Dmitro <dl...@hortonworks.com>
Committed: Fri Jan 20 12:16:22 2017 +0200
----------------------------------------------------------------------
.../main/python/ambari_agent/PythonExecutor.py | 19 +-
.../libraries/script/dummy.py | 29 +-
.../custom_actions/scripts/ru_set_all.py | 2 +
.../hooks/before-INSTALL/scripts/conf-select.py | 35 +
.../before-INSTALL/scripts/distro-select.py | 145 +
.../1.0/hooks/before-INSTALL/scripts/hook.py | 33 +-
.../1.0/hooks/before-INSTALL/scripts/params.py | 23 +
.../main/resources/stacks/PERF/1.0/metainfo.xml | 6 +-
.../stacks/PERF/1.0/repos/repoinfo.xml | 8 +-
.../PERF/1.0/services/FAKEHBASE/alerts.json | 35 +
.../configuration/hbase-alert-config.xml | 80 +
.../FAKEHBASE/configuration/hbase-env.xml | 292 +
.../FAKEHBASE/configuration/hbase-log4j.xml | 146 +
.../configuration/hbase-logsearch-conf.xml | 111 +
.../FAKEHBASE/configuration/hbase-policy.xml | 53 +
.../FAKEHBASE/configuration/hbase-site.xml | 555 ++
.../configuration/ranger-hbase-audit.xml | 122 +
.../ranger-hbase-policymgr-ssl.xml | 66 +
.../configuration/ranger-hbase-security.xml | 68 +
.../PERF/1.0/services/FAKEHBASE/kerberos.json | 159 +
.../PERF/1.0/services/FAKEHBASE/metainfo.xml | 197 +
.../PERF/1.0/services/FAKEHBASE/metrics.json | 9374 ++++++++++++++++++
.../package/alerts/hbase_master_process.py | 59 +
.../alerts/hbase_regionserver_process.py | 59 +
.../FAKEHBASE/package/scripts/hbase_client.py | 38 +
.../FAKEHBASE/package/scripts/hbase_master.py | 45 +
.../package/scripts/hbase_regionserver.py | 45 +
.../package/scripts/phoenix_queryserver.py | 42 +
.../FAKEHBASE/package/scripts/service_check.py | 30 +
.../FAKEHBASE/quicklinks/quicklinks.json | 97 +
.../1.0/services/FAKEHBASE/themes/theme.json | 411 +
.../PERF/1.0/services/FAKEHBASE/widgets.json | 510 +
.../PERF/1.0/services/FAKEHDFS/alerts.json | 120 +
.../FAKEHDFS/configuration/core-site.xml | 225 +
.../FAKEHDFS/configuration/hadoop-env.xml | 419 +
.../hadoop-metrics2.properties.xml | 125 +
.../FAKEHDFS/configuration/hadoop-policy.xml | 130 +
.../configuration/hdfs-alert-config.xml | 80 +
.../FAKEHDFS/configuration/hdfs-log4j.xml | 225 +
.../configuration/hdfs-logsearch-conf.xml | 248 +
.../FAKEHDFS/configuration/hdfs-site.xml | 633 ++
.../configuration/ranger-hdfs-audit.xml | 124 +
.../ranger-hdfs-plugin-properties.xml | 88 +
.../configuration/ranger-hdfs-policymgr-ssl.xml | 67 +
.../configuration/ranger-hdfs-security.xml | 65 +
.../FAKEHDFS/configuration/ssl-client.xml | 70 +
.../FAKEHDFS/configuration/ssl-server.xml | 80 +
.../PERF/1.0/services/FAKEHDFS/kerberos.json | 246 +
.../PERF/1.0/services/FAKEHDFS/metainfo.xml | 266 +
.../PERF/1.0/services/FAKEHDFS/metrics.json | 7905 +++++++++++++++
.../package/alerts/alert_checkpoint_time.py | 59 +
.../alerts/alert_datanode_unmounted_data_dir.py | 59 +
.../package/alerts/alert_nfs_gateway_process.py | 59 +
.../package/alerts/alert_snamenode_process.py | 59 +
.../package/alerts/alert_upgrade_finalized.py | 59 +
.../FAKEHDFS/package/scripts/datanode.py | 57 +
.../FAKEHDFS/package/scripts/hdfs_client.py | 38 +
.../FAKEHDFS/package/scripts/journalnode.py | 58 +
.../FAKEHDFS/package/scripts/namenode.py | 79 +
.../FAKEHDFS/package/scripts/nfsgateway.py | 42 +
.../services/FAKEHDFS/package/scripts/params.py | 33 +
.../FAKEHDFS/package/scripts/service_check.py | 30 +
.../FAKEHDFS/package/scripts/snamenode.py | 42 +
.../FAKEHDFS/package/scripts/zkfc_slave.py | 38 +
.../FAKEHDFS/quicklinks/quicklinks.json | 76 +
.../1.0/services/FAKEHDFS/themes/theme.json | 179 +
.../PERF/1.0/services/FAKEHDFS/widgets.json | 649 ++
.../1.0/services/FAKEYARN/YARN_metrics.json | 3486 +++++++
.../1.0/services/FAKEYARN/YARN_widgets.json | 611 ++
.../PERF/1.0/services/FAKEYARN/alerts.json | 77 +
.../configuration-mapred/mapred-env.xml | 50 +
.../configuration-mapred/mapred-site.xml | 134 +
.../configuration/capacity-scheduler.xml | 69 +
.../configuration/ranger-yarn-audit.xml | 121 +
.../ranger-yarn-plugin-properties.xml | 82 +
.../configuration/ranger-yarn-policymgr-ssl.xml | 66 +
.../configuration/ranger-yarn-security.xml | 58 +
.../configuration/yarn-alert-config.xml | 80 +
.../FAKEYARN/configuration/yarn-env.xml | 201 +
.../FAKEYARN/configuration/yarn-log4j.xml | 103 +
.../FAKEYARN/configuration/yarn-site.xml | 780 ++
.../PERF/1.0/services/FAKEYARN/kerberos.json | 278 +
.../PERF/1.0/services/FAKEYARN/metainfo.xml | 357 +
.../package/alerts/alert_history_process.py | 59 +
.../package/alerts/alert_nodemanager_health.py | 59 +
.../alerts/alert_resourcemanager_process.py | 59 +
.../package/alerts/alert_timeline_process.py | 59 +
.../scripts/application_timeline_server.py | 42 +
.../FAKEYARN/package/scripts/historyserver.py | 42 +
.../package/scripts/mapred_service_check.py | 30 +
.../package/scripts/mapreduce2_client.py | 38 +
.../FAKEYARN/package/scripts/nodemanager.py | 42 +
.../FAKEYARN/package/scripts/resourcemanager.py | 48 +
.../FAKEYARN/package/scripts/service_check.py | 30 +
.../FAKEYARN/package/scripts/yarn_client.py | 38 +
.../FAKEYARN/quicklinks-mapred/quicklinks.json | 76 +
.../FAKEYARN/quicklinks/quicklinks.json | 76 +
.../services/FAKEYARN/themes-mapred/theme.json | 132 +
.../1.0/services/FAKEYARN/themes/theme.json | 250 +
.../PERF/1.0/services/FAKEZOOKEEPER/alerts.json | 20 +
.../configuration/zk-alert-config.xml | 80 +
.../1.0/services/FAKEZOOKEEPER/kerberos.json | 39 +
.../1.0/services/FAKEZOOKEEPER/metainfo.xml | 69 +
.../package/alerts/alert_zk_server_process.py | 59 +
.../package/scripts/service_check.py | 30 +
.../package/scripts/zookeeper_client.py | 38 +
.../package/scripts/zookeeper_server.py | 42 +
.../PERF/1.0/services/GRUMPY/kerberos.json | 2 +-
.../PERF/1.0/services/GRUMPY/metainfo.xml | 1 +
.../PERF/1.0/services/HAPPY/kerberos.json | 2 +-
.../stacks/PERF/1.0/services/HAPPY/metainfo.xml | 1 +
.../stacks/PERF/1.0/services/HBASE/alerts.json | 35 -
.../HBASE/configuration/hbase-alert-config.xml | 80 -
.../services/HBASE/configuration/hbase-env.xml | 292 -
.../HBASE/configuration/hbase-log4j.xml | 146 -
.../configuration/hbase-logsearch-conf.xml | 111 -
.../HBASE/configuration/hbase-policy.xml | 53 -
.../services/HBASE/configuration/hbase-site.xml | 573 --
.../HBASE/configuration/ranger-hbase-audit.xml | 122 -
.../ranger-hbase-policymgr-ssl.xml | 66 -
.../configuration/ranger-hbase-security.xml | 68 -
.../PERF/1.0/services/HBASE/kerberos.json | 159 -
.../stacks/PERF/1.0/services/HBASE/metainfo.xml | 197 -
.../stacks/PERF/1.0/services/HBASE/metrics.json | 9374 ------------------
.../package/alerts/hbase_master_process.py | 59 -
.../alerts/hbase_regionserver_process.py | 59 -
.../HBASE/package/scripts/hbase_client.py | 38 -
.../HBASE/package/scripts/hbase_master.py | 45 -
.../HBASE/package/scripts/hbase_regionserver.py | 45 -
.../package/scripts/phoenix_queryserver.py | 42 -
.../HBASE/package/scripts/service_check.py | 30 -
.../services/HBASE/quicklinks/quicklinks.json | 97 -
.../PERF/1.0/services/HBASE/themes/theme.json | 411 -
.../stacks/PERF/1.0/services/HBASE/widgets.json | 510 -
.../stacks/PERF/1.0/services/HDFS/alerts.json | 120 -
.../services/HDFS/configuration/core-site.xml | 225 -
.../services/HDFS/configuration/hadoop-env.xml | 419 -
.../hadoop-metrics2.properties.xml | 125 -
.../HDFS/configuration/hadoop-policy.xml | 130 -
.../HDFS/configuration/hdfs-alert-config.xml | 80 -
.../services/HDFS/configuration/hdfs-log4j.xml | 225 -
.../HDFS/configuration/hdfs-logsearch-conf.xml | 248 -
.../services/HDFS/configuration/hdfs-site.xml | 633 --
.../HDFS/configuration/ranger-hdfs-audit.xml | 124 -
.../ranger-hdfs-plugin-properties.xml | 88 -
.../configuration/ranger-hdfs-policymgr-ssl.xml | 67 -
.../HDFS/configuration/ranger-hdfs-security.xml | 65 -
.../services/HDFS/configuration/ssl-client.xml | 70 -
.../services/HDFS/configuration/ssl-server.xml | 80 -
.../stacks/PERF/1.0/services/HDFS/kerberos.json | 246 -
.../stacks/PERF/1.0/services/HDFS/metainfo.xml | 266 -
.../stacks/PERF/1.0/services/HDFS/metrics.json | 7905 ---------------
.../package/alerts/alert_checkpoint_time.py | 59 -
.../alerts/alert_datanode_unmounted_data_dir.py | 59 -
.../package/alerts/alert_nfs_gateway_process.py | 59 -
.../package/alerts/alert_snamenode_process.py | 59 -
.../package/alerts/alert_upgrade_finalized.py | 59 -
.../services/HDFS/package/scripts/datanode.py | 42 -
.../HDFS/package/scripts/hdfs_client.py | 38 -
.../HDFS/package/scripts/journalnode.py | 42 -
.../services/HDFS/package/scripts/namenode.py | 58 -
.../services/HDFS/package/scripts/nfsgateway.py | 42 -
.../HDFS/package/scripts/service_check.py | 30 -
.../services/HDFS/package/scripts/snamenode.py | 42 -
.../services/HDFS/package/scripts/zkfc_slave.py | 38 -
.../services/HDFS/quicklinks/quicklinks.json | 76 -
.../PERF/1.0/services/HDFS/themes/theme.json | 179 -
.../stacks/PERF/1.0/services/HDFS/widgets.json | 649 --
.../PERF/1.0/services/SLEEPY/kerberos.json | 2 +-
.../PERF/1.0/services/SLEEPY/metainfo.xml | 1 +
.../stacks/PERF/1.0/services/SNOW/kerberos.json | 2 +-
.../stacks/PERF/1.0/services/SNOW/metainfo.xml | 1 +
.../PERF/1.0/services/YARN/YARN_metrics.json | 3486 -------
.../PERF/1.0/services/YARN/YARN_widgets.json | 611 --
.../stacks/PERF/1.0/services/YARN/alerts.json | 77 -
.../YARN/configuration-mapred/mapred-env.xml | 50 -
.../YARN/configuration-mapred/mapred-site.xml | 134 -
.../YARN/configuration/capacity-scheduler.xml | 69 -
.../YARN/configuration/ranger-yarn-audit.xml | 121 -
.../ranger-yarn-plugin-properties.xml | 82 -
.../configuration/ranger-yarn-policymgr-ssl.xml | 66 -
.../YARN/configuration/ranger-yarn-security.xml | 58 -
.../YARN/configuration/yarn-alert-config.xml | 80 -
.../services/YARN/configuration/yarn-env.xml | 201 -
.../services/YARN/configuration/yarn-log4j.xml | 103 -
.../services/YARN/configuration/yarn-site.xml | 796 --
.../stacks/PERF/1.0/services/YARN/kerberos.json | 278 -
.../stacks/PERF/1.0/services/YARN/metainfo.xml | 355 -
.../package/alerts/alert_history_process.py | 59 -
.../package/alerts/alert_nodemanager_health.py | 59 -
.../alerts/alert_resourcemanager_process.py | 59 -
.../package/alerts/alert_timeline_process.py | 59 -
.../scripts/application_timeline_server.py | 42 -
.../YARN/package/scripts/historyserver.py | 42 -
.../package/scripts/mapred_service_check.py | 30 -
.../YARN/package/scripts/mapreduce2_client.py | 38 -
.../YARN/package/scripts/nodemanager.py | 42 -
.../YARN/package/scripts/resourcemanager.py | 48 -
.../YARN/package/scripts/service_check.py | 30 -
.../YARN/package/scripts/yarn_client.py | 38 -
.../YARN/quicklinks-mapred/quicklinks.json | 76 -
.../services/YARN/quicklinks/quicklinks.json | 76 -
.../1.0/services/YARN/themes-mapred/theme.json | 132 -
.../PERF/1.0/services/YARN/themes/theme.json | 250 -
.../PERF/1.0/services/ZOOKEEPER/alerts.json | 20 -
.../ZOOKEEPER/configuration/zk-alert-config.xml | 80 -
.../PERF/1.0/services/ZOOKEEPER/kerberos.json | 39 -
.../PERF/1.0/services/ZOOKEEPER/metainfo.xml | 54 -
.../package/alerts/alert_zk_server_process.py | 59 -
.../ZOOKEEPER/package/scripts/service_check.py | 30 -
.../package/scripts/zookeeper_client.py | 38 -
.../package/scripts/zookeeper_server.py | 42 -
.../stacks/PERF/1.0/upgrades/config-upgrade.xml | 34 +
.../1.0/upgrades/nonrolling-upgrade-2.0.xml | 443 +
.../stacks/PERF/1.0/upgrades/upgrade-2.0.xml | 331 +
.../main/resources/stacks/PERF/2.0/metainfo.xml | 23 +
.../stacks/PERF/2.0/repos/repoinfo.xml | 33 +
.../resources/stacks/PERF/PythonExecutor.sed | 5 +
.../resources/stacks/PERF/install_packages.sed | 11 +
contrib/utils/perf/deploy-gce-perf-cluster.py | 4 +
220 files changed, 34511 insertions(+), 33289 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/2c362fd0/ambari-agent/src/main/python/ambari_agent/PythonExecutor.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/python/ambari_agent/PythonExecutor.py b/ambari-agent/src/main/python/ambari_agent/PythonExecutor.py
index d75fc0c..dfe361a 100644
--- a/ambari-agent/src/main/python/ambari_agent/PythonExecutor.py
+++ b/ambari-agent/src/main/python/ambari_agent/PythonExecutor.py
@@ -91,10 +91,9 @@ class PythonExecutor(object):
recreated or appended.
The structured out file, however, is preserved during multiple invocations that use the same file.
"""
-
pythonCommand = self.python_command(script, script_params)
logger.debug("Running command " + pprint.pformat(pythonCommand))
-
+
if handle is None:
tmpout, tmperr = self.open_subprocess_files(tmpoutfile, tmperrfile, override_output_files, backup_log_files)
@@ -111,10 +110,10 @@ class PythonExecutor(object):
self.event.set()
thread.join()
result = self.prepare_process_result(process.returncode, tmpoutfile, tmperrfile, tmpstructedoutfile, timeout=timeout)
-
+
if log_info_on_failure and result['exitcode']:
self.on_failure(pythonCommand, result)
-
+
return result
else:
holder = Holder(pythonCommand, tmpoutfile, tmperrfile, tmpstructedoutfile, handle)
@@ -122,7 +121,7 @@ class PythonExecutor(object):
background = BackgroundThread(holder, self)
background.start()
return {"exitcode": 777}
-
+
def on_failure(self, pythonCommand, result):
"""
Log some useful information after task failure.
@@ -134,11 +133,11 @@ class PythonExecutor(object):
cmd_list = ["ps faux", "netstat -tulpn"]
shell_runner = shellRunner()
-
+
for cmd in cmd_list:
ret = shell_runner.run(cmd)
logger.info("Command '{0}' returned {1}. {2}{3}".format(cmd, ret["exitCode"], ret["error"], ret["output"]))
-
+
def prepare_process_result(self, returncode, tmpoutfile, tmperrfile, tmpstructedoutfile, timeout=None):
out, error, structured_out = self.read_result_from_files(tmpoutfile, tmperrfile, tmpstructedoutfile)
@@ -166,7 +165,7 @@ class PythonExecutor(object):
else:
structured_out = {}
return out, error, structured_out
-
+
def preexec_fn(self):
os.setpgid(0, 0)
@@ -197,14 +196,14 @@ class PythonExecutor(object):
def condenseOutput(self, stdout, stderr, retcode, structured_out):
log_lines_count = self.config.get('heartbeat', 'log_lines_count')
-
+
result = {
"exitcode": retcode,
"stdout": self.grep.tail(stdout, log_lines_count) if log_lines_count else stdout,
"stderr": self.grep.tail(stderr, log_lines_count) if log_lines_count else stderr,
"structuredOut" : structured_out
}
-
+
return result
def python_watchdog_func(self, python, timeout):
http://git-wip-us.apache.org/repos/asf/ambari/blob/2c362fd0/ambari-common/src/main/python/resource_management/libraries/script/dummy.py
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/resource_management/libraries/script/dummy.py b/ambari-common/src/main/python/resource_management/libraries/script/dummy.py
index 3dcece5..ad5f2a6 100644
--- a/ambari-common/src/main/python/resource_management/libraries/script/dummy.py
+++ b/ambari-common/src/main/python/resource_management/libraries/script/dummy.py
@@ -23,16 +23,21 @@ __all__ = ["Dummy"]
# Python Imports
import os
+import re
# Local Imports
from resource_management.libraries.script.script import Script
from resource_management.core.resources.system import Directory, File, Execute
from ambari_commons.constants import AMBARI_SUDO_BINARY
from resource_management.core.exceptions import ComponentIsNotRunning
+from resource_management.core.logger import Logger
from resource_management.libraries.functions.default import default
from resource_management.libraries.functions import get_kinit_path
+from resource_management.libraries.functions import conf_select
+from resource_management.libraries.functions import stack_select
+from resource_management.libraries.functions import StackFeature
class Dummy(Script):
"""
@@ -69,12 +74,25 @@ class Dummy(Script):
def install(self, env):
print "Install"
self.prepare()
+ component_name = self.get_component_name()
+ repo_info = str(default("/hostLevelParams/repo_info", "1.1.1.1-1"))
+ matches = re.findall(r"([\d\.]+\-\d+)", repo_info)
+ version = matches[0] if matches and len(matches) > 0 else "1.1.1.1-1"
+
+ from resource_management.libraries.functions import stack_tools
+ (stack_selector_name, stack_selector_path, stack_selector_package) = stack_tools.get_stack_tool(stack_tools.STACK_SELECTOR_NAME)
+ command = 'ambari-python-wrap {0} install {1}'.format(stack_selector_path, version)
+ Execute(command)
+
+ if component_name:
+ conf_select.select("PERF", component_name, version)
+ stack_select.select(component_name, version)
def configure(self, env):
print "Configure"
self.prepare()
- def start(self, env):
+ def start(self, env, upgrade_type=None):
print "Start"
self.prepare()
@@ -101,7 +119,7 @@ class Dummy(Script):
content=""
)
- def stop(self, env):
+ def stop(self, env, upgrade_type=None):
print "Stop"
self.prepare()
@@ -115,3 +133,10 @@ class Dummy(Script):
if not os.path.isfile(self.pid_file):
raise ComponentIsNotRunning()
+
+ def get_component_name(self):
+ """
+ To be overridden by subclasses.
+ Returns a string with the component name used in selecting the version.
+ """
+ pass
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/2c362fd0/ambari-server/src/main/resources/custom_actions/scripts/ru_set_all.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/custom_actions/scripts/ru_set_all.py b/ambari-server/src/main/resources/custom_actions/scripts/ru_set_all.py
index d70e87f..b7fcc51 100644
--- a/ambari-server/src/main/resources/custom_actions/scripts/ru_set_all.py
+++ b/ambari-server/src/main/resources/custom_actions/scripts/ru_set_all.py
@@ -61,6 +61,8 @@ class UpgradeSetAll(Script):
stack_selector_path = stack_tools.get_stack_tool_path(stack_tools.STACK_SELECTOR_NAME)
cmd = ('ambari-python-wrap', stack_selector_path, 'set', 'all', version)
code, out = shell.call(cmd, sudo=True)
+ if code != 0:
+ raise Exception("Command '{0}' exit code is nonzero".format(cmd))
if real_ver and check_stack_feature(StackFeature.CONFIG_VERSIONING, real_ver):
# backup the old and symlink /etc/[component]/conf to <stack-root>/current/[component]
http://git-wip-us.apache.org/repos/asf/ambari/blob/2c362fd0/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-INSTALL/scripts/conf-select.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-INSTALL/scripts/conf-select.py b/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-INSTALL/scripts/conf-select.py
new file mode 100644
index 0000000..67d0b71
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-INSTALL/scripts/conf-select.py
@@ -0,0 +1,35 @@
+#!/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 sys
+
+
+
+# main method to parse arguments from user and start work
+def do_work(args):
+ pass
+
+
+def main():
+
+ if len(sys.argv) <= 1:
+ sys.exit(-1)
+
+ args = sys.argv[1:]
+ do_work(args)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/2c362fd0/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-INSTALL/scripts/distro-select.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-INSTALL/scripts/distro-select.py b/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-INSTALL/scripts/distro-select.py
new file mode 100644
index 0000000..6d9a814
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-INSTALL/scripts/distro-select.py
@@ -0,0 +1,145 @@
+#!/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 sys
+import os
+
+AMBARI_AGENT_HOST_DIR = "AMBARI_AGENT_HOST_DIR"
+
+SYMLINKS_TXT = "symlinks.txt"
+VERSIONS_TXT = "versions.txt"
+
+# main method to parse arguments from user and start work
+def main():
+ if len(sys.argv) <= 1:
+ sys.exit(-1)
+
+ args = sys.argv[1:]
+
+ do_work(args)
+
+
+def extrakt_var_from_pythonpath(name):
+ PATH = os.environ['PATH']
+ paths = PATH.split(':')
+ var = ''
+ for item in paths:
+ if item.startswith(name):
+ var = item.replace(name, '')
+ break
+ return var
+
+
+def print_versions(args):
+ dest = versions_file_destination()
+
+ with open(dest, 'r') as f:
+ for line in f:
+ print line
+
+
+def versions_file_destination():
+ agent_host_dir = extrakt_var_from_pythonpath(AMBARI_AGENT_HOST_DIR)
+ dest = os.path.join(agent_host_dir, VERSIONS_TXT)
+ if not os.path.exists(dest):
+ open(dest, 'w').close()
+ return dest
+
+
+def print_status(args):
+ dest = symlinks_file_destination()
+
+ with open(dest, 'r') as f:
+ if len(args) >= 2:
+ for line in f:
+ if args[1] in line:
+ print line
+ pass
+
+ for line in f:
+ print line
+
+
+def set_version(args):
+ dest = symlinks_file_destination()
+
+ line_template = "{0} - {1}\n"
+ result = ""
+ with open(dest, 'r') as f:
+
+ if len(args) >= 3:
+ if args[1] != "all":
+ seted = False
+ for line in f:
+ if args[1] in line:
+ compinfo = str.split(line)
+ result += line_template.format(compinfo[0], args[2])
+ seted = True
+ else:
+ result += line
+ if seted != True:
+ result += line_template.format(args[1], args[2])
+ else:
+ for line in f:
+ compinfo = str.split(line)
+ result += line_template.format(compinfo[0], args[2])
+
+ with open(dest, 'w') as f:
+ f.write(result)
+
+
+def symlinks_file_destination():
+ agent_host_dir = extrakt_var_from_pythonpath(AMBARI_AGENT_HOST_DIR)
+ dest = os.path.join(agent_host_dir, SYMLINKS_TXT)
+ if not os.path.exists(dest):
+ open(dest, 'w').close()
+ return dest
+
+
+def install_version(args):
+ dest = versions_file_destination()
+ installed = False
+ with open(dest, 'r') as f:
+ for line in f:
+ if args[1] in line:
+ installed = True
+ break
+ if not installed:
+ with open(dest, 'a') as f:
+ if args[1]:
+ f.write(args[1] + "\n")
+
+def do_work(args):
+ """
+ Check that all required args are passed in. If so, perform required action.
+ :param args:
+ """
+ if not args[0] or args[0] == "status":
+ print_status(args)
+ elif args[0] == "versions":
+ print_versions(args)
+ elif args[0] == "set":
+ set_version(args)
+ elif args[0] == "install":
+ install_version(args)
+
+
+
+if __name__ == "__main__":
+ main()
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/2c362fd0/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-INSTALL/scripts/hook.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-INSTALL/scripts/hook.py b/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-INSTALL/scripts/hook.py
index 9eca9ec..175f39a 100644
--- a/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-INSTALL/scripts/hook.py
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-INSTALL/scripts/hook.py
@@ -16,13 +16,44 @@ See the License for the specific language governing permissions and
limitations under the License.
"""
-
+import os
+from resource_management.core.resources.system import Directory, File, Execute
from resource_management.libraries.script import Hook
+AMBARI_AGENT_CACHE_DIR = 'AMBARI_AGENT_CACHE_DIR'
+
+BEFORE_INSTALL_SCRIPTS = "hooks/before-INSTALL/scripts"
+STACK = "PERF/1.0"
+STACKS = "stacks"
+DISTRO_SELECT_PY = os.path.join(STACKS, STACK, BEFORE_INSTALL_SCRIPTS, "distro-select.py")
+CONF_SELECT_PY = os.path.join(STACKS, STACK, BEFORE_INSTALL_SCRIPTS, "conf-select.py")
+DISTRO_SELECT_DEST = "/usr/bin/distro-select"
+CONF_SELECT_DEST = "/usr/bin/conf-select"
+
class BeforeInstallHook(Hook):
def hook(self, env):
print "Before Install Hook"
+ cache_dir = self.extrakt_var_from_pythonpath(AMBARI_AGENT_CACHE_DIR)
+ conf_select = os.path.join(cache_dir, CONF_SELECT_PY)
+ dist_select = os.path.join(cache_dir, DISTRO_SELECT_PY)
+ if not os.path.exists(CONF_SELECT_DEST):
+ Execute("cp %s %s" % (conf_select, CONF_SELECT_DEST), user="root")
+ Execute("chmod a+x %s" % (CONF_SELECT_DEST), user="root")
+ if not os.path.exists(DISTRO_SELECT_DEST):
+ Execute("cp %s %s" % (dist_select, DISTRO_SELECT_DEST), user="root")
+ Execute("chmod a+x %s" % (DISTRO_SELECT_DEST), user="root")
+
+ def extrakt_var_from_pythonpath(self, name):
+
+ PATH = os.environ['PATH']
+ paths = PATH.split(':')
+ var = ''
+ for item in paths:
+ if item.startswith(name):
+ var = item.replace(name, '')
+ break
+ return var
if __name__ == "__main__":
BeforeInstallHook().execute()
http://git-wip-us.apache.org/repos/asf/ambari/blob/2c362fd0/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-INSTALL/scripts/params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-INSTALL/scripts/params.py b/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-INSTALL/scripts/params.py
new file mode 100644
index 0000000..6eddfdf
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-INSTALL/scripts/params.py
@@ -0,0 +1,23 @@
+"""
+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.
+
+"""
+
+from resource_management.libraries.functions import default, format
+
+
+version = default("/commandParams/version", None)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/2c362fd0/ambari-server/src/main/resources/stacks/PERF/1.0/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/metainfo.xml b/ambari-server/src/main/resources/stacks/PERF/1.0/metainfo.xml
index 45a63e5..90556f1 100644
--- a/ambari-server/src/main/resources/stacks/PERF/1.0/metainfo.xml
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/metainfo.xml
@@ -16,7 +16,7 @@
limitations under the License.
-->
<metainfo>
- <versions>
- <active>false</active>
- </versions>
+ <versions>
+ <active>false</active>
+ </versions>
</metainfo>
http://git-wip-us.apache.org/repos/asf/ambari/blob/2c362fd0/ambari-server/src/main/resources/stacks/PERF/1.0/repos/repoinfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/repos/repoinfo.xml b/ambari-server/src/main/resources/stacks/PERF/1.0/repos/repoinfo.xml
index c5137fb..0895fab 100644
--- a/ambari-server/src/main/resources/stacks/PERF/1.0/repos/repoinfo.xml
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/repos/repoinfo.xml
@@ -18,10 +18,16 @@
<reposinfo>
<os family="redhat6">
<repo>
- <baseurl>http://foo</baseurl>
+ <baseurl>http://foo-1.0.1.0-1</baseurl>
<repoid>PERF-1.0</repoid>
<reponame>PERF</reponame>
<unique>true</unique>
</repo>
+ <repo>
+ <baseurl>http://foo2</baseurl>
+ <repoid>PERF-UTILS-1.0</repoid>
+ <reponame>PERF-UTILS</reponame>
+ <unique>false</unique>
+ </repo>
</os>
</reposinfo>
http://git-wip-us.apache.org/repos/asf/ambari/blob/2c362fd0/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/alerts.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/alerts.json b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/alerts.json
new file mode 100644
index 0000000..f864f45
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/alerts.json
@@ -0,0 +1,35 @@
+{
+ "FAKEHBASE": {
+
+ "FAKEHBASE_MASTER": [
+ {
+ "name": "hbase_master_process",
+ "label": "FAKEHBase 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": "HOST",
+ "enabled": true,
+ "source": {
+ "type": "SCRIPT",
+ "path": "PERF/1.0/services/FAKEHBASE/package/alerts/hbase_master_process.py",
+ "parameters": []
+ }
+ }
+ ],
+ "FAKEHBASE_REGIONSERVER": [
+ {
+ "name": "hbase_regionserver_process",
+ "label": "HBase FAKERegionServer Process",
+ "description": "This host-level alert is triggered if the FAKERegionServer processes cannot be confirmed to be up and listening on the network for the configured critical threshold, given in seconds.",
+ "interval": 1,
+ "scope": "HOST",
+ "enabled": true,
+ "source": {
+ "type": "SCRIPT",
+ "path": "PERF/1.0/services/FAKEHBASE/package/alerts/hbase_regionserver_process.py",
+ "parameters": []
+ }
+ }
+ ]
+ }
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2c362fd0/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/configuration/hbase-alert-config.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/configuration/hbase-alert-config.xml b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/configuration/hbase-alert-config.xml
new file mode 100644
index 0000000..392eea7
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/configuration/hbase-alert-config.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 xmlns:xi="http://www.w3.org/2001/XInclude" supports_final="true">
+
+ <property>
+ <name>alert.behavior.type</name>
+ <value>percentage</value>
+ <description>
+ This property describes type of alert behaviour.
+ There are three types percentage, timeout, flip.
+ </description>
+ <on-ambari-upgrade add="false"/>
+ </property>
+
+
+ <property>
+ <name>alert.success.percentage</name>
+ <value>100</value>
+ <description>
+ This property will be actual only when alert.behaviour.type
+ set to "percentage". Here you should set percent of successful
+ alert checks.
+ </description>
+ <on-ambari-upgrade add="false"/>
+ </property>
+
+
+ <property>
+ <name>alert.timeout.return.value</name>
+ <value>false</value>
+ <description>
+ This property will be actual only when alert.behaviour.type
+ set to "timeout". Here you should set result which alert will
+ return after timeout, false|true|none.
+ </description>
+ <on-ambari-upgrade add="false"/>
+ </property>
+
+ <property>
+ <name>alert.timeout.secs</name>
+ <value>120</value>
+ <description>
+ This property will be actual only when alert.behaviour.type
+ set to "timeout". Here you should set number of seconds for
+ alert to sleep.
+ </description>
+ <on-ambari-upgrade add="false"/>
+ </property>
+
+
+ <property>
+ <name>alert.flip.interval.mins</name>
+ <value>3</value>
+ <description>
+ This property will be actual only when alert.behaviour.type
+ set to "flip". Here you should set number of minutes at which
+ the alert should flip from true|false.
+ </description>
+ <on-ambari-upgrade add="false"/>
+ </property>
+
+
+</configuration>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/2c362fd0/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/configuration/hbase-env.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/configuration/hbase-env.xml b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/configuration/hbase-env.xml
new file mode 100644
index 0000000..91fed20
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/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="false"/>
+ </property>
+ <property>
+ <name>hbase_regionserver_heapsize</name>
+ <value>4096</value>
+ <description>Maximum amount of memory each HBase FAKERegionServer can use.</description>
+ <display-name>HBase FAKERegionServer 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="false"/>
+ </property>
+ <property>
+ <name>hbase_master_heapsize</name>
+ <value>4096</value>
+ <description>Maximum amount of memory each FAKEHBase Master can use.</description>
+ <display-name>FAKEHBase 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="false"/>
+ </property>
+ <property>
+ <name>hbase_user_nofile_limit</name>
+ <value>32000</value>
+ <description>Max open files limit setting for FAKEHBASE user.</description>
+ <on-ambari-upgrade add="false"/>
+ </property>
+ <property>
+ <name>hbase_user_nproc_limit</name>
+ <value>16000</value>
+ <description>Max number of processes limit setting for FAKEHBASE user.</description>
+ <on-ambari-upgrade add="false"/>
+ </property>
+ <property>
+ <name>hbase_java_io_tmpdir</name>
+ <value>/tmp</value>
+ <description>Used in hbase-env.sh as FAKEHBASE_OPTS=-Djava.io.tmpdir=java_io_tmpdir</description>
+ <value-attributes>
+ <type>directory</type>
+ </value-attributes>
+ <on-ambari-upgrade add="false"/>
+ </property>
+ <property>
+ <name>hbase_principal_name</name>
+ <description>HBase principal name</description>
+ <on-ambari-upgrade add="false"/>
+ </property>
+ <property>
+ <name>hbase_user_keytab</name>
+ <description>HBase keytab path</description>
+ <on-ambari-upgrade add="false"/>
+ </property>
+ <property>
+ <name>hbase_regionserver_shutdown_timeout</name>
+ <value>30</value>
+ <display-name>HBase FAKERegionServer shutdown timeout</display-name>
+ <description>
+ After this number of seconds waiting for graceful stop of FAKEHBase 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 FAKERegionServer 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="false"/>
+ </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="false"/>
+ </property>
+ <property>
+ <name>hbase_regionserver_xmn_max</name>
+ <value>512</value>
+ <description>
+ Sets the upper bound on HBase FAKEFAKERegionServers' 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>FAKEFAKERegionServers maximum value for -Xmn</display-name>
+ <value-attributes>
+ <type>int</type>
+ <unit>MB</unit>
+ </value-attributes>
+ <on-ambari-upgrade add="false"/>
+ </property>
+ <property>
+ <name>hbase_regionserver_xmn_ratio</name>
+ <value>0.2</value>
+ <display-name>FAKEFAKERegionServers -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="false"/>
+ </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="false"/>
+ </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 FAKEHBASE_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="false"/>
+ </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 FAKEHBASE_CONF_DIR=${FAKEHBASE_CONF_DIR:-{{hbase_conf_dir}}}
+
+# Extra Java CLASSPATH elements. Optional.
+export FAKEHBASE_CLASSPATH=${FAKEHBASE_CLASSPATH}
+
+
+# The maximum amount of heap to use, in MB. Default is 1000.
+# export FAKEHBASE_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 FAKEHBASE_OPTS="$FAKEHBASE_OPTS -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:$FAKEHBASE_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 FAKEHBASE_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 FAKEHBASE_THRIFT_OPTS="$FAKEHBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10103"
+# export FAKEHBASE_FAKEZOOKEEPER_OPTS="$FAKEHBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10104"
+
+# File naming hosts on which HFAKEFAKERegionServers will run. $FAKEHBASE_HOME/conf/regionservers by default.
+export FAKEHBASE_REGIONSERVERS=${FAKEHBASE_CONF_DIR}/regionservers
+
+# Extra ssh options. Empty by default.
+# export FAKEHBASE_SSH_OPTS="-o ConnectTimeout=1 -o SendEnv=FAKEHBASE_CONF_DIR"
+
+# Where log files are stored. $FAKEHBASE_HOME/logs by default.
+export FAKEHBASE_LOG_DIR={{log_dir}}
+
+# A string representing this instance of hbase. $USER by default.
+# export FAKEHBASE_IDENT_STRING=$USER
+
+# The scheduling priority for daemon processes. See 'man nice'.
+# export FAKEHBASE_NICENESS=10
+
+# The directory where pid files are stored. /tmp by default.
+export FAKEHBASE_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 FAKEHBASE_SLAVE_SLEEP=0.1
+
+# Tell HBase whether it should manage it's own instance of Zookeeper or not.
+export FAKEHBASE_MANAGES_ZK=false
+
+{% if java_version < 8 %}
+JDK_DEPENDED_OPTS="-XX:PermSize=128m -XX:MaxPermSize=128m"
+{% endif %}
+
+{% if security_enabled %}
+export FAKEHBASE_OPTS="$FAKEHBASE_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 FAKEHBASE_MASTER_OPTS="$FAKEHBASE_MASTER_OPTS -Xmx{{master_heapsize}} -Djava.security.auth.login.config={{master_jaas_config_file}} $JDK_DEPENDED_OPTS"
+export FAKEHBASE_REGIONSERVER_OPTS="$FAKEHBASE_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 FAKEHBASE_OPTS="$FAKEHBASE_OPTS -XX:+UseConcMarkSweepGC -XX:ErrorFile={{log_dir}}/hs_err_pid%p.log -Djava.io.tmpdir={{java_io_tmpdir}}"
+export FAKEHBASE_MASTER_OPTS="$FAKEHBASE_MASTER_OPTS -Xmx{{master_heapsize}} $JDK_DEPENDED_OPTS"
+export FAKEHBASE_REGIONSERVER_OPTS="$FAKEHBASE_REGIONSERVER_OPTS -Xmn{{regionserver_xmn_size}} -XX:CMSInitiatingOccupancyFraction=70 -Xms{{regionserver_heapsize}} -Xmx{{regionserver_heapsize}} $JDK_DEPENDED_OPTS"
+{% endif %}
+
+# HBase off-heap MaxDirectMemorySize
+export FAKEHBASE_REGIONSERVER_OPTS="$FAKEHBASE_REGIONSERVER_OPTS {% if hbase_max_direct_memory_size %} -XX:MaxDirectMemorySize={{hbase_max_direct_memory_size}}m {% endif %}"
+export FAKEHBASE_MASTER_OPTS="$FAKEHBASE_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="false"/>
+ </property>
+</configuration>
http://git-wip-us.apache.org/repos/asf/ambari/blob/2c362fd0/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/configuration/hbase-log4j.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/configuration/hbase-log4j.xml b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/configuration/hbase-log4j.xml
new file mode 100644
index 0000000..bad36ee
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/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.FAKEZooKeeperWatcher=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="false"/>
+ </property>
+</configuration>
http://git-wip-us.apache.org/repos/asf/ambari/blob/2c362fd0/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/configuration/hbase-logsearch-conf.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/configuration/hbase-logsearch-conf.xml b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/configuration/hbase-logsearch-conf.xml
new file mode 100644
index 0000000..891445d
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/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="false"/>
+ </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>FAKEHBASE_MASTER:hbase_master;FAKEHBASE_REGIONSERVER:hbase_regionserver;FAKEPHOENIX_QUERY_SERVER:hbase_phoenix_server</value>
+ <on-ambari-upgrade add="false"/>
+ </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="false"/>
+ </property>
+</configuration>
http://git-wip-us.apache.org/repos/asf/ambari/blob/2c362fd0/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/configuration/hbase-policy.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/configuration/hbase-policy.xml b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/configuration/hbase-policy.xml
new file mode 100644
index 0000000..66e00c2
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/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 HFAKEFAKERegionServers)
+ 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="false"/>
+ </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="false"/>
+ </property>
+ <property>
+ <name>security.masterregion.protocol.acl</name>
+ <value>*</value>
+ <description>ACL for HMasterRegionInterface protocol implementations
+ (for HFAKEFAKERegionServers 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="false"/>
+ </property>
+</configuration>
http://git-wip-us.apache.org/repos/asf/ambari/blob/2c362fd0/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/configuration/hbase-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/configuration/hbase-site.xml b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/configuration/hbase-site.xml
new file mode 100644
index 0000000..d8df033
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/configuration/hbase-site.xml
@@ -0,0 +1,555 @@
+<?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
+ FAKEHDFS directory '/hbase' where the FAKEHDFS 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 FAKEZooKeeper daemons together
+ in the one JVM.
+ </description>
+ <on-ambari-upgrade add="false"/>
+ </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="false"/>
+ </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="false"/>
+ </property>
+ <property>
+ <name>hbase.master.info.bindAddress</name>
+ <value>0.0.0.0</value>
+ <description>The bind address for the FAKEHBase Master web UI
+ </description>
+ <on-ambari-upgrade add="false"/>
+ </property>
+ <property>
+ <name>hbase.regionserver.handler.count</name>
+ <value>30</value>
+ <description>
+ Count of RPC Listener instances spun up on FAKEFAKERegionServers.
+ Same property is used by the Master for count of master handlers.
+ </description>
+ <display-name>Number of Handlers per FAKERegionServer</display-name>
+ <value-attributes>
+ <type>int</type>
+ <minimum>5</minimum>
+ <maximum>240</maximum>
+ <increment-step>1</increment-step>
+ </value-attributes>
+ <on-ambari-upgrade add="false"/>
+ </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="false"/>
+ </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="false"/>
+ </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="false"/>
+ </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="false"/>
+ </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="false"/>
+ </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="false"/>
+ </property>
+ <property>
+ <name>zookeeper.session.timeout</name>
+ <value>90000</value>
+ <description>FAKEZooKeeper session timeout.
+ FAKEZooKeeper 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="false"/>
+ </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="false"/>
+ </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="false"/>
+ </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="false"/>
+ </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="false"/>
+ </property>
+ <property>
+ <name>hfile.block.cache.size</name>
+ <value>0.40</value>
+ <description>Percentage of FAKERegionServer memory to allocate to read buffers.</description>
+ <display-name>% of FAKERegionServer 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="false"/>
+ </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="false"/>
+ </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="false"/>
+ </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="false"/>
+ </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="false"/>
+ </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="false"/>
+ </property>
+ <property>
+ <name>hbase.zookeeper.property.clientPort</name>
+ <value>2181</value>
+ <description>Property from FAKEZooKeeper's config zoo.cfg.
+ The port at which the clients will connect.
+ </description>
+ <on-ambari-upgrade add="false"/>
+ </property>
+
+ <!-- End of properties used to generate FAKEZooKeeper host:port quorum list. -->
+ <property>
+ <name>hbase.zookeeper.useMulti</name>
+ <value>true</value>
+ <description>Instructs HBase to make use of FAKEZooKeeper's multi-update functionality.
+ This allows certain FAKEZooKeeper operations to complete more quickly and prevents some issues
+ with rare Replication failure scenarios (see the release note of FAKEHBASE-2611 for an example).·
+ IMPORTANT: only set this to true if all FAKEZooKeeper servers in the cluster are on version 3.4+
+ and will not be downgraded. FAKEZooKeeper versions before 3.4 do not support multi-update and will
+ not fail gracefully if multi-update is invoked (see FAKEZOOKEEPER-1495).
+ </description>
+ <on-ambari-upgrade add="false"/>
+ </property>
+ <property>
+ <name>zookeeper.znode.parent</name>
+ <value>/hbase-unsecure</value>
+ <description>Root ZNode for HBase in FAKEZooKeeper. All of HBase's FAKEZooKeeper
+ files that are configured with a relative path will go under this node.
+ By default, all of HBase's FAKEZooKeeper file path are configured with a
+ relative path, so they will all go under this directory unless changed.
+ </description>
+ <on-ambari-upgrade add="false"/>
+ </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="false"/>
+ </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="false"/>
+ </property>
+ <property>
+ <name>hbase.defaults.for.version.skip</name>
+ <value>true</value>
+ <description>Disables version verification.</description>
+ <on-ambari-upgrade add="false"/>
+ </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="false"/>
+ </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="false"/>
+ </property>
+ <property>
+ <name>hbase.rpc.protection</name>
+ <value>authentication</value>
+ <on-ambari-upgrade add="false"/>
+ </property>
+
+ <!-- These properties exist in HDP 2.3 and higher. -->
+ <property>
+ <name>hbase.master.port</name>
+ <value>16000</value>
+ <display-name>FAKEHBase Master Port</display-name>
+ <description>The port the FAKEHBase Master should bind to.</description>
+ <value-attributes>
+ <overridable>false</overridable>
+ <type>int</type>
+ </value-attributes>
+ <on-ambari-upgrade add="false"/>
+ </property>
+ <property>
+ <name>hbase.master.info.port</name>
+ <value>16010</value>
+ <description>The port for the FAKEHBase Master web UI.</description>
+ <on-ambari-upgrade add="false"/>
+ </property>
+ <property>
+ <name>hbase.regionserver.port</name>
+ <value>16020</value>
+ <description>The port the HBase FAKERegionServer binds to.</description>
+ <on-ambari-upgrade add="false"/>
+ </property>
+ <property>
+ <name>hbase.regionserver.info.port</name>
+ <value>16030</value>
+ <description>The port for the HBase FAKERegionServer web UI.</description>
+ <on-ambari-upgrade add="false"/>
+ </property>
+
+
+ <!-- These properties exist in HDP 2.5 and higher. -->
+ <property>
+ <name>hbase.master.ui.readonly</name>
+ <value>false</value>
+ <on-ambari-upgrade add="false"/>
+ </property>
+ <property>
+ <name>zookeeper.recovery.retry</name>
+ <value>6</value>
+ <on-ambari-upgrade add="false"/>
+ </property>
+</configuration>