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

[1/2] ambari git commit: AMBARI-5265. Add Accumulo to Ambari stack definition (Billie Rinaldi via smohanty)

Repository: ambari
Updated Branches:
  refs/heads/trunk 75e982a9d -> 08dd22f94


http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/auditLog.xml.j2
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/auditLog.xml.j2 b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/auditLog.xml.j2
new file mode 100644
index 0000000..020bc1d
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/auditLog.xml.j2
@@ -0,0 +1,35 @@
+<?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.
+-->
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+
+    <!--  Write out Audit info to an Audit file -->
+    <appender name="Audit" class="org.apache.log4j.DailyRollingFileAppender">
+        <param name="File"           value="${org.apache.accumulo.core.dir.log}/${org.apache.accumulo.core.ip.localhost.hostname}.audit"/>
+        <param name="MaxBackupIndex" value="10"/>
+        <param name="DatePattern" value="'.'yyyy-MM-dd"/>
+        <layout class="org.apache.log4j.PatternLayout">
+            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS/Z} [%c{2}] %-5p: %m%n"/>
+        </layout>
+    </appender>
+    <logger name="Audit"  additivity="false">
+        <appender-ref ref="Audit" />
+        <level value="{{audit_log_level}}"/>
+    </logger>
+
+</log4j:configuration>

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/generic_logger.xml.j2
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/generic_logger.xml.j2 b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/generic_logger.xml.j2
new file mode 100644
index 0000000..c2bb323
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/generic_logger.xml.j2
@@ -0,0 +1,83 @@
+<?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.
+-->
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+
+  <!-- Write out everything at the DEBUG level to the debug log -->
+  <appender name="A2" class="org.apache.log4j.RollingFileAppender">
+     <param name="File"           value="${org.apache.accumulo.core.dir.log}/${org.apache.accumulo.core.application}_${org.apache.accumulo.core.ip.localhost.hostname}.debug.log"/>
+     <param name="MaxFileSize"    value="{{debug_log_size}}"/>
+     <param name="MaxBackupIndex" value="{{debug_num_logs}}"/>
+     <param name="Threshold"      value="DEBUG"/>
+     <layout class="org.apache.log4j.PatternLayout">
+       <param name="ConversionPattern" value="%d{ISO8601} [%-8c{2}] %-5p: %m%n"/>
+     </layout>
+  </appender>
+
+  <!--  Write out INFO and higher to the regular log -->
+  <appender name="A3" class="org.apache.log4j.RollingFileAppender">
+     <param name="File"           value="${org.apache.accumulo.core.dir.log}/${org.apache.accumulo.core.application}_${org.apache.accumulo.core.ip.localhost.hostname}.log"/>
+     <param name="MaxFileSize"    value="{{info_log_size}}"/>
+     <param name="MaxBackupIndex" value="{{info_num_logs}}"/>
+     <param name="Threshold"      value="INFO"/>
+     <layout class="org.apache.log4j.PatternLayout">
+       <param name="ConversionPattern" value="%d{ISO8601} [%-8c{2}] %-5p: %m%n"/>
+     </layout>
+  </appender>
+
+  <!-- Send all logging data to a centralized logger -->
+  <appender name="N1" class="org.apache.log4j.net.SocketAppender">
+     <param name="remoteHost"     value="${org.apache.accumulo.core.host.log}"/>
+     <param name="port"           value="${org.apache.accumulo.core.host.log.port}"/>
+     <param name="application"    value="${org.apache.accumulo.core.application}:${org.apache.accumulo.core.ip.localhost.hostname}"/>
+     <param name="Threshold"      value="{{monitor_forwarding_log_level}}"/>
+  </appender>
+
+  <!--  If the centralized logger is down, buffer the log events, but drop them if it stays down -->
+  <appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
+     <appender-ref ref="N1" />
+  </appender>
+
+  <!-- Log accumulo events to the debug, normal and remote logs. -->
+  <logger name="org.apache.accumulo" additivity="false">
+     <level value="DEBUG"/>
+     <appender-ref ref="A2" />
+     <appender-ref ref="A3" />
+     <appender-ref ref="ASYNC" />
+  </logger>
+
+  <logger name="org.apache.accumulo.core.file.rfile.bcfile">
+     <level value="INFO"/>
+  </logger>
+
+  <logger name="org.mortbay.log">
+     <level value="WARN"/>
+  </logger>
+
+  <logger name="org.apache.zookeeper">
+     <level value="ERROR"/>
+  </logger>
+
+  <!-- Log non-accumulo events to the debug and normal logs. -->
+  <root>
+     <level value="INFO"/>
+     <appender-ref ref="A2" />
+     <appender-ref ref="A3" />
+  </root>
+
+</log4j:configuration>

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/hadoop-metrics2-accumulo.properties.j2
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/hadoop-metrics2-accumulo.properties.j2 b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/hadoop-metrics2-accumulo.properties.j2
new file mode 100644
index 0000000..86738fe
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/hadoop-metrics2-accumulo.properties.j2
@@ -0,0 +1,47 @@
+# 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.
+
+# Poll collectors every ten seconds
+*.period=60
+
+{% if has_metric_collector %}
+
+*.timeline.plugin.urls=file:///usr/lib/ambari-metrics-hadoop-sink/ambari-metrics-hadoop-sink.jar
+*.sink.timeline.slave.host.name={{hostname}}
+accumulo.class=org.apache.hadoop.metrics2.sink.timeline.HadoopTimelineMetricsSink
+accumulo.period=10
+accumulo.collector={{metric_collector_host}}:{{metric_collector_port}}
+
+jvm.class=org.apache.hadoop.metrics2.sink.timeline.HadoopTimelineMetricsSink
+jvm.period=10
+jvm.collector={{metric_collector_host}}:{{metric_collector_port}}
+
+rpc.class=org.apache.hadoop.metrics2.sink.timeline.HadoopTimelineMetricsSink
+rpc.period=10
+rpc.collector={{metric_collector_host}}:{{metric_collector_port}}
+
+accumulo.sink.timeline.class=org.apache.hadoop.metrics2.sink.timeline.HadoopTimelineMetricsSink
+accumulo.sink.timeline.period=10
+accumulo.sink.timeline.collector={{metric_collector_host}}:{{metric_collector_port}}
+accumulo.sink.timeline.serviceName-prefix={{instance_name}}
+
+{% else %}
+
+accumulo.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
+accumulo.sink.ganglia.period=10
+accumulo.sink.ganglia.servers={{ganglia_server_host}}:8666
+
+{% endif %}
+

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/monitor_logger.xml.j2
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/monitor_logger.xml.j2 b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/monitor_logger.xml.j2
new file mode 100644
index 0000000..952a9d2
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/monitor_logger.xml.j2
@@ -0,0 +1,64 @@
+<?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.
+-->
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+
+  <!-- Write out everything at the DEBUG level to the debug log -->
+  <appender name="A2" class="org.apache.log4j.RollingFileAppender">
+     <param name="File"           value="${org.apache.accumulo.core.dir.log}/${org.apache.accumulo.core.application}_${org.apache.accumulo.core.ip.localhost.hostname}.debug.log"/>
+     <param name="MaxFileSize"    value="100MB"/>
+     <param name="MaxBackupIndex" value="10"/>
+     <param name="Threshold"      value="DEBUG"/>
+     <layout class="org.apache.log4j.PatternLayout">
+       <param name="ConversionPattern" value="%d{ISO8601} [%-8c{2}] %-5p: %X{application} %m%n"/>
+     </layout>
+  </appender>
+
+  <!--  Write out INFO and higher to the regular log -->
+  <appender name="A3" class="org.apache.log4j.RollingFileAppender">
+     <param name="File"           value="${org.apache.accumulo.core.dir.log}/${org.apache.accumulo.core.application}_${org.apache.accumulo.core.ip.localhost.hostname}.log"/>
+     <param name="MaxFileSize"    value="100MB"/>
+     <param name="MaxBackupIndex" value="10"/>
+     <param name="Threshold"      value="INFO"/>
+     <layout class="org.apache.log4j.PatternLayout">
+       <param name="ConversionPattern" value="%d{ISO8601} [%-8c{2}] %-5p: %X{application} %m%n"/>
+     </layout>
+  </appender>
+
+  <!-- Keep the last few log messages for display to the user -->
+  <appender name="GUI" class="org.apache.accumulo.server.monitor.LogService">
+     <param name="keep"      value="40"/>
+     <param name="Threshold" value="{{monitor_forwarding_log_level}}"/>
+  </appender>
+
+  <!-- Log accumulo messages to debug, normal and GUI -->
+  <logger name="org.apache.accumulo" additivity="false">
+     <level value="DEBUG"/>
+     <appender-ref ref="A2" />
+     <appender-ref ref="A3" />
+     <appender-ref ref="GUI" />
+  </logger>
+
+  <!-- Log non-accumulo messages to debug, normal logs. -->
+  <root>
+     <level value="INFO"/>
+     <appender-ref ref="A2" />
+     <appender-ref ref="A3" />
+  </root>
+
+</log4j:configuration>

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/role_command_order.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/role_command_order.json b/ambari-server/src/main/resources/role_command_order.json
index 1404ef6..650e2e7 100644
--- a/ambari-server/src/main/resources/role_command_order.json
+++ b/ambari-server/src/main/resources/role_command_order.json
@@ -11,6 +11,11 @@
     "HIVE_SERVER-START": ["TASKTRACKER-START", "MYSQL_SERVER-START"],
     "HUE_SERVER-START": ["HIVE_SERVER-START", "HCAT-START", "OOZIE_SERVER-START"],
     "FLUME_HANDLER-START": ["OOZIE_SERVER-START"],
