You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by rz...@apache.org on 2017/02/17 22:57:27 UTC
[49/51] [abbrv] ambari git commit: AMBARI-19887 : Add AMS and Grafana
to PERF cluster. (avijayan)
AMBARI-19887 : Add AMS and Grafana to PERF cluster. (avijayan)
(cherry picked from commit a45b521372c70b5d4b50d3376350dad8353fa47a)
Change-Id: Ib69554ba3352b530d23b06cbd0ea043930d54ec9
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/6e2a2855
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/6e2a2855
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/6e2a2855
Branch: refs/heads/branch-feature-BUG-74026
Commit: 6e2a2855615b1ad44d799f20a44fe1e27b6572dd
Parents: 8cfbd7b
Author: Aravindan Vijayan <av...@hortonworks.com>
Authored: Tue Feb 7 10:16:21 2017 -0800
Committer: Zuul <re...@hortonworks.com>
Committed: Tue Feb 7 15:56:55 2017 -0800
----------------------------------------------------------------------
.../functions/get_not_managed_resources.py | 19 ++--
.../system/impl/AmbariMetricSinkImpl.java | 44 +++++++--
.../PERF/1.0/hooks/before-ANY/scripts/hook.py | 7 ++
.../PERF/1.0/hooks/before-ANY/scripts/params.py | 42 +++++++++
.../before-ANY/scripts/shared_initialization.py | 94 ++++++++++++++++++++
.../PERF/1.0/hooks/before-START/scripts/hook.py | 1 +
.../AMBARI_METRICS/configuration/ams-site.xml | 36 ++++++++
.../1.0/services/AMBARI_METRICS/metainfo.xml | 26 ++++++
.../PERF/1.0/services/FAKEZOOKEEPER/alerts.json | 4 +-
.../1.0/services/FAKEZOOKEEPER/kerberos.json | 4 +-
.../1.0/services/FAKEZOOKEEPER/metainfo.xml | 7 +-
.../package/scripts/zookeeper_client.py | 2 +-
.../package/scripts/zookeeper_server.py | 2 +-
.../stacks/PERF/1.0/services/stack_advisor.py | 37 ++++++++
14 files changed, 298 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/6e2a2855/ambari-common/src/main/python/resource_management/libraries/functions/get_not_managed_resources.py
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/get_not_managed_resources.py b/ambari-common/src/main/python/resource_management/libraries/functions/get_not_managed_resources.py
index 5f8bc67..4af636b 100644
--- a/ambari-common/src/main/python/resource_management/libraries/functions/get_not_managed_resources.py
+++ b/ambari-common/src/main/python/resource_management/libraries/functions/get_not_managed_resources.py
@@ -34,17 +34,18 @@ def get_not_managed_resources():
"""
config = Script.get_config()
not_managed_hdfs_path_list = json.loads(config['hostLevelParams']['not_managed_hdfs_path_list'])[:]
- managed_hdfs_resource_property_names = config['configurations']['cluster-env']['managed_hdfs_resource_property_names']
- managed_hdfs_resource_property_list = filter(None, [property.strip() for property in managed_hdfs_resource_property_names.split(',')])
+ if 'managed_hdfs_resource_property_names' in config['configurations']['cluster-env']:
+ managed_hdfs_resource_property_names = config['configurations']['cluster-env']['managed_hdfs_resource_property_names']
+ managed_hdfs_resource_property_list = filter(None, [property.strip() for property in managed_hdfs_resource_property_names.split(',')])
- for property_name in managed_hdfs_resource_property_list:
- property_value = default('/configurations/' + property_name, None)
+ for property_name in managed_hdfs_resource_property_list:
+ property_value = default('/configurations/' + property_name, None)
- if property_value == None:
- Logger.warning(("Property {0} from cluster-env/managed_hdfs_resource_property_names not found in configurations. "
+ if property_value == None:
+ Logger.warning(("Property {0} from cluster-env/managed_hdfs_resource_property_names not found in configurations. "
"Management of this DFS resource will not be forced.").format(property_name))
- else:
- while property_value in not_managed_hdfs_path_list:
- not_managed_hdfs_path_list.remove(property_value)
+ else:
+ while property_value in not_managed_hdfs_path_list:
+ not_managed_hdfs_path_list.remove(property_value)
return not_managed_hdfs_path_list
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/6e2a2855/ambari-server/src/main/java/org/apache/ambari/server/metrics/system/impl/AmbariMetricSinkImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/metrics/system/impl/AmbariMetricSinkImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/metrics/system/impl/AmbariMetricSinkImpl.java
index 58d36c3..275ad16 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/metrics/system/impl/AmbariMetricSinkImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/metrics/system/impl/AmbariMetricSinkImpl.java
@@ -43,6 +43,8 @@ import org.apache.ambari.server.metrics.system.SingleMetric;
import org.apache.ambari.server.security.authorization.internal.InternalAuthenticationToken;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
+import org.apache.ambari.server.state.Config;
+import org.apache.ambari.server.state.ConfigHelper;
import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.ServiceComponent;
import org.apache.ambari.server.state.ServiceComponentHost;
@@ -99,6 +101,28 @@ public class AmbariMetricSinkImpl extends AbstractTimelineMetricsSink implements
Cluster c = kv.getValue();
Resource.Type type = Resource.Type.ServiceConfigVersion;
+ //If Metrics Collector VIP settings are configured, use that.
+ boolean vipHostConfigPresent = false;
+ boolean vipPortConfigPresent = false;
+ Config clusterEnv = c.getDesiredConfigByType(ConfigHelper.CLUSTER_ENV);
+ if (clusterEnv != null) {
+ Map<String, String> configs = clusterEnv.getProperties();
+
+ String metricsCollectorVipHost = configs.get("metrics_collector_vip_host");
+ if (StringUtils.isNotEmpty(metricsCollectorVipHost)) {
+ LOG.info("Setting Metrics Collector Vip Host : " + metricsCollectorVipHost);
+ collectorHosts.add(metricsCollectorVipHost);
+ vipHostConfigPresent = true;
+ }
+
+ String metricsCollectorVipPort = configs.get("metrics_collector_vip_port");
+ if (StringUtils.isNotEmpty(metricsCollectorVipPort)) {
+ LOG.info("Setting Metrics Collector Vip Port : " + metricsCollectorVipPort);
+ port = metricsCollectorVipPort;
+ vipPortConfigPresent = true;
+ }
+ }
+
Set<String> propertyIds = new HashSet<String>();
propertyIds.add(ServiceConfigVersionResourceProvider.SERVICE_CONFIG_VERSION_CONFIGURATIONS_PROPERTY_ID);
@@ -116,14 +140,16 @@ public class AmbariMetricSinkImpl extends AbstractTimelineMetricsSink implements
ambariManagementController);
try {
- //get collector host(s)
- Service service = c.getService(ambariMetricsServiceName);
- if (service != null) {
- for (String component : service.getServiceComponents().keySet()) {
- ServiceComponent sc = service.getServiceComponents().get(component);
- for (ServiceComponentHost serviceComponentHost : sc.getServiceComponentHosts().values()) {
- if (serviceComponentHost.getServiceComponentName().equals("METRICS_COLLECTOR")) {
- collectorHosts.add(serviceComponentHost.getHostName());
+ if ( !vipHostConfigPresent ) {
+ //get collector host(s)
+ Service service = c.getService(ambariMetricsServiceName);
+ if (service != null) {
+ for (String component : service.getServiceComponents().keySet()) {
+ ServiceComponent sc = service.getServiceComponents().get(component);
+ for (ServiceComponentHost serviceComponentHost : sc.getServiceComponentHosts().values()) {
+ if (serviceComponentHost.getServiceComponentName().equals("METRICS_COLLECTOR")) {
+ collectorHosts.add(serviceComponentHost.getHostName());
+ }
}
}
}
@@ -140,7 +166,7 @@ public class AmbariMetricSinkImpl extends AbstractTimelineMetricsSink implements
if (config != null && config.get("type").equals("ams-site")) {
TreeMap<Object, Object> properties = (TreeMap<Object, Object>) config.get("properties");
String timelineWebappAddress = (String) properties.get("timeline.metrics.service.webapp.address");
- if (StringUtils.isNotEmpty(timelineWebappAddress) && timelineWebappAddress.contains(":")) {
+ if (!vipPortConfigPresent && StringUtils.isNotEmpty(timelineWebappAddress) && timelineWebappAddress.contains(":")) {
port = timelineWebappAddress.split(":")[1];
}
String httpPolicy = (String) properties.get("timeline.metrics.service.http.policy");
http://git-wip-us.apache.org/repos/asf/ambari/blob/6e2a2855/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-ANY/scripts/hook.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-ANY/scripts/hook.py b/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-ANY/scripts/hook.py
index 90e0266..ef409e2 100644
--- a/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-ANY/scripts/hook.py
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-ANY/scripts/hook.py
@@ -18,11 +18,18 @@ limitations under the License.
"""
from resource_management.libraries.script import Hook
+from shared_initialization import *
class BeforeAnyHook(Hook):
def hook(self, env):
print "Before Any Hook"
+ import params
+ env.set_params(params)
+
+ #For AMS.
+ setup_users()
+ setup_java()
if __name__ == "__main__":
BeforeAnyHook().execute()
http://git-wip-us.apache.org/repos/asf/ambari/blob/6e2a2855/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-ANY/scripts/params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-ANY/scripts/params.py b/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-ANY/scripts/params.py
new file mode 100644
index 0000000..dee9d07
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-ANY/scripts/params.py
@@ -0,0 +1,42 @@
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+"""
+import collections
+import ambari_simplejson as json
+from resource_management.libraries.script import Script
+from resource_management.libraries.functions import default
+from resource_management.libraries.functions.expect import expect
+from ambari_commons.constants import AMBARI_SUDO_BINARY
+
+config = Script.get_config()
+tmp_dir = Script.get_tmp_dir()
+
+group_list = json.loads(config['hostLevelParams']['group_list'])
+user_list = json.loads(config['hostLevelParams']['user_list'])
+
+user_group = config['configurations']['cluster-env']['user_group']
+user_to_gid_dict = collections.defaultdict(lambda:user_group)
+user_to_groups_dict = collections.defaultdict(lambda:[user_group])
+
+jdk_name = default("/hostLevelParams/jdk_name", None)
+java_home = config['hostLevelParams']['java_home']
+artifact_dir = format("{tmp_dir}/AMBARI-artifacts/")
+jdk_location = config['hostLevelParams']['jdk_location']
+java_version = expect("/hostLevelParams/java_version", int)
+
+sudo = AMBARI_SUDO_BINARY
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/6e2a2855/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-ANY/scripts/shared_initialization.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-ANY/scripts/shared_initialization.py b/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-ANY/scripts/shared_initialization.py
new file mode 100644
index 0000000..7dc1a48
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-ANY/scripts/shared_initialization.py
@@ -0,0 +1,94 @@
+"""
+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 os
+import tempfile
+from resource_management import *
+
+def setup_users():
+ """
+ Creates users before cluster installation
+ """
+ import params
+
+ for group in params.group_list:
+ Group(group,
+ )
+
+ for user in params.user_list:
+ User(user,
+ gid=params.user_to_gid_dict[user],
+ groups=params.user_to_groups_dict[user],
+ fetch_nonlocal_groups=False
+ )
+
+def setup_java():
+ """
+ Installs jdk using specific params, that comes from ambari-server
+ """
+ import params
+
+ java_exec = format("{java_home}/bin/java")
+
+ if not os.path.isfile(java_exec):
+ if not params.jdk_name: # if custom jdk is used.
+ raise Fail(format("Unable to access {java_exec}. Confirm you have copied jdk to this host."))
+
+ jdk_curl_target = format("{tmp_dir}/{jdk_name}")
+ java_dir = os.path.dirname(params.java_home)
+
+ Directory(params.artifact_dir,
+ create_parents = True,
+ )
+
+ File(jdk_curl_target,
+ content = DownloadSource(format("{jdk_location}/{jdk_name}")),
+ not_if = format("test -f {jdk_curl_target}")
+ )
+
+ tmp_java_dir = tempfile.mkdtemp(prefix="jdk_tmp_", dir=params.tmp_dir)
+
+ try:
+ if params.jdk_name.endswith(".bin"):
+ chmod_cmd = ("chmod", "+x", jdk_curl_target)
+ install_cmd = format("cd {tmp_java_dir} && echo A | {jdk_curl_target} -noregister && {sudo} cp -rp {tmp_java_dir}/* {java_dir}")
+ elif params.jdk_name.endswith(".gz"):
+ chmod_cmd = ("chmod","a+x", java_dir)
+ install_cmd = format("cd {tmp_java_dir} && tar -xf {jdk_curl_target} && {sudo} cp -rp {tmp_java_dir}/* {java_dir}")
+
+ Directory(java_dir
+ )
+
+ Execute(chmod_cmd,
+ sudo = True,
+ )
+
+ Execute(install_cmd,
+ )
+
+ finally:
+ Directory(tmp_java_dir, action="delete")
+
+ File(format("{java_home}/bin/java"),
+ mode=0755,
+ cd_access="a",
+ )
+ Execute(('chmod', '-R', '755', params.java_home),
+ sudo = True,
+ )
http://git-wip-us.apache.org/repos/asf/ambari/blob/6e2a2855/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-START/scripts/hook.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-START/scripts/hook.py b/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-START/scripts/hook.py
index c5600a3..cc24233 100644
--- a/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-START/scripts/hook.py
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/hooks/before-START/scripts/hook.py
@@ -22,6 +22,7 @@ from resource_management.libraries.script import Hook
class BeforeStartHook(Hook):
def hook(self, env):
+ self.run_custom_hook('before-ANY')
print "Before Start Hook"
if __name__ == "__main__":
http://git-wip-us.apache.org/repos/asf/ambari/blob/6e2a2855/ambari-server/src/main/resources/stacks/PERF/1.0/services/AMBARI_METRICS/configuration/ams-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/AMBARI_METRICS/configuration/ams-site.xml b/ambari-server/src/main/resources/stacks/PERF/1.0/services/AMBARI_METRICS/configuration/ams-site.xml
new file mode 100644
index 0000000..1dc66ea
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/AMBARI_METRICS/configuration/ams-site.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<configuration>
+ <property>
+ <name>cluster.zookeeper.quorum</name>
+ <value>{{zookeeper_quorum_hosts}}</value>
+ <description>Comma separated list of servers in the cluster ZooKeeper Quorum.
+ </description>
+ <on-ambari-upgrade add="true"/>
+ </property>
+ <property>
+ <name>cluster.zookeeper.property.clientPort</name>
+ <value>{{zookeeper_clientPort}}</value>
+ <on-ambari-upgrade add="true"/>
+ </property>
+</configuration>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/6e2a2855/ambari-server/src/main/resources/stacks/PERF/1.0/services/AMBARI_METRICS/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/AMBARI_METRICS/metainfo.xml b/ambari-server/src/main/resources/stacks/PERF/1.0/services/AMBARI_METRICS/metainfo.xml
new file mode 100644
index 0000000..03a5ab5
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/AMBARI_METRICS/metainfo.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<metainfo>
+ <schemaVersion>2.0</schemaVersion>
+ <services>
+ <service>
+ <name>AMBARI_METRICS</name>
+ <extends>common-services/AMBARI_METRICS/0.1.0</extends>
+ </service>
+ </services>
+</metainfo>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/6e2a2855/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/alerts.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/alerts.json b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/alerts.json
index c30a53b1..b9c8976 100644
--- a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/alerts.json
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/alerts.json
@@ -1,7 +1,7 @@
{
- "FAKEZOOKEEPER": {
+ "ZOOKEEPER": {
- "FAKEZOOKEEPER_SERVER": [
+ "ZOOKEEPER_SERVER": [
{
"name": "zookeeper_server_process",
"label": "Zookeeper server Process",
http://git-wip-us.apache.org/repos/asf/ambari/blob/6e2a2855/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/kerberos.json b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/kerberos.json
index c8c55b7..0a64ea5 100644
--- a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/kerberos.json
@@ -1,7 +1,7 @@
{
"services": [
{
- "name": "FAKEZOOKEEPER",
+ "name": "ZOOKEEPER",
"identities": [
{
"name": "/smokeuser"
@@ -9,7 +9,7 @@
],
"components": [
{
- "name": "FAKEZOOKEEPER_SERVER",
+ "name": "ZOOKEEPER_SERVER",
"identities": [
{
"name": "zookeeper_zk",
http://git-wip-us.apache.org/repos/asf/ambari/blob/6e2a2855/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/metainfo.xml b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/metainfo.xml
index 366ff6e..38bc3c2 100644
--- a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/metainfo.xml
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/metainfo.xml
@@ -19,7 +19,8 @@
<schemaVersion>2.0</schemaVersion>
<services>
<service>
- <name>FAKEZOOKEEPER</name>
+ <!-- Note : Service and Component Names are original (not fake) to facilitate AMS dependency on Zk. No Zk Install is done -->
+ <name>ZOOKEEPER</name>
<version>3.4.6.2.3</version>
<displayName>FAKEZOOKEEPER</displayName>
<comment>Centralized service which provides highly reliable distributed coordination</comment>
@@ -27,7 +28,7 @@
<!-- Overwrite the commandScript for each of the components. -->
<components>
<component>
- <name>FAKEZOOKEEPER_SERVER</name>
+ <name>ZOOKEEPER_SERVER</name>
<displayName>FAKEZooKeeper Server</displayName>
<category>MASTER</category>
<cardinality>1+</cardinality>
@@ -40,7 +41,7 @@
</component>
<component>
- <name>FAKEZOOKEEPER_CLIENT</name>
+ <name>ZOOKEEPER_CLIENT</name>
<displayName>FAKEZooKeeper Client</displayName>
<category>CLIENT</category>
<cardinality>1+</cardinality>
http://git-wip-us.apache.org/repos/asf/ambari/blob/6e2a2855/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/package/scripts/zookeeper_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/package/scripts/zookeeper_client.py b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/package/scripts/zookeeper_client.py
index 78cee4d..25b2409 100644
--- a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/package/scripts/zookeeper_client.py
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/package/scripts/zookeeper_client.py
@@ -32,7 +32,7 @@ class ZookeeperClient(Dummy):
def __init__(self):
super(ZookeeperClient, self).__init__()
- self.component_name = "FAKEZOOKEEPER_CLIENT"
+ self.component_name = "ZOOKEEPER_CLIENT"
if __name__ == "__main__":
ZookeeperClient().execute()
http://git-wip-us.apache.org/repos/asf/ambari/blob/6e2a2855/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/package/scripts/zookeeper_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/package/scripts/zookeeper_server.py b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/package/scripts/zookeeper_server.py
index 4373205..6ab88bb 100644
--- a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/package/scripts/zookeeper_server.py
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/package/scripts/zookeeper_server.py
@@ -32,7 +32,7 @@ class ZookeeperServer(Dummy):
def __init__(self):
super(ZookeeperServer, self).__init__()
- self.component_name = "FAKEZOOKEEPER_SERVER"
+ self.component_name = "ZOOKEEPER_SERVER"
self.principal_conf_name = "zookeeper-env"
self.principal_name = "zookeeper_principal_name"
self.keytab_conf_name = "zookeeper-env"
http://git-wip-us.apache.org/repos/asf/ambari/blob/6e2a2855/ambari-server/src/main/resources/stacks/PERF/1.0/services/stack_advisor.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/stack_advisor.py b/ambari-server/src/main/resources/stacks/PERF/1.0/services/stack_advisor.py
new file mode 100644
index 0000000..43d417e
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/stack_advisor.py
@@ -0,0 +1,37 @@
+#!/usr/bin/env ambari-python-wrap
+"""
+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.
+"""
+
+# Python Imports
+
+# Local Imports
+from resource_management.core.logger import Logger
+from stack_advisor import DefaultStackAdvisor
+
+
+class PERF10StackAdvisor(DefaultStackAdvisor):
+
+ def __init__(self):
+ super(PERF10StackAdvisor, self).__init__()
+ Logger.initialize_logger()
+
+ def getServiceConfigurationRecommenderDict(self):
+ return {}
+
+ def getServiceConfigurationValidators(self):
+ return {}
\ No newline at end of file