+    "ACCUMULO_MASTER-START": ["ZOOKEEPER_SERVER-START", "NAMENODE-START", "DATANODE-START"],
+    "ACCUMULO_TSERVER-START": ["ACCUMULO_MASTER-START"],
+    "ACCUMULO_MONITOR-START": ["ACCUMULO_MASTER-START"],
+    "ACCUMULO_GC-START": ["ACCUMULO_MASTER-START"],
+    "ACCUMULO_TRACER-START": ["ACCUMULO_MASTER-START", "ACCUMULO_TSERVER-START"],
     "MAPREDUCE_SERVICE_CHECK-SERVICE_CHECK": ["JOBTRACKER-START", "TASKTRACKER-START"],
     "OOZIE_SERVICE_CHECK-SERVICE_CHECK": ["OOZIE_SERVER-START"],
     "WEBHCAT_SERVICE_CHECK-SERVICE_CHECK": ["WEBHCAT_SERVER-START"],
@@ -19,9 +24,11 @@
     "HCAT_SERVICE_CHECK-SERVICE_CHECK": ["HIVE_SERVER-START"],
     "PIG_SERVICE_CHECK-SERVICE_CHECK": ["JOBTRACKER-START", "TASKTRACKER-START"],
     "SQOOP_SERVICE_CHECK-SERVICE_CHECK": ["JOBTRACKER-START", "TASKTRACKER-START"],
+    "ACCUMULO_SERVICE_CHECK-SERVICE_CHECK": ["ACCUMULO_MASTER-START", "ACCUMULO_TSERVER-START", "ACCUMULO_TRACER-START"],
     "ZOOKEEPER_SERVICE_CHECK-SERVICE_CHECK": ["ZOOKEEPER_SERVER-START"],
     "ZOOKEEPER_QUORUM_SERVICE_CHECK-SERVICE_CHECK": ["ZOOKEEPER_SERVER-START"],
-    "ZOOKEEPER_SERVER-STOP" : ["HBASE_MASTER-STOP", "HBASE_REGIONSERVER-STOP"],
+    "ZOOKEEPER_SERVER-STOP" : ["HBASE_MASTER-STOP", "HBASE_REGIONSERVER-STOP", "ACCUMULO_MASTER-STOP", "ACCUMULO_TSERVER-STOP", "ACCUMULO_GC-STOP"],
+    "ACCUMULO_MASTER-STOP" : ["ACCUMULO_TSERVER-STOP", "ACCUMULO_TRACER-STOP", "ACCUMULO_GC-STOP"],
     "HBASE_MASTER-STOP": ["HBASE_REGIONSERVER-STOP"],
     "TASKTRACKER-UPGRADE": ["JOBTRACKER-UPGRADE"],
     "MAPREDUCE_CLIENT-UPGRADE": ["TASKTRACKER-UPGRADE", "JOBTRACKER-UPGRADE"],

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/stacks/HDP/2.2/role_command_order.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/role_command_order.json b/ambari-server/src/main/resources/stacks/HDP/2.2/role_command_order.json
index c86e2b1..2e2aef6 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.2/role_command_order.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.2/role_command_order.json
@@ -3,6 +3,13 @@
   "_comment" : "blockedRole-blockedCommand: [blockerRole1-blockerCommand1, blockerRole2-blockerCommand2, ...]",
   "general_deps" : {
     "_comment" : "dependencies for all cases",
+    "ACCUMULO_MASTER-START": ["ZOOKEEPER_SERVER-START", "NAMENODE-START", "DATANODE-START"],
+    "ACCUMULO_TSERVER-START": ["ACCUMULO_MASTER-START"],
+    "ACCUMULO_MONITOR-START": ["ACCUMULO_MASTER-START"],
+    "ACCUMULO_GC-START": ["ACCUMULO_MASTER-START"],
+    "ACCUMULO_TRACER-START": ["ACCUMULO_MASTER-START", "ACCUMULO_TSERVER-START"],
+    "ACCUMULO_MASTER-STOP" : ["ACCUMULO_TSERVER-STOP", "ACCUMULO_TRACER-STOP", "ACCUMULO_GC-STOP"],
+    "ACCUMULO_SERVICE_CHECK-SERVICE_CHECK": ["ACCUMULO_MASTER-START", "ACCUMULO_TSERVER-START", "ACCUMULO_TRACER-START"],
     "RANGER_SERVICE_CHECK-SERVICE_CHECK" : ["RANGER_ADMIN-START"],
     "RANGER_SERVICE_CHECK-SERVICE_CHECK" : ["RANGER_USERSYNC-START"],
     "SPARK_SERVICE_CHECK-SERVICE_CHECK" : ["SPARK_JOBHISTORYSERVER-START", "APP_TIMELINE_SERVER-START"], 

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/stacks/HDP/2.2/services/ACCUMULO/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/services/ACCUMULO/metainfo.xml b/ambari-server/src/main/resources/stacks/HDP/2.2/services/ACCUMULO/metainfo.xml
new file mode 100644
index 0000000..a792d27
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.2/services/ACCUMULO/metainfo.xml
@@ -0,0 +1,46 @@
+<?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>ACCUMULO</name>
+      <extends>common-services/ACCUMULO/1.6.1.2.2.0</extends>
+
+      <osSpecifics>
+        <osSpecific>
+          <osFamily>redhat5,redhat6,suse11</osFamily>
+          <packages>
+            <package>
+              <name>accumulo_2_2_*</name>
+            </package>
+          </packages>
+        </osSpecific>
+        <osSpecific>
+          <osFamily>ubuntu12</osFamily>
+          <packages>
+            <package>
+              <name>accumulo-2-2-.*</name>
+            </package>
+          </packages>
+        </osSpecific>
+      </osSpecifics>
+
+    </service>
+  </services>
+</metainfo>

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/test/java/org/apache/ambari/server/metadata/RoleCommandOrderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/metadata/RoleCommandOrderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/metadata/RoleCommandOrderTest.java
index ff5539f..47c8e53 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/metadata/RoleCommandOrderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/metadata/RoleCommandOrderTest.java
@@ -109,8 +109,6 @@ public class RoleCommandOrderTest {
     assertFalse(dependenciesContainBlockedRole(deps, Role.HDFS_SERVICE_CHECK));
     assertFalse(dependenciesContainBlockedRole(deps, Role.HDFS_CLIENT));
     // Checking blocker roles
-    assertFalse(dependenciesContainBlockerRole(deps, Role.DATANODE));
-    assertFalse(dependenciesContainBlockerRole(deps, Role.NAMENODE));
     assertFalse(dependenciesContainBlockerRole(deps, Role.SECONDARY_NAMENODE));
     assertFalse(dependenciesContainBlockerRole(deps, Role.JOURNALNODE));
     assertFalse(dependenciesContainBlockerRole(deps, Role.NAMENODE_SERVICE_CHECK));


[2/2] ambari git commit: AMBARI-5265. Add Accumulo to Ambari stack definition (Billie Rinaldi via smohanty)

Posted by sm...@apache.org.
AMBARI-5265. Add Accumulo to Ambari stack definition (Billie Rinaldi via smohanty)


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

Branch: refs/heads/trunk
Commit: 08dd22f940b5669ff3e4e9d001687d668b7e3c25
Parents: 75e982a
Author: Sumit Mohanty <sm...@hortonworks.com>
Authored: Tue Mar 10 21:35:41 2015 -0700
Committer: Sumit Mohanty <sm...@hortonworks.com>
Committed: Tue Mar 10 21:35:41 2015 -0700

----------------------------------------------------------------------
 .../ACCUMULO/1.6.1.2.2.0/alerts.json            | 139 ++++++++++
 .../1.6.1.2.2.0/configuration/accumulo-env.xml  | 136 ++++++++++
 .../configuration/accumulo-log4j.xml            | 112 +++++++++
 .../1.6.1.2.2.0/configuration/accumulo-site.xml | 180 +++++++++++++
 .../ACCUMULO/1.6.1.2.2.0/kerberos.json          |  93 +++++++
 .../ACCUMULO/1.6.1.2.2.0/metainfo.xml           | 161 ++++++++++++
 .../package/files/accumulo-metrics.xml          |  60 +++++
 .../ACCUMULO/1.6.1.2.2.0/package/files/gc       |  16 ++
 .../ACCUMULO/1.6.1.2.2.0/package/files/masters  |  16 ++
 .../ACCUMULO/1.6.1.2.2.0/package/files/monitor  |  16 ++
 .../ACCUMULO/1.6.1.2.2.0/package/files/slaves   |  16 ++
 .../ACCUMULO/1.6.1.2.2.0/package/files/tracers  |  16 ++
 .../1.6.1.2.2.0/package/scripts/__init__.py     |  19 ++
 .../1.6.1.2.2.0/package/scripts/accumulo.py     | 120 +++++++++
 .../package/scripts/accumulo_client.py          |  45 ++++
 .../package/scripts/accumulo_configuration.py   | 252 +++++++++++++++++++
 .../1.6.1.2.2.0/package/scripts/accumulo_gc.py  |  24 ++
 .../package/scripts/accumulo_master.py          |  24 ++
 .../package/scripts/accumulo_monitor.py         |  24 ++
 .../package/scripts/accumulo_script.py          | 117 +++++++++
 .../package/scripts/accumulo_service.py         |  71 ++++++
 .../package/scripts/accumulo_tracer.py          |  24 ++
 .../package/scripts/accumulo_tserver.py         |  24 ++
 .../1.6.1.2.2.0/package/scripts/params.py       | 125 +++++++++
 .../package/scripts/service_check.py            |  59 +++++
 .../package/scripts/status_params.py            |  33 +++
 .../package/templates/auditLog.xml.j2           |  35 +++
 .../package/templates/generic_logger.xml.j2     |  83 ++++++
 .../hadoop-metrics2-accumulo.properties.j2      |  47 ++++
 .../package/templates/monitor_logger.xml.j2     |  64 +++++
 .../src/main/resources/role_command_order.json  |   9 +-
 .../stacks/HDP/2.2/role_command_order.json      |   7 +
 .../HDP/2.2/services/ACCUMULO/metainfo.xml      |  46 ++++
 .../server/metadata/RoleCommandOrderTest.java   |   2 -
 34 files changed, 2212 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/alerts.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/alerts.json b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/alerts.json
new file mode 100644
index 0000000..ac09dc6
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/alerts.json
@@ -0,0 +1,139 @@
+{
+  "ACCUMULO": {
+    "ACCUMULO_MASTER": [
+      {
+        "name": "accumulo_master_process",
+        "label": "Accumulo Master Process",
+        "description": "This alert is triggered if the Accumulo master process cannot be confirmed to be up and listening on the network for the configured critical threshold, given in seconds.",
+        "interval": 1,
+        "scope": "ANY",
+        "source": {
+          "type": "PORT",
+          "uri": "{{accumulo-site/master.port.client}}",
+          "default_port": 9999,
+          "reporting": {
+            "ok": {
+              "text": "TCP OK - {0:.3f}s response on port {1}"
+            },
+            "warning": {
+              "text": "TCP OK - {0:.3f}s response on port {1}",
+              "value": 1.5
+            },
+            "critical": {
+              "text": "Connection failed: {0} to {1}:{2}",
+              "value": 5.0
+            }
+          }
+        }
+      }
+    ],
+    "ACCUMULO_TSERVER": [
+      {
+        "name": "accumulo_tserver_process",
+        "label": "Accumulo TServer Process",
+        "description": "This host-level alert is triggered if the TServer processes cannot be confirmed to be up and listening on the network for the configured critical threshold, given in seconds.",
+        "interval": 1,
+        "scope": "HOST",
+        "source": {
+          "type": "PORT",
+          "uri": "{{accumulo-site/tserver.port.client}}",
+          "default_port": 9997,
+          "reporting": {
+            "ok": {
+              "text": "TCP OK - {0:.3f}s response on port {1}"
+            },
+            "warning": {
+              "text": "TCP OK - {0:.3f}s response on port {1}",
+              "value": 1.5
+            },
+            "critical": {
+              "text": "Connection failed: {0} to {1}:{2}",
+              "value": 5.0
+            }
+          }
+        }
+      }
+    ],
+    "ACCUMULO_GC": [
+      {
+        "name": "accumulo_gc_process",
+        "label": "Accumulo GC Process",
+        "description": "This host-level alert is triggered if the GC process cannot be confirmed to be up and listening on the network for the configured critical threshold, given in seconds.",
+        "interval": 1,
+        "scope": "HOST",
+        "source": {
+          "type": "PORT",
+          "uri": "{{accumulo-site/gc.port.client}}",
+          "default_port": 50091,
+          "reporting": {
+            "ok": {
+              "text": "TCP OK - {0:.3f}s response on port {1}"
+            },
+            "warning": {
+              "text": "TCP OK - {0:.3f}s response on port {1}",
+              "value": 1.5
+            },
+            "critical": {
+              "text": "Connection failed: {0} to {1}:{2}",
+              "value": 5.0
+            }
+          }
+        }
+      }
+    ],
+    "ACCUMULO_MONITOR": [
+      {
+        "name": "accumulo_monitor_process",
+        "label": "Accumulo Monitor Process",
+        "description": "This host-level alert is triggered if the Monitor process cannot be confirmed to be up and listening on the network for the configured critical threshold, given in seconds.",
+        "interval": 1,
+        "scope": "HOST",
+        "source": {
+          "type": "PORT",
+          "uri": "{{accumulo-site/monitor.port.client}}",
+          "default_port": 50095,
+          "reporting": {
+            "ok": {
+              "text": "TCP OK - {0:.3f}s response on port {1}"
+            },
+            "warning": {
+              "text": "TCP OK - {0:.3f}s response on port {1}",
+              "value": 1.5
+            },
+            "critical": {
+              "text": "Connection failed: {0} to {1}:{2}",
+              "value": 5.0
+            }
+          }
+        }
+      }
+    ],
+    "ACCUMULO_TRACER": [
+      {
+        "name": "accumulo_tracer_process",
+        "label": "Accumulo Tracer Process",
+        "description": "This host-level alert is triggered if the Tracer process cannot be confirmed to be up and listening on the network for the configured critical threshold, given in seconds.",
+        "interval": 1,
+        "scope": "HOST",
+        "source": {
+          "type": "PORT",
+          "uri": "{{accumulo-site/trace.port.client}}",
+          "default_port": 12234,
+          "reporting": {
+            "ok": {
+              "text": "TCP OK - {0:.3f}s response on port {1}"
+            },
+            "warning": {
+              "text": "TCP OK - {0:.3f}s response on port {1}",
+              "value": 1.5
+            },
+            "critical": {
+              "text": "Connection failed: {0} to {1}:{2}",
+              "value": 5.0
+            }
+          }
+        }
+      }
+    ]
+  }
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/configuration/accumulo-env.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/configuration/accumulo-env.xml b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/configuration/accumulo-env.xml
new file mode 100644
index 0000000..dfec771
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/configuration/accumulo-env.xml
@@ -0,0 +1,136 @@
+<?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 require-input="true">
+    <name>accumulo_root_password</name>
+    <value></value>
+    <property-type>PASSWORD</property-type>
+    <description>Password for the Accumulo root user. This password will be
+      used to initialize Accumulo and to create the trace user. Changing this
+      will not change the password for the Accumulo root user.</description>
+  </property>
+  <property require-input="true">
+    <name>instance_secret</name>
+    <value></value>
+    <property-type>PASSWORD</property-type>
+    <description>A secret unique to a given instance that all Accumulo server
+      processes must know in order to communicate with one
+      another.</description>
+  </property>
+  <property require-input="false">
+    <name>trace_password</name>
+    <value>trace</value>
+    <property-type>PASSWORD</property-type>
+    <description>Password for the trace user. The trace user will be created
+      with this password if that user does not already exist. Changing this
+      will not change the password for the trace user.</description>
+  </property>
+  <property>
+    <name>accumulo_log_dir</name>
+    <value>/var/log/accumulo</value>
+    <description>Log Directories for Accumulo.</description>
+  </property>
+  <property>
+    <name>accumulo_pid_dir</name>
+    <value>/var/run/accumulo</value>
+    <description>Pid Directory for Accumulo.</description>
+  </property>
+  <property>
+    <name>accumulo_instance_name</name>
+    <value>hdp-accumulo-instance</value>
+    <description>Accumulo Instance Name.</description>
+  </property>
+  <property>
+    <name>accumulo_user</name>
+    <value>accumulo</value>
+    <property-type>USER</property-type>
+    <description>Accumulo User Name.</description>
+  </property>
+  <property>
+    <name>master_heapsize</name>
+    <value>128m</value>
+    <description>Accumulo Master Heap Size.</description>
+  </property>
+  <property>
+    <name>tserver_heapsize</name>
+    <value>256m</value>
+    <description>Accumulo Tablet Server Heap Size.</description>
+  </property>
+  <property>
+    <name>monitor_heapsize</name>
+    <value>64m</value>
+    <description>Accumulo Monitor Heap Size.</description>
+  </property>
+  <property>
+    <name>gc_heapsize</name>
+    <value>64m</value>
+    <description>Accumulo Garbage Collector Heap Size.</description>
+  </property>
+  <property>
+    <name>other_heapsize</name>
+    <value>128m</value>
+    <description>Accumulo Other Heap Size.</description>
+  </property>
+  <property>
+    <name>content</name>
+    <description>The template for a client accumulo-env.sh file.</description>
+    <value>
+#! /usr/bin/env bash
+export HADOOP_PREFIX={{hadoop_prefix}}
+export HADOOP_CONF_DIR={{hadoop_conf_dir}}
+export JAVA_HOME={{java64_home}}
+export ZOOKEEPER_HOME={{zookeeper_home}}
+export ACCUMULO_LOG_DIR={{log_dir}}
+export ACCUMULO_CONF_DIR={{conf_dir}}
+export ACCUMULO_TSERVER_OPTS="-Xmx{{tserver_heapsize}} -Xms{{tserver_heapsize}}"
+export ACCUMULO_MASTER_OPTS="-Xmx{{master_heapsize}} -Xms{{master_heapsize}}"
+export ACCUMULO_MONITOR_OPTS="-Xmx{{monitor_heapsize}} -Xms{{monitor_heapsize}}"
+export ACCUMULO_GC_OPTS="-Xmx{{gc_heapsize}} -Xms{{gc_heapsize}}"
+export ACCUMULO_GENERAL_OPTS="-XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -Djava.net.preferIPv4Stack=true"
+export ACCUMULO_OTHER_OPTS="-Xmx{{other_heapsize}} -Xms{{other_heapsize}}"
+# what do when the JVM runs out of heap memory
+export ACCUMULO_KILL_CMD='kill -9 %p'
+    </value>
+  </property>
+  <property>
+    <name>server_content</name>
+    <description>The template for a server accumulo-env.sh file.</description>
+    <value>
+#! /usr/bin/env bash
+export HADOOP_PREFIX={{hadoop_prefix}}
+export HADOOP_CONF_DIR={{hadoop_conf_dir}}
+export JAVA_HOME={{java64_home}}
+export ZOOKEEPER_HOME={{zookeeper_home}}
+export ACCUMULO_LOG_DIR={{log_dir}}
+export ACCUMULO_CONF_DIR={{server_conf_dir}}
+export ACCUMULO_TSERVER_OPTS="-Xmx{{tserver_heapsize}} -Xms{{tserver_heapsize}}"
+export ACCUMULO_MASTER_OPTS="-Xmx{{master_heapsize}} -Xms{{master_heapsize}}"
+export ACCUMULO_MONITOR_OPTS="-Xmx{{monitor_heapsize}} -Xms{{monitor_heapsize}}"
+export ACCUMULO_GC_OPTS="-Xmx{{gc_heapsize}} -Xms{{gc_heapsize}}"
+export ACCUMULO_GENERAL_OPTS="-XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -Djava.net.preferIPv4Stack=true"
+export ACCUMULO_OTHER_OPTS="-Xmx{{other_heapsize}} -Xms{{other_heapsize}}"
+# what do when the JVM runs out of heap memory
+export ACCUMULO_KILL_CMD='kill -9 %p'
+    </value>
+  </property>
+</configuration>

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/configuration/accumulo-log4j.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/configuration/accumulo-log4j.xml b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/configuration/accumulo-log4j.xml
new file mode 100644
index 0000000..4845028
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/configuration/accumulo-log4j.xml
@@ -0,0 +1,112 @@
+<?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>audit_log_level</name>
+    <value>OFF</value>
+    <description>Log level for audit logging</description>
+  </property>
+
+  <property>
+    <name>monitor_forwarding_log_level</name>
+    <value>WARN</value>
+    <description>Log level for logging forwarded to the Accumulo
+      Monitor</description>
+  </property>
+
+  <property>
+    <name>debug_log_size</name>
+    <value>1000M</value>
+    <description>Size of each debug rolling log file</description>
+  </property>
+
+  <property>
+    <name>debug_num_logs</name>
+    <value>10</value>
+    <description>Number of rolling debug log files to keep</description>
+  </property>
+
+  <property>
+    <name>info_log_size</name>
+    <value>1000M</value>
+    <description>Size of each info rolling log file</description>
+  </property>
+
+  <property>
+    <name>info_num_logs</name>
+    <value>10</value>
+    <description>Number of rolling info log files to keep</description>
+  </property>
+
+  <property>
+    <name>content</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.
+
+# default logging properties:
+#  by default, log everything at INFO or higher to the console
+log4j.rootLogger=INFO,A1
+
+# hide Jetty junk
+log4j.logger.org.mortbay.log=WARN,A1
+
+# hide "Got brand-new compressor" messages
+log4j.logger.org.apache.hadoop.io.compress=WARN,A1
+log4j.logger.org.apache.accumulo.core.file.rfile.bcfile.Compression=WARN,A1
+
+# hide junk from TestRandomDeletes
+log4j.logger.org.apache.accumulo.test.TestRandomDeletes=WARN,A1
+
+# hide junk from VFS
+log4j.logger.org.apache.commons.vfs2.impl.DefaultFileSystemManager=WARN,A1
+
+# hide almost everything from zookeeper
+log4j.logger.org.apache.zookeeper=ERROR,A1
+
+# hide AUDIT messages in the shell, alternatively you could send them to a different logger
+log4j.logger.org.apache.accumulo.core.util.shell.Shell.audit=WARN,A1
+
+# Send most things to the console
+log4j.appender.A1=org.apache.log4j.ConsoleAppender
+log4j.appender.A1.layout.ConversionPattern=%d{ISO8601} [%-8c{2}] %-5p: %m%n
+log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+
+    </value>
+  </property>
+
+</configuration>

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/configuration/accumulo-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/configuration/accumulo-site.xml b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/configuration/accumulo-site.xml
new file mode 100644
index 0000000..fbeaad2
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/configuration/accumulo-site.xml
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<configuration>
+  <!-- Put your site-specific accumulo configurations here. The available configuration values along with their defaults are documented in docs/config.html Unless
+    you are simply testing at your workstation, you will most definitely need to change the three entries below. -->
+
+  <property>
+    <name>instance.volumes</name>
+    <value>hdfs://localhost:8020/apps/accumulo/data</value>
+    <description>Location of Accumulo data files in HDFS.</description>
+  </property>
+
+  <property>
+    <name>instance.zookeeper.host</name>
+    <value>localhost:2181</value>
+    <description>Comma-separated list of ZooKeeper server:port
+      pairs.</description>
+  </property>
+
+  <property>
+    <name>instance.zookeeper.timeout</name>
+    <value>30s</value>
+    <description>Timeout for zookeeper connections.</description>
+  </property>
+
+  <property>
+    <name>general.kerberos.principal</name>
+    <value>*</value>
+    <description>Name of the kerberos principal to use.</description>
+  </property>
+
+  <property>
+    <name>general.kerberos.keytab</name>
+    <value>*</value>
+    <description>Path to the kerberos keytab to use.</description>
+  </property>
+
+  <property>
+    <name>instance.rpc.ssl.enabled</name>
+    <value>false</value>
+    <description>Controls whether or not SSL is enabled for
+      Accumulo RPC.</description>
+  </property>
+
+  <property>
+    <name>instance.rpc.ssl.clientAuth</name>
+    <value>false</value>
+    <description>Controls whether or not client authentication is required
+      when SSL is enabled for Accumulo.</description>
+  </property>
+
+  <property>
+    <name>tserver.memory.maps.max</name>
+    <value>80M</value>
+    <description>Amount of memory to use for Accumulo's in-memory
+      map, where incoming writes are sorted.  If native maps are enabled
+      (tserver.memory.maps.native.enabled) this memory is
+      off-heap.</description>
+  </property>
+
+  <property>
+    <name>tserver.memory.maps.native.enabled</name>
+    <value>false</value>
+    <description>Controls whether or not native maps are enabled
+      for Accumulo's in-memory map, where incoming writes are
+      sorted (see also tserver.memory.maps.max).</description>
+  </property>
+
+  <property>
+    <name>tserver.cache.data.size</name>
+    <value>7M</value>
+    <description>Size of on-heap block cache for data blocks.</description>
+  </property>
+
+  <property>
+    <name>tserver.cache.index.size</name>
+    <value>20M</value>
+    <description>Size of on-heap block cache for index blocks.</description>
+  </property>
+
+  <property>
+    <name>tserver.sort.buffer.size</name>
+    <value>50M</value>
+    <description>Size of on-heap block cache for data blocks.</description>
+  </property>
+
+  <property>
+    <name>tserver.walog.max.size</name>
+    <value>40M</value>
+    <description>Amount of memory to use for sorting walogs when
+      recovering from tserver failure.</description>
+  </property>
+
+  <property>
+    <name>master.port.client</name>
+    <value>9999</value>
+    <description>Port for client connections to the master.</description>
+  </property>
+
+  <property>
+    <name>trace.port.client</name>
+    <value>12234</value>
+    <description>Port for client connections to the master.</description>
+  </property>
+
+  <property>
+    <name>tserver.port.client</name>
+    <value>9997</value>
+    <description>Port for delivering tracing data to the tracer
+      process.</description>
+  </property>
+
+  <property>
+    <name>gc.port.client</name>
+    <value>50091</value>
+    <description>Port for monitoring the Accumulo garbage
+      collector.</description>
+  </property>
+
+  <property>
+    <name>monitor.port.client</name>
+    <value>50095</value>
+    <description>Port for the Accumulo monitor UI.</description>
+  </property>
+
+  <property>
+    <name>monitor.port.log4j</name>
+    <value>4560</value>
+    <description>Port for delivering logs for aggregation by the
+      Accumulo monitor.</description>
+  </property>
+
+  <property>
+    <name>trace.user</name>
+    <value>trace</value>
+    <description>User that the tracer process uses to write
+      tracing data to Accumulo.</description>
+  </property>
+
+  <property>
+    <name>general.classpaths</name>
+    <value>
+      $ACCUMULO_HOME/lib/accumulo-server.jar,
+      $ACCUMULO_HOME/lib/accumulo-core.jar,
+      $ACCUMULO_HOME/lib/accumulo-start.jar,
+      $ACCUMULO_HOME/lib/accumulo-fate.jar,
+      $ACCUMULO_HOME/lib/accumulo-proxy.jar,
+      $ACCUMULO_HOME/lib/[^.].*.jar,
+      $ZOOKEEPER_HOME/zookeeper[^.].*.jar,
+      $HADOOP_CONF_DIR,
+      /usr/hdp/current/hadoop-client/[^.].*.jar,
+      /usr/hdp/current/hadoop-client/lib/(?!slf4j)[^.].*.jar,
+      /usr/hdp/current/hadoop-hdfs-client/[^.].*.jar,
+      /usr/hdp/current/hadoop-mapreduce-client/[^.].*.jar,
+      /usr/hdp/current/hadoop-yarn-client/[^.].*.jar,
+      /usr/hdp/current/hadoop-yarn-client/lib/jersey.*.jar,
+      /usr/hdp/current/hive-client/lib/hive-accumulo-handler.jar,
+    </value>
+    <description>List of jars and directories that will be added to
+      Accumulo's classpath.  Ordering matters, as the entries will be
+      searched in order when attempting to load a class.</description>
+  </property>
+</configuration>

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/kerberos.json b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/kerberos.json
new file mode 100644
index 0000000..4e415e1
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/kerberos.json
@@ -0,0 +1,93 @@
+{
+  "services": [
+    {
+      "name": "ACCUMULO",
+      "identities": [
+        {
+          "name": "accumulo",
+          "principal": {
+            "value": "${accumulo-env/accumulo_user}@${realm}",
+            "type" : "user",
+            "configuration": "accumulo-env/accumulo_principal_name",
+            "local_username": "${accumulo-env/accumulo_user}"
+          },
+          "keytab": {
+            "file": "${keytab_dir}/accumulo.headless.keytab",
+            "owner": {
+              "name": "${accumulo-env/accumulo_user}",
+              "access": "r"
+            },
+            "group": {
+              "name": "${cluster-env/user_group}",
+              "access": "r"
+            },
+            "configuration": "accumulo-env/accumulo_user_keytab"
+          }
+        },
+        {
+          "name": "accumulo_service",
+          "principal": {
+            "value": "${accumulo-env/accumulo_user}/_HOST@${realm}",
+            "type" : "service",
+            "configuration": "accumulo-site/general.kerberos.principal",
+            "local_username": "${accumulo-env/accumulo_user}"
+
+          },
+          "keytab": {
+            "file": "${keytab_dir}/accumulo.service.keytab",
+            "owner": {
+              "name": "${accumulo-env/accumulo_user}",
+              "access": "r"
+            },
+            "group": {
+              "name": "${cluster-env/user_group}",
+              "access": ""
+            },
+            "configuration": "accumulo-site/general.kerberos.keytab"
+          }
+        },
+        {
+          "name": "/hdfs"
+        },
+        {
+          "name": "/smokeuser"
+        }
+      ],
+      "components": [
+        {
+          "name": "ACCUMULO_MASTER",
+          "identities": [
+            {
+              "name": "/accumulo_service"
+            }
+          ]
+        },
+        {
+          "name": "ACCUMULO_TSERVER",
+          "identities": [
+            {
+              "name": "/accumulo_service"
+            }
+          ]
+        },
+        {
+          "name": "ACCUMULO_MONITOR",
+          "identities": [
+            {
+              "name": "/accumulo_service"
+            }
+          ]
+        },
+        {
+          "name": "ACCUMULO_GC",
+          "identities": [
+            {
+              "name": "/accumulo_service"
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
+

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/metainfo.xml b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/metainfo.xml
new file mode 100644
index 0000000..6604e53
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/metainfo.xml
@@ -0,0 +1,161 @@
+<?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>ACCUMULO</name>
+      <displayName>Accumulo</displayName>
+      <comment>Robust, scalable, high performance distributed key/value store.
+      </comment>
+      <version>1.6.1.2.2.0</version>
+      <components>
+        <component>
+          <name>ACCUMULO_MASTER</name>
+          <displayName>Accumulo Master</displayName>
+          <category>MASTER</category>
+          <cardinality>1+</cardinality>
+          <dependencies>
+            <dependency>
+              <name>HDFS/HDFS_CLIENT</name>
+              <scope>host</scope>
+              <auto-deploy>
+                <enabled>true</enabled>
+              </auto-deploy>
+            </dependency>
+            <dependency>
+              <name>ZOOKEEPER/ZOOKEEPER_SERVER</name>
+              <scope>cluster</scope>
+              <auto-deploy>
+                <enabled>true</enabled>
+                <co-locate>ACCUMULO/ACCUMULO_MASTER</co-locate>
+              </auto-deploy>
+            </dependency>
+          </dependencies>
+          <commandScript>
+            <script>scripts/accumulo_master.py</script>
+            <scriptType>PYTHON</scriptType>
+            <timeout>600</timeout>
+          </commandScript>
+        </component>
+
+        <component>
+          <name>ACCUMULO_MONITOR</name>
+          <displayName>Accumulo Monitor</displayName>
+          <category>MASTER</category>
+          <cardinality>1+</cardinality>
+          <commandScript>
+            <script>scripts/accumulo_monitor.py</script>
+            <scriptType>PYTHON</scriptType>
+            <timeout>600</timeout>
+          </commandScript>
+        </component>
+
+        <component>
+          <name>ACCUMULO_GC</name>
+          <displayName>Accumulo GC</displayName>
+          <category>MASTER</category>
+          <cardinality>1+</cardinality>
+          <commandScript>
+            <script>scripts/accumulo_gc.py</script>
+            <scriptType>PYTHON</scriptType>
+            <timeout>600</timeout>
+          </commandScript>
+        </component>
+
+        <component>
+          <name>ACCUMULO_TRACER</name>
+          <displayName>Accumulo Tracer</displayName>
+          <category>MASTER</category>
+          <cardinality>1+</cardinality>
+          <commandScript>
+            <script>scripts/accumulo_tracer.py</script>
+            <scriptType>PYTHON</scriptType>
+          </commandScript>
+        </component>
+
+        <component>
+          <name>ACCUMULO_TSERVER</name>
+          <displayName>Accumulo TServer</displayName>
+          <category>SLAVE</category>
+          <cardinality>1+</cardinality>
+          <commandScript>
+            <script>scripts/accumulo_tserver.py</script>
+            <scriptType>PYTHON</scriptType>
+          </commandScript>
+        </component>
+
+        <component>
+          <name>ACCUMULO_CLIENT</name>
+          <displayName>Accumulo Client</displayName>
+          <category>CLIENT</category>
+          <cardinality>1+</cardinality>
+          <commandScript>
+            <script>scripts/accumulo_client.py</script>
+            <scriptType>PYTHON</scriptType>
+          </commandScript>
+          <configFiles>
+            <configFile>
+              <type>xml</type>
+              <fileName>accumulo-site.xml</fileName>
+              <dictionaryName>accumulo-site</dictionaryName>
+            </configFile>
+            <configFile>
+              <type>env</type>
+              <fileName>accumulo-env.sh</fileName>
+              <dictionaryName>accumulo-env</dictionaryName>
+            </configFile>
+            <configFile>
+              <type>env</type>
+              <fileName>log4j.properties</fileName>
+              <dictionaryName>accumulo-log4j</dictionaryName>
+            </configFile>
+          </configFiles>
+        </component>
+      </components>
+
+      <osSpecifics>
+        <osSpecific>
+          <osFamily>any</osFamily>
+          <packages>
+            <package>
+              <name>accumulo</name>
+            </package>
+          </packages>
+        </osSpecific>
+      </osSpecifics>
+
+      <commandScript>
+        <script>scripts/service_check.py</script>
+        <scriptType>PYTHON</scriptType>
+        <timeout>300</timeout>
+      </commandScript>
+
+      <requiredServices>
+        <service>ZOOKEEPER</service>
+        <service>HDFS</service>
+      </requiredServices>
+
+      <configuration-dependencies>
+        <config-type>accumulo-env</config-type>
+        <config-type>accumulo-site</config-type>
+      </configuration-dependencies>
+
+    </service>
+  </services>
+</metainfo>

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/accumulo-metrics.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/accumulo-metrics.xml b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/accumulo-metrics.xml
new file mode 100644
index 0000000..3b97809
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/accumulo-metrics.xml
@@ -0,0 +1,60 @@
+<!--
+  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.
+-->
+<!--
+  This file follows the conventions for XMLConfiguration files specified in the Apache Commons Configuration 1.5 Library. Changes to this file will be noticed
+  at runtime (see the FileChangedReloadingStrategy class in Commons Configuration).
+-->
+<config>
+<!--
+   Metrics log directory
+-->
+  <logging>
+    <dir>${ACCUMULO_HOME}/metrics</dir>
+  </logging>
+<!--
+ Enable/Disable metrics accumulation on the different servers and their components
+ NOTE: Turning on logging can be expensive because it will use several more file handles and will create a lot of short lived objects.
+-->
+  <master>
+    <enabled type="boolean">false</enabled>
+    <logging type="boolean">false</logging>
+  </master>
+  <tserver>
+    <enabled type="boolean">false</enabled>
+    <logging type="boolean">false</logging>
+    <update>
+      <enabled type="boolean">false</enabled>
+      <logging type="boolean">false</logging>
+    </update>
+    <scan>
+      <enabled type="boolean">false</enabled>
+      <logging type="boolean">false</logging>
+    </scan>
+    <minc>
+      <enabled type="boolean">false</enabled>
+      <logging type="boolean">false</logging>
+    </minc>
+  </tserver>
+  <thrift>
+    <enabled type="boolean">false</enabled>
+    <logging type="boolean">false</logging>
+  </thrift>
+  <replication>
+    <enabled type="boolean">false</enabled>
+    <logging type="boolean">false</logging>
+  </replication>
+</config>

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/gc
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/gc b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/gc
new file mode 100644
index 0000000..63fb8bb
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/gc
@@ -0,0 +1,16 @@
+# 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.
+
+localhost

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/masters
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/masters b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/masters
new file mode 100644
index 0000000..63fb8bb
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/masters
@@ -0,0 +1,16 @@
+# 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.
+
+localhost

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/monitor
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/monitor b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/monitor
new file mode 100644
index 0000000..63fb8bb
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/monitor
@@ -0,0 +1,16 @@
+# 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.
+
+localhost

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/slaves
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/slaves b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/slaves
new file mode 100644
index 0000000..63fb8bb
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/slaves
@@ -0,0 +1,16 @@
+# 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.
+
+localhost

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/tracers
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/tracers b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/tracers
new file mode 100644
index 0000000..63fb8bb
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/tracers
@@ -0,0 +1,16 @@
+# 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.
+
+localhost

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/__init__.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/__init__.py b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/__init__.py
new file mode 100644
index 0000000..5561e10
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/__init__.py
@@ -0,0 +1,19 @@
+#!/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.
+
+"""

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo.py b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo.py
new file mode 100644
index 0000000..e974573
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo.py
@@ -0,0 +1,120 @@
+#!/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 os
+
+from resource_management import *
+import sys
+
+def accumulo(name=None # 'master' or 'tserver' or 'client'
+              ):
+  import params
+
+  Directory( params.accumulo_conf_dir,
+      owner = params.accumulo_user,
+      recursive = True
+  )
+
+  XmlConfig( "accumulo-site.xml",
+            conf_dir = params.accumulo_conf_dir,
+            configurations = params.config['configurations']['accumulo-site'],
+            configuration_attributes=params.config['configuration_attributes']['accumulo-site'],
+            owner = params.accumulo_user,
+            mode = 0600
+  )
+
+  XmlConfig("hdfs-site.xml",
+            conf_dir=params.hadoop_conf_dir,
+            configurations=params.config['configurations']['hdfs-site'],
+            configuration_attributes=params.config['configuration_attributes']['hdfs-site'],
+            owner=params.hdfs_user,
+    )
+
+  if 'accumulo-policy' in params.config['configurations']:
+    XmlConfig( "accumulo-policy.xml",
+            conf_dir = params.accumulo_conf_dir,
+            configurations = params.config['configurations']['accumulo-policy'],
+            configuration_attributes=params.config['configuration_attributes']['accumulo-policy'],
+            owner = params.accumulo_user,
+    )
+  else:
+    File( format("{params.accumulo_conf_dir}/accumulo-policy.xml"),
+      owner = params.accumulo_user,
+    )
+
+  Directory (params.log_dir,
+    owner = params.accumulo_user,
+    recursive = True
+  )
+
+  if (params.log4j_props != None):
+    File(format("{params.accumulo_conf_dir}/log4j.properties"),
+         mode=0644,
+         owner=params.accumulo_user,
+         content=params.log4j_props
+    )
+  elif (os.path.exists(format("{params.accumulo_conf_dir}/log4j.properties"))):
+    File(format("{params.accumulo_conf_dir}/log4j.properties"),
+      mode=0644,
+      owner=params.accumulo_user
+    )
+
+  if name in ["master","tserver"]:
+    params.HdfsDirectory(format("{params.accumulo_hdfs_root_dir}"),
+                         action="create_delayed",
+                         owner=params.accumulo_user,
+    )
+    params.HdfsDirectory(format("{params.accumulo_hdfs_stage_dir}"),
+                         action="create_delayed",
+                         owner=params.accumulo_user,
+                         mode=0751
+    )
+    params.HdfsDirectory(None, action="create")
+
+  accumulo_StaticFile("auditLog.xml")
+  accumulo_StaticFile("generic_logger.xml")
+  accumulo_StaticFile("monitor_logger.xml")
+  accumulo_StaticFile("accumulo-metrics.xml")
+
+  accumulo_StaticFile("tracers")
+  accumulo_StaticFile("gc")
+  accumulo_StaticFile("monitor")
+  accumulo_StaticFile('slaves')
+  accumulo_StaticFile('masters')
+
+  accumulo_TemplateConfig('accumulo-env.sh')
+
+def accumulo_TemplateConfig(name,
+                         tag=None
+                         ):
+  import params
+
+  TemplateConfig( format("{params.accumulo_conf_dir}/{name}"),
+      owner = params.accumulo_user,
+      template_tag = tag
+  )
+
+def accumulo_StaticFile(name):
+    import params
+
+    File(format("{params.accumulo_conf_dir}/{name}"),
+      mode=0644,
+      owner=params.accumulo_user,
+      content=StaticFile(name)
+    )

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_client.py b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_client.py
new file mode 100644
index 0000000..1645304
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_client.py
@@ -0,0 +1,45 @@
+#!/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.
+
+"""
+
+from resource_management import *
+
+from accumulo_configuration import setup_conf_dir
+
+
+class AccumuloClient(Script):
+  def get_stack_to_component(self):
+    return {"HDP": "accumulo-client"}
+
+  def install(self, env):
+    self.install_packages(env)
+    self.configure(env)
+
+  def configure(self, env):
+    import params
+    env.set_params(params)
+
+    setup_conf_dir(name='client')
+
+  def status(self, env):
+    raise ClientComponentHasNoStatus()
+
+
+if __name__ == "__main__":
+  AccumuloClient().execute()

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_configuration.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_configuration.py b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_configuration.py
new file mode 100644
index 0000000..1f653ad
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_configuration.py
@@ -0,0 +1,252 @@
+#!/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.
+
+"""
+
+from resource_management import *
+import os
+
+def setup_conf_dir(name=None): # 'master' or 'tserver' or 'monitor' or 'gc' or 'tracer' or 'client'
+  import params
+
+  # create the conf directory
+  Directory( params.conf_dir,
+      mode=0750,
+      owner = params.accumulo_user,
+      group = params.user_group,
+      recursive = True
+  )
+
+  if name == 'client':
+    dest_conf_dir = params.conf_dir
+
+    # create a site file for client processes
+    configs = {}
+    configs.update(params.config['configurations']['accumulo-site'])
+    if "instance.secret" in configs:
+      configs.pop("instance.secret")
+    if "trace.token.property.password" in configs:
+      configs.pop("trace.token.property.password")
+    XmlConfig("accumulo-site.xml",
+              conf_dir = dest_conf_dir,
+              configurations = configs,
+              configuration_attributes=params.config['configuration_attributes']['accumulo-site'],
+              owner = params.accumulo_user,
+              group = params.user_group,
+              mode = 0644
+    )
+
+    # create env file
+    File(format("{dest_conf_dir}/accumulo-env.sh"),
+         mode=0644,
+         group=params.user_group,
+         owner=params.accumulo_user,
+         content=InlineTemplate(params.env_sh_template)
+    )
+  else:
+    dest_conf_dir = params.server_conf_dir
+    # create server conf directory
+    Directory( params.server_conf_dir,
+               mode=0700,
+               owner = params.accumulo_user,
+               group = params.user_group,
+               recursive = True
+    )
+    # create a site file for server processes
+    configs = {}
+    configs.update(params.config['configurations']['accumulo-site'])
+    configs["instance.secret"] = params.config['configurations']['accumulo-env']['instance_secret']
+    configs["trace.token.property.password"] = params.trace_password
+    XmlConfig( "accumulo-site.xml",
+               conf_dir = dest_conf_dir,
+               configurations = configs,
+               configuration_attributes=params.config['configuration_attributes']['accumulo-site'],
+               owner = params.accumulo_user,
+               group = params.user_group,
+               mode = 0600
+    )
+
+    # create pid dir
+    Directory( params.pid_dir,
+               owner = params.accumulo_user,
+               group = params.user_group,
+               recursive = True
+    )
+
+    # create log dir
+    Directory (params.log_dir,
+               owner = params.accumulo_user,
+               group = params.user_group,
+               recursive = True
+    )
+
+    # create env file
+    File(format("{dest_conf_dir}/accumulo-env.sh"),
+         mode=0644,
+         group=params.user_group,
+         owner=params.accumulo_user,
+         content=InlineTemplate(params.server_env_sh_template)
+    )
+
+  # create client.conf file
+  configs = {}
+  configs["instance.name"] = params.instance_name
+  configs["instance.zookeeper.host"] = params.config['configurations']['accumulo-site']['instance.zookeeper.host']
+  PropertiesFile(format("{dest_conf_dir}/client.conf"),
+                 properties = configs,
+                 owner = params.accumulo_user,
+                 group = params.user_group
+  )
+
+  # create log4j.properties files
+  if (params.log4j_props != None):
+    File(format("{params.conf_dir}/log4j.properties"),
+         mode=0644,
+         group=params.user_group,
+         owner=params.accumulo_user,
+         content=params.log4j_props
+    )
+  else:
+    File(format("{params.conf_dir}/log4j.properties"),
+         mode=0644,
+         group=params.user_group,
+         owner=params.hbase_user
+    )
+
+  # create logging configuration files
+  accumulo_TemplateConfig("auditLog.xml", dest_conf_dir)
+  accumulo_TemplateConfig("generic_logger.xml", dest_conf_dir)
+  accumulo_TemplateConfig("monitor_logger.xml", dest_conf_dir)
+  accumulo_StaticFile("accumulo-metrics.xml", dest_conf_dir)
+
+  # create host files
+  accumulo_StaticFile("tracers", dest_conf_dir)
+  accumulo_StaticFile("gc", dest_conf_dir)
+  accumulo_StaticFile("monitor", dest_conf_dir)
+  accumulo_StaticFile("slaves", dest_conf_dir)
+  accumulo_StaticFile("masters", dest_conf_dir)
+
+  # metrics configuration
+  if params.has_metric_collector:
+    accumulo_TemplateConfig( "hadoop-metrics2-accumulo.properties", dest_conf_dir)
+
+  # other server setup
+  if name == 'master':
+    params.HdfsDirectory(format("/user/{params.accumulo_user}"),
+                         action="create_delayed",
+                         owner=params.accumulo_user,
+                         mode=0700
+    )
+    params.HdfsDirectory(format("{params.parent_dir}"),
+                         action="create_delayed",
+                         owner=params.accumulo_user,
+                         mode=0700
+    )
+    params.HdfsDirectory(None, action="create")
+    passfile = format("{params.exec_tmp_dir}/pass")
+    try:
+      File(passfile,
+           mode=0600,
+           group=params.user_group,
+           owner=params.accumulo_user,
+           content=InlineTemplate('{{root_password}}\n'
+                                  '{{root_password}}\n')
+      )
+      Execute( format("cat {passfile} | {params.daemon_script} init "
+                      "--instance-name {params.instance_name} "
+                      "--clear-instance-name "
+                      ">{params.log_dir}/accumulo-init.out "
+                      "2>{params.log_dir}/accumulo-init.err"),
+               not_if=as_user(format("{params.kinit_cmd} "
+                                     "{params.hadoop_bin_dir}/hadoop --config "
+                                     "{params.hadoop_conf_dir} fs -stat "
+                                     "{params.instance_volumes}"),
+                              params.accumulo_user),
+               user=params.accumulo_user)
+    finally:
+      os.remove(passfile)
+
+  if name == 'tracer':
+    create_user(params.trace_user, params.trace_password)
+    create_user(params.smoke_test_user, params.smoke_test_password)
+
+def create_user(user, password):
+  import params
+  rpassfile = format("{params.exec_tmp_dir}/pass0")
+  passfile = format("{params.exec_tmp_dir}/pass")
+  cmdfile = format("{params.exec_tmp_dir}/cmds")
+  try:
+    File(cmdfile,
+         mode=0600,
+         group=params.user_group,
+         owner=params.accumulo_user,
+         content=InlineTemplate(format("createuser {user}\n"
+                                       "grant -s System.CREATE_TABLE -u {user}\n"))
+    )
+    File(rpassfile,
+         mode=0600,
+         group=params.user_group,
+         owner=params.accumulo_user,
+         content=InlineTemplate('{{root_password}}\n')
+    )
+    File(passfile,
+         mode=0600,
+         group=params.user_group,
+         owner=params.accumulo_user,
+         content=InlineTemplate(format("{params.root_password}\n"
+                                       "{password}\n"
+                                       "{password}\n"))
+    )
+    Execute( format("cat {passfile} | {params.daemon_script} shell -u root "
+                    "-f {cmdfile}"),
+             not_if=as_user(format("cat {rpassfile} | "
+                                   "{params.daemon_script} shell -u root "
+                                   "-e \"userpermissions -u {user}\""),
+                            params.accumulo_user),
+             user=params.accumulo_user)
+  finally:
+    try_remove(rpassfile)
+    try_remove(passfile)
+    try_remove(cmdfile)
+
+def try_remove(file):
+  try:
+    os.remove(file)
+  except:
+    pass
+
+# create file 'name' from template
+def accumulo_TemplateConfig(name, dest_conf_dir, tag=None):
+  import params
+
+  TemplateConfig( format("{dest_conf_dir}/{name}"),
+      owner = params.accumulo_user,
+      group = params.user_group,
+      template_tag = tag
+  )
+
+# create static file 'name'
+def accumulo_StaticFile(name, dest_conf_dir):
+  import params
+
+  File(format("{dest_conf_dir}/{name}"),
+    mode=0644,
+    group=params.user_group,
+    owner=params.accumulo_user,
+    content=StaticFile(name)
+  )

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_gc.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_gc.py b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_gc.py
new file mode 100644
index 0000000..f8fe499
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_gc.py
@@ -0,0 +1,24 @@
+#!/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.
+
+"""
+
+from accumulo_script import AccumuloScript
+
+if __name__ == "__main__":
+  AccumuloScript('gc').execute()

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_master.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_master.py b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_master.py
new file mode 100644
index 0000000..ea8935b
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_master.py
@@ -0,0 +1,24 @@
+#!/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.
+
+"""
+
+from accumulo_script import AccumuloScript
+
+if __name__ == "__main__":
+  AccumuloScript('master').execute()

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_monitor.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_monitor.py b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_monitor.py
new file mode 100644
index 0000000..c8e7bed
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_monitor.py
@@ -0,0 +1,24 @@
+#!/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.
+
+"""
+
+from accumulo_script import AccumuloScript
+
+if __name__ == "__main__":
+  AccumuloScript('monitor').execute()

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_script.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_script.py b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_script.py
new file mode 100644
index 0000000..8f78325
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_script.py
@@ -0,0 +1,117 @@
+#!/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.
+
+"""
+
+from resource_management import *
+from resource_management.libraries.functions.security_commons import build_expectations, \
+  cached_kinit_executor, get_params_from_filesystem, validate_security_config_properties, \
+  FILE_TYPE_XML
+
+from accumulo_configuration import setup_conf_dir
+from accumulo_service import accumulo_service
+
+class AccumuloScript(Script):
+  def __init__(self, component):
+    self.component = component
+
+  def install(self, env):
+    self.install_packages(env)
+
+  def configure(self, env):
+    import params
+    env.set_params(params)
+
+    setup_conf_dir(name=self.component)
+
+  def start(self, env):
+    import params
+    env.set_params(params)
+    self.configure(env) # for security
+
+    accumulo_service( self.component,
+      action = 'start'
+    )
+
+  def stop(self, env):
+    import params
+    env.set_params(params)
+
+    accumulo_service( self.component,
+      action = 'stop'
+    )
+
+  def status(self, env):
+    import status_params
+    env.set_params(status_params)
+    component = self.component
+    pid_file = format("{pid_dir}/accumulo-{accumulo_user}-{component}.pid")
+    check_process_status(pid_file)
+
+  def security_status(self, env):
+    import status_params
+
+    env.set_params(status_params)
+
+    props_value_check = {}
+    props_empty_check = ['general.kerberos.keytab',
+                         'general.kerberos.principal']
+    props_read_check = ['general.kerberos.keytab']
+    accumulo_site_expectations = build_expectations('accumulo-site',
+                                                    props_value_check,
+                                                    props_empty_check,
+                                                    props_read_check)
+
+    accumulo_expectations = {}
+    accumulo_expectations.update(accumulo_site_expectations)
+
+    security_params = get_params_from_filesystem(status_params.conf_dir,
+                                                 {'accumulo-site.xml': FILE_TYPE_XML})
+    result_issues = validate_security_config_properties(security_params, accumulo_expectations)
+    if not result_issues:  # If all validations passed successfully
+      try:
+        # Double check the dict before calling execute
+        if ( 'accumulo-site' not in security_params
+             or 'general.kerberos.keytab' not in security_params['accumulo-site']
+             or 'general.kerberos.principal' not in security_params['accumulo-site']):
+          self.put_structured_out({"securityState": "UNSECURED"})
+          self.put_structured_out(
+            {"securityIssuesFound": "Keytab file or principal are not set property."})
+          return
+
+        cached_kinit_executor(status_params.kinit_path_local,
+                              status_params.accumulo_user,
+                              security_params['accumulo-site']['general.kerberos.keytab'],
+                              security_params['accumulo-site']['general.kerberos.principal'],
+                              status_params.hostname,
+                              status_params.tmp_dir,
+                              30)
+        self.put_structured_out({"securityState": "SECURED_KERBEROS"})
+      except Exception as e:
+        self.put_structured_out({"securityState": "ERROR"})
+        self.put_structured_out({"securityStateErrorInfo": str(e)})
+    else:
+      issues = []
+      for cf in result_issues:
+        issues.append("Configuration file %s did not pass the validation. Reason: %s" % (cf, result_issues[cf]))
+      self.put_structured_out({"securityIssuesFound": ". ".join(issues)})
+      self.put_structured_out({"securityState": "UNSECURED"})
+
+
+if __name__ == "__main__":
+  self.fail_with_error('component unspecified')

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_service.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_service.py b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_service.py
new file mode 100644
index 0000000..13411e6
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_service.py
@@ -0,0 +1,71 @@
+#!/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.
+
+"""
+
+from resource_management import *
+import time
+
+def accumulo_service( name,
+                      action = 'start'): # 'start' or 'stop' or 'status'
+    import params
+
+    role = name
+    pid_file = format("{pid_dir}/accumulo-{accumulo_user}-{role}.pid")
+
+    pid_exists = format("ls {pid_file} >/dev/null 2>&1 && ps `cat {pid_file}` >/dev/null 2>&1")
+
+    if action == 'start':
+      daemon_cmd = format("{daemon_script} {role} --address {params.hostname} > {log_dir}/accumulo-{role}.out 2>{log_dir}/accumulo-{role}.err & echo $! > {pid_file}")
+      Execute ( daemon_cmd,
+        not_if=pid_exists,
+        user=params.accumulo_user
+      )
+
+    elif action == 'stop':
+      no_pid_exists = format("! ({pid_exists})")
+      try:
+        if name == 'master':
+          Execute(format("{daemon_script} admin stopMaster"),
+                  not_if=no_pid_exists,
+                  timeout=30,
+                  user=params.accumulo_user
+          )
+        elif name == 'tserver':
+          Execute(format("{daemon_script} admin stop {hostname}"),
+                  not_if=no_pid_exists,
+                  timeout=30,
+                  user=params.accumulo_user
+          )
+      except:
+        pass
+
+      time.sleep(5)
+
+      pid = format("`cat {pid_file}` >/dev/null 2>&1")
+      Execute(format("kill {pid}"),
+        not_if=no_pid_exists,
+        user=params.accumulo_user
+      )
+      Execute(format("kill -9 {pid}"),
+        not_if=format("sleep 2; {no_pid_exists} || sleep 20; {no_pid_exists}"),
+        ignore_failures=True,
+        user=params.accumulo_user
+      )
+      Execute(format("rm -f {pid_file}"),
+        user=params.accumulo_user)

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_tracer.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_tracer.py b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_tracer.py
new file mode 100644
index 0000000..b8bb9a0
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_tracer.py
@@ -0,0 +1,24 @@
+#!/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.
+
+"""
+
+from accumulo_script import AccumuloScript
+
+if __name__ == "__main__":
+  AccumuloScript('tracer').execute()

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_tserver.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_tserver.py b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_tserver.py
new file mode 100644
index 0000000..3117e35
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_tserver.py
@@ -0,0 +1,24 @@
+#!/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.
+
+"""
+
+from accumulo_script import AccumuloScript
+
+if __name__ == "__main__":
+  AccumuloScript('tserver').execute()

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/params.py b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/params.py
new file mode 100644
index 0000000..96932ba
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/params.py
@@ -0,0 +1,125 @@
+#!/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.
+
+"""
+
+from resource_management import *
+from resource_management.libraries.functions.default import default
+import status_params
+
+# server configurations
+config = Script.get_config()
+exec_tmp_dir = status_params.tmp_dir
+
+# accumulo local directory structure
+log_dir = config['configurations']['accumulo-env']['accumulo_log_dir']
+conf_dir = status_params.conf_dir # "/etc/accumulo/conf"
+server_conf_dir = "/etc/accumulo/conf/server"
+client_script = "/usr/hdp/current/accumulo-client/bin/accumulo"
+daemon_script = format("ACCUMULO_CONF_DIR={server_conf_dir} {client_script}")
+
+# service locations
+hadoop_prefix = "/usr/hdp/current/hadoop-client"
+hadoop_bin_dir = format("{hadoop_prefix}/bin")
+hadoop_conf_dir = "/etc/hadoop/conf"
+zookeeper_home = "/usr/hdp/current/zookeeper-client"
+
+# user and status
+accumulo_user = status_params.accumulo_user
+user_group = config['configurations']['cluster-env']['user_group']
+pid_dir = status_params.pid_dir
+
+# accumulo env
+java64_home = config['hostLevelParams']['java_home']
+master_heapsize = config['configurations']['accumulo-env']['master_heapsize']
+tserver_heapsize = config['configurations']['accumulo-env']['tserver_heapsize']
+monitor_heapsize = config['configurations']['accumulo-env']['monitor_heapsize']
+gc_heapsize = config['configurations']['accumulo-env']['gc_heapsize']
+other_heapsize = config['configurations']['accumulo-env']['other_heapsize']
+env_sh_template = config['configurations']['accumulo-env']['content']
+server_env_sh_template = config['configurations']['accumulo-env']['server_content']
+
+# accumulo initialization parameters
+instance_name = config['configurations']['accumulo-env']['accumulo_instance_name']
+instance_secret = config['configurations']['accumulo-env']['instance_secret']
+root_password = config['configurations']['accumulo-env']['accumulo_root_password']
+instance_volumes = config['configurations']['accumulo-site']['instance.volumes']
+parent_dir = instance_volumes[0:instance_volumes.rfind('/')]
+
+# tracer properties
+trace_user = config['configurations']['accumulo-site']['trace.user']
+trace_password = config['configurations']['accumulo-env']['trace_password']
+
+# credential provider
+credential_provider = parent_dir.replace("hdfs://", "jceks://hdfs@") + "/accumulo-site.jceks"
+
+# smoke test
+smoke_test_user = config['configurations']['cluster-env']['smokeuser']
+smoke_test_password = 'smoke'
+smokeuser_principal =  config['configurations']['cluster-env']['smokeuser_principal_name']
+smoke_user_keytab = config['configurations']['cluster-env']['smokeuser_keytab']
+
+# log4j.properties
+log4j_props = config['configurations']['accumulo-log4j']['content']
+audit_log_level = config['configurations']['accumulo-log4j']['audit_log_level']
+monitor_forwarding_log_level = config['configurations']['accumulo-log4j']['monitor_forwarding_log_level']
+debug_log_size = config['configurations']['accumulo-log4j']['debug_log_size']
+debug_num_logs = config['configurations']['accumulo-log4j']['debug_num_logs']
+info_log_size = config['configurations']['accumulo-log4j']['info_log_size']
+info_num_logs = config['configurations']['accumulo-log4j']['info_num_logs']
+
+# metrics2 properties
+ganglia_server_hosts = default('/clusterHostInfo/ganglia_server_host', []) # is not passed when ganglia is not present
+ganglia_server_host = '' if len(ganglia_server_hosts) == 0 else ganglia_server_hosts[0]
+ams_collector_hosts = default("/clusterHostInfo/metric_collector_hosts", [])
+has_metric_collector = not len(ams_collector_hosts) == 0
+if has_metric_collector:
+  metric_collector_host = ams_collector_hosts[0]
+  metric_collector_port = default("/configurations/ams-site/timeline.metrics.service.webapp.address", "0.0.0.0:8188")
+  if metric_collector_port and metric_collector_port.find(':') != -1:
+    metric_collector_port = metric_collector_port.split(':')[1]
+  pass
+
+# security properties
+accumulo_user_keytab = config['configurations']['accumulo-env']['accumulo_user_keytab']
+accumulo_principal_name = config['configurations']['accumulo-env']['accumulo_principal_name']
+
+security_enabled = status_params.security_enabled
+kinit_path_local = status_params.kinit_path_local
+if security_enabled:
+  kinit_cmd = format("{kinit_path_local} -kt {accumulo_user_keytab} {accumulo_principal_name};")
+else:
+  kinit_cmd = ""
+
+#for create_hdfs_directory
+hostname = status_params.hostname
+hdfs_user_keytab = config['configurations']['hadoop-env']['hdfs_user_keytab']
+hdfs_user = config['configurations']['hadoop-env']['hdfs_user']
+hdfs_principal_name = config['configurations']['hadoop-env']['hdfs_principal_name']
+import functools
+#create partial functions with common arguments for every HdfsDirectory call
+#to create hdfs directory we need to call params.HdfsDirectory in code
+HdfsDirectory = functools.partial(
+  HdfsDirectory,
+  conf_dir=hadoop_conf_dir,
+  hdfs_user=hdfs_user,
+  security_enabled = security_enabled,
+  keytab = hdfs_user_keytab,
+  kinit_path_local = kinit_path_local,
+  bin_dir = hadoop_bin_dir
+)

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/service_check.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/service_check.py b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/service_check.py
new file mode 100644
index 0000000..88ed196
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/service_check.py
@@ -0,0 +1,59 @@
+#!/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.
+
+"""
+
+from resource_management import *
+import os
+
+class AccumuloServiceCheck(Script):
+  def service_check(self, env):
+    import params
+    env.set_params(params)
+
+    smokeuser_kinit_cmd = format("{kinit_path_local} -kt {smoke_user_keytab} {smokeuser_principal};") if params.security_enabled else ""
+
+    cmdfile = format("{exec_tmp_dir}/cmds")
+    try:
+      File(cmdfile,
+           mode=0600,
+           group=params.user_group,
+           owner=params.smoke_test_user,
+           content=InlineTemplate('createtable testtable\n'
+                                  'insert row cf cq val\n'
+                                  'scan\n'
+                                  'flush -w\n'
+                                  'scan\n'
+                                  'deletetable -f testtable\n')
+      )
+      Execute( format("{smokeuser_kinit_cmd} "
+                      "{client_script} shell -u {smoke_test_user} "
+                      "-p {smoke_test_password} -f {cmdfile}"),
+               timeout=30,
+               user=params.smoke_test_user)
+    finally:
+      try_remove(cmdfile)
+
+def try_remove(file):
+  try:
+    os.remove(file)
+  except:
+    pass
+
+if __name__ == "__main__":
+  AccumuloServiceCheck().execute()

http://git-wip-us.apache.org/repos/asf/ambari/blob/08dd22f9/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/status_params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/status_params.py b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/status_params.py
new file mode 100644
index 0000000..2d7cd61
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/status_params.py
@@ -0,0 +1,33 @@
+#!/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.
+
+"""
+
+from resource_management import *
+
+config = Script.get_config()
+
+conf_dir = "/etc/accumulo/conf"
+pid_dir = config['configurations']['accumulo-env']['accumulo_pid_dir']
+accumulo_user = config['configurations']['accumulo-env']['accumulo_user']
+
+# Security related/required params
+hostname = config['hostname']
+security_enabled = config['configurations']['cluster-env']['security_enabled']
+kinit_path_local = functions.get_kinit_path()
+tmp_dir = Script.get_tmp_dir()