Ver código fonte

AMBARI-10752 Update Accumulo config defaults and ambari-web site properties (billie)

Billie Rinaldi 10 anos atrás
pai
commit
1b66baac0e
22 arquivos alterados com 466 adições e 146 exclusões
  1. 5 0
      ambari-server/src/main/java/org/apache/ambari/server/utils/StageUtils.java
  2. 25 24
      ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/configuration/accumulo-env.xml
  3. 28 27
      ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/configuration/accumulo-site.xml
  4. 1 0
      ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/metainfo.xml
  5. 0 16
      ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/gc
  6. 0 16
      ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/masters
  7. 0 16
      ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/monitor
  8. 0 16
      ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/slaves
  9. 0 16
      ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/tracers
  10. 7 7
      ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_configuration.py
  11. 10 0
      ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_service.py
  12. 15 5
      ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/params.py
  13. 20 0
      ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/gc.j2
  14. 20 0
      ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/masters.j2
  15. 20 0
      ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/monitor.j2
  16. 20 0
      ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/slaves.j2
  17. 20 0
      ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/tracers.j2
  18. 3 1
      ambari-server/src/main/resources/role_command_order.json
  19. 3 1
      ambari-server/src/main/resources/stacks/HDP/2.2/role_command_order.json
  20. 1 1
      ambari-web/app/controllers/wizard/step8_controller.js
  21. 263 0
      ambari-web/app/data/HDP2/site_properties.js
  22. 5 0
      ambari-web/app/models/stack_service.js

+ 5 - 0
ambari-server/src/main/java/org/apache/ambari/server/utils/StageUtils.java

@@ -151,6 +151,11 @@ public class StageUtils {
     componentToClusterInfoKeyMap.put("HBASE_REGIONSERVER", "hbase_rs_hosts");
     componentToClusterInfoKeyMap.put("HBASE_REGIONSERVER", "hbase_rs_hosts");
     componentToClusterInfoKeyMap.put("KERBEROS_SERVER", "kdc_host");
     componentToClusterInfoKeyMap.put("KERBEROS_SERVER", "kdc_host");
     componentToClusterInfoKeyMap.put("KERBEROS_ADMIN_CLIENT", "kerberos_adminclient_host");
     componentToClusterInfoKeyMap.put("KERBEROS_ADMIN_CLIENT", "kerberos_adminclient_host");
+    componentToClusterInfoKeyMap.put("ACCUMULO_MASTER", "accumulo_master_hosts");
+    componentToClusterInfoKeyMap.put("ACCUMULO_MONITOR", "accumulo_monitor_hosts");
+    componentToClusterInfoKeyMap.put("ACCUMULO_GC", "accumulo_gc_hosts");
+    componentToClusterInfoKeyMap.put("ACCUMULO_TRACER", "accumulo_tracer_hosts");
+    componentToClusterInfoKeyMap.put("ACCUMULO_TSERVER", "accumulo_tserver_hosts");
   }
   }
 
 
   static {
   static {

+ 25 - 24
ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/configuration/accumulo-env.xml

@@ -64,32 +64,32 @@
     <name>accumulo_user</name>
     <name>accumulo_user</name>
     <value>accumulo</value>
     <value>accumulo</value>
     <property-type>USER</property-type>
     <property-type>USER</property-type>
-    <description>Accumulo User Name.</description>
+    <description>User for running Accumulo server processes.</description>
   </property>
   </property>
   <property>
   <property>
-    <name>master_heapsize</name>
-    <value>128m</value>
+    <name>accumulo_master_heapsize</name>
+    <value>1024</value>
     <description>Accumulo Master Heap Size.</description>
     <description>Accumulo Master Heap Size.</description>
   </property>
   </property>
   <property>
   <property>
-    <name>tserver_heapsize</name>
-    <value>256m</value>
+    <name>accumulo_tserver_heapsize</name>
+    <value>1024</value>
     <description>Accumulo Tablet Server Heap Size.</description>
     <description>Accumulo Tablet Server Heap Size.</description>
   </property>
   </property>
   <property>
   <property>
-    <name>monitor_heapsize</name>
-    <value>64m</value>
+    <name>accumulo_monitor_heapsize</name>
+    <value>1024</value>
     <description>Accumulo Monitor Heap Size.</description>
     <description>Accumulo Monitor Heap Size.</description>
   </property>
   </property>
   <property>
   <property>
-    <name>gc_heapsize</name>
-    <value>64m</value>
+    <name>accumulo_gc_heapsize</name>
+    <value>256</value>
     <description>Accumulo Garbage Collector Heap Size.</description>
     <description>Accumulo Garbage Collector Heap Size.</description>
   </property>
   </property>
   <property>
   <property>
-    <name>other_heapsize</name>
-    <value>128m</value>
-    <description>Accumulo Other Heap Size.</description>
+    <name>accumulo_other_heapsize</name>
+    <value>1024</value>
+    <description>Heap size for other Accumulo processes.</description>
   </property>
   </property>
   <property>
   <property>
     <name>content</name>
     <name>content</name>
@@ -102,12 +102,12 @@ export JAVA_HOME={{java64_home}}
 export ZOOKEEPER_HOME={{zookeeper_home}}
 export ZOOKEEPER_HOME={{zookeeper_home}}
 export ACCUMULO_LOG_DIR={{log_dir}}
 export ACCUMULO_LOG_DIR={{log_dir}}
 export ACCUMULO_CONF_DIR={{conf_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}}"
+export ACCUMULO_TSERVER_OPTS="-Xmx{{accumulo_tserver_heapsize}}m -Xms{{accumulo_tserver_heapsize}}m"
+export ACCUMULO_MASTER_OPTS="-Xmx{{accumulo_master_heapsize}}m -Xms{{accumulo_master_heapsize}}m"
+export ACCUMULO_MONITOR_OPTS="-Xmx{{accumulo_monitor_heapsize}}m -Xms{{accumulo_monitor_heapsize}}m"
+export ACCUMULO_GC_OPTS="-Xmx{{accumulo_gc_heapsize}}m -Xms{{accumulo_gc_heapsize}}m"
+export ACCUMULO_GENERAL_OPTS="-XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -Djava.net.preferIPv4Stack=true ${ACCUMULO_GENERAL_OPTS}"
+export ACCUMULO_OTHER_OPTS="-Xmx{{accumulo_other_heapsize}}m -Xms{{accumulo_other_heapsize}}m ${ACCUMULO_OTHER_OPTS}"
 # what do when the JVM runs out of heap memory
 # what do when the JVM runs out of heap memory
 export ACCUMULO_KILL_CMD='kill -9 %p'
 export ACCUMULO_KILL_CMD='kill -9 %p'
     </value>
     </value>
@@ -121,14 +121,15 @@ export HADOOP_PREFIX={{hadoop_prefix}}
 export HADOOP_CONF_DIR={{hadoop_conf_dir}}
 export HADOOP_CONF_DIR={{hadoop_conf_dir}}
 export JAVA_HOME={{java64_home}}
 export JAVA_HOME={{java64_home}}
 export ZOOKEEPER_HOME={{zookeeper_home}}
 export ZOOKEEPER_HOME={{zookeeper_home}}
+export ACCUMULO_PID_DIR={{pid_dir}}
 export ACCUMULO_LOG_DIR={{log_dir}}
 export ACCUMULO_LOG_DIR={{log_dir}}
 export ACCUMULO_CONF_DIR={{server_conf_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}}"
+export ACCUMULO_TSERVER_OPTS="-Xmx{{accumulo_tserver_heapsize}}m -Xms{{accumulo_tserver_heapsize}}m"
+export ACCUMULO_MASTER_OPTS="-Xmx{{accumulo_master_heapsize}}m -Xms{{accumulo_master_heapsize}}m"
+export ACCUMULO_MONITOR_OPTS="-Xmx{{accumulo_monitor_heapsize}}m -Xms{{accumulo_monitor_heapsize}}m"
+export ACCUMULO_GC_OPTS="-Xmx{{accumulo_gc_heapsize}}m -Xms{{accumulo_gc_heapsize}}m"
+export ACCUMULO_GENERAL_OPTS="-XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -Djava.net.preferIPv4Stack=true ${ACCUMULO_GENERAL_OPTS}"
+export ACCUMULO_OTHER_OPTS="-Xmx{{accumulo_other_heapsize}}m -Xms{{accumulo_other_heapsize}}m ${ACCUMULO_OTHER_OPTS}"
 # what do when the JVM runs out of heap memory
 # what do when the JVM runs out of heap memory
 export ACCUMULO_KILL_CMD='kill -9 %p'
 export ACCUMULO_KILL_CMD='kill -9 %p'
     </value>
     </value>

+ 28 - 27
ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/configuration/accumulo-site.xml

@@ -42,11 +42,12 @@
 
 
   <property>
   <property>
     <name>tserver.memory.maps.max</name>
     <name>tserver.memory.maps.max</name>
-    <value>80M</value>
+    <value>256M</value>
     <description>Amount of memory to use for Accumulo's in-memory
     <description>Amount of memory to use for Accumulo's in-memory
       map, where incoming writes are sorted.  If native maps are enabled
       map, where incoming writes are sorted.  If native maps are enabled
       (tserver.memory.maps.native.enabled) this memory is
       (tserver.memory.maps.native.enabled) this memory is
-      off-heap.</description>
+      off-heap. Ensure that table.compaction.minor.logs.threshold *
+      tserver.walog.max.size >= tserver.memory.maps.max.</description>
   </property>
   </property>
 
 
   <property>
   <property>
@@ -59,27 +60,27 @@
 
 
   <property>
   <property>
     <name>tserver.cache.data.size</name>
     <name>tserver.cache.data.size</name>
-    <value>7M</value>
+    <value>64M</value>
     <description>Size of on-heap block cache for data blocks.</description>
     <description>Size of on-heap block cache for data blocks.</description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>tserver.cache.index.size</name>
     <name>tserver.cache.index.size</name>
-    <value>20M</value>
+    <value>128M</value>
     <description>Size of on-heap block cache for index blocks.</description>
     <description>Size of on-heap block cache for index blocks.</description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>tserver.sort.buffer.size</name>
     <name>tserver.sort.buffer.size</name>
-    <value>50M</value>
-    <description>Size of on-heap block cache for data blocks.</description>
+    <value>100M</value>
+    <description>Amount of memory to use for sorting walogs when
+      recovering from tserver failure.</description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>tserver.walog.max.size</name>
     <name>tserver.walog.max.size</name>
-    <value>40M</value>
-    <description>Amount of memory to use for sorting walogs when
-      recovering from tserver failure.</description>
+    <value>512M</value>
+    <description>Maximum size of each write-ahead log.</description>
   </property>
   </property>
 
 
   <property>
   <property>
@@ -91,14 +92,14 @@
   <property>
   <property>
     <name>trace.port.client</name>
     <name>trace.port.client</name>
     <value>12234</value>
     <value>12234</value>
-    <description>Port for client connections to the master.</description>
+    <description>Port for delivering tracing data to the tracer
+      process.</description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>tserver.port.client</name>
     <name>tserver.port.client</name>
     <value>9997</value>
     <value>9997</value>
-    <description>Port for delivering tracing data to the tracer
-      process.</description>
+    <description>Port for client connections to the tservers.</description>
   </property>
   </property>
 
 
   <property>
   <property>
@@ -131,21 +132,21 @@
   <property>
   <property>
     <name>general.classpaths</name>
     <name>general.classpaths</name>
     <value>
     <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,
+$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>
     </value>
     <description>List of jars and directories that will be added to
     <description>List of jars and directories that will be added to
       Accumulo's classpath.  Ordering matters, as the entries will be
       Accumulo's classpath.  Ordering matters, as the entries will be

+ 1 - 0
ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/metainfo.xml

@@ -86,6 +86,7 @@
           <commandScript>
           <commandScript>
             <script>scripts/accumulo_tracer.py</script>
             <script>scripts/accumulo_tracer.py</script>
             <scriptType>PYTHON</scriptType>
             <scriptType>PYTHON</scriptType>
+            <timeout>180</timeout>
           </commandScript>
           </commandScript>
         </component>
         </component>
 
 

+ 0 - 16
ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/gc

@@ -1,16 +0,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.
-
-localhost

+ 0 - 16
ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/masters

@@ -1,16 +0,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.
-
-localhost

+ 0 - 16
ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/monitor

@@ -1,16 +0,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.
-
-localhost

+ 0 - 16
ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/slaves

@@ -1,16 +0,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.
-
-localhost

+ 0 - 16
ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/files/tracers

@@ -1,16 +0,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.
-
-localhost

+ 7 - 7
ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_configuration.py

@@ -128,14 +128,14 @@ def setup_conf_dir(name=None): # 'master' or 'tserver' or 'monitor' or 'gc' or '
 
 
   # create log4j.properties files
   # create log4j.properties files
   if (params.log4j_props != None):
   if (params.log4j_props != None):
-    File(format("{params.conf_dir}/log4j.properties"),
+    File(format("{dest_conf_dir}/log4j.properties"),
          mode=0644,
          mode=0644,
          group=params.user_group,
          group=params.user_group,
          owner=params.accumulo_user,
          owner=params.accumulo_user,
          content=params.log4j_props
          content=params.log4j_props
     )
     )
   else:
   else:
-    File(format("{params.conf_dir}/log4j.properties"),
+    File(format("{dest_conf_dir}/log4j.properties"),
          mode=0644,
          mode=0644,
          group=params.user_group,
          group=params.user_group,
          owner=params.hbase_user
          owner=params.hbase_user
@@ -148,11 +148,11 @@ def setup_conf_dir(name=None): # 'master' or 'tserver' or 'monitor' or 'gc' or '
   accumulo_StaticFile("accumulo-metrics.xml", dest_conf_dir)
   accumulo_StaticFile("accumulo-metrics.xml", dest_conf_dir)
 
 
   # create host files
   # 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)
+  accumulo_TemplateConfig("tracers", dest_conf_dir)
+  accumulo_TemplateConfig("gc", dest_conf_dir)
+  accumulo_TemplateConfig("monitor", dest_conf_dir)
+  accumulo_TemplateConfig("slaves", dest_conf_dir)
+  accumulo_TemplateConfig("masters", dest_conf_dir)
 
 
   # metrics configuration
   # metrics configuration
   if params.has_metric_collector:
   if params.has_metric_collector:

+ 10 - 0
ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_service.py

@@ -31,6 +31,11 @@ def accumulo_service( name,
     pid_exists = format("ls {pid_file} >/dev/null 2>&1 && ps `cat {pid_file}` >/dev/null 2>&1")
     pid_exists = format("ls {pid_file} >/dev/null 2>&1 && ps `cat {pid_file}` >/dev/null 2>&1")
 
 
     if action == 'start':
     if action == 'start':
+      if name != 'tserver':
+        Execute(format("{daemon_script} org.apache.accumulo.master.state.SetGoalState NORMAL"),
+                not_if=pid_exists,
+                user=params.accumulo_user
+        )
       daemon_cmd = format("{daemon_script} {role} --address {params.hostname} > {log_dir}/accumulo-{role}.out 2>{log_dir}/accumulo-{role}.err & echo $! > {pid_file}")
       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,
       Execute ( daemon_cmd,
         not_if=pid_exists,
         not_if=pid_exists,
@@ -52,6 +57,11 @@ def accumulo_service( name,
                   timeout=30,
                   timeout=30,
                   user=params.accumulo_user
                   user=params.accumulo_user
           )
           )
+        elif name != 'monitor':
+          Execute(format("{daemon_script} org.apache.accumulo.master.state.SetGoalState SAFE_MODE"),
+                  not_if=pid_exists,
+                  user=params.accumulo_user
+                  )
       except:
       except:
         pass
         pass
 
 

+ 15 - 5
ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/params.py

@@ -65,11 +65,11 @@ pid_dir = status_params.pid_dir
 
 
 # accumulo env
 # accumulo env
 java64_home = config['hostLevelParams']['java_home']
 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']
+accumulo_master_heapsize = config['configurations']['accumulo-env']['accumulo_master_heapsize']
+accumulo_tserver_heapsize = config['configurations']['accumulo-env']['accumulo_tserver_heapsize']
+accumulo_monitor_heapsize = config['configurations']['accumulo-env']['accumulo_monitor_heapsize']
+accumulo_gc_heapsize = config['configurations']['accumulo-env']['accumulo_gc_heapsize']
+accumulo_other_heapsize = config['configurations']['accumulo-env']['accumulo_other_heapsize']
 env_sh_template = config['configurations']['accumulo-env']['content']
 env_sh_template = config['configurations']['accumulo-env']['content']
 server_env_sh_template = config['configurations']['accumulo-env']['server_content']
 server_env_sh_template = config['configurations']['accumulo-env']['server_content']
 
 
@@ -114,6 +114,16 @@ if has_metric_collector:
     metric_collector_port = metric_collector_port.split(':')[1]
     metric_collector_port = metric_collector_port.split(':')[1]
   pass
   pass
 
 
+# if accumulo is selected accumulo_tserver_hosts should not be empty, but still default just in case
+if 'slave_hosts' in config['clusterHostInfo']:
+  tserver_hosts = default('/clusterHostInfo/accumulo_tserver_hosts', '/clusterHostInfo/slave_hosts')
+else:
+  tserver_hosts = default('/clusterHostInfo/accumulo_tserver_hosts', '/clusterHostInfo/all_hosts')
+master_hosts = default('/clusterHostInfo/accumulo_master_hosts', [])
+monitor_hosts = default('/clusterHostInfo/accumulo_monitor_hosts', [])
+gc_hosts = default('/clusterHostInfo/accumulo_gc_hosts', [])
+tracer_hosts = default('/clusterHostInfo/accumulo_tracer_hosts', [])
+
 # security properties
 # security properties
 accumulo_user_keytab = config['configurations']['accumulo-env']['accumulo_user_keytab']
 accumulo_user_keytab = config['configurations']['accumulo-env']['accumulo_user_keytab']
 accumulo_principal_name = config['configurations']['accumulo-env']['accumulo_principal_name']
 accumulo_principal_name = config['configurations']['accumulo-env']['accumulo_principal_name']

+ 20 - 0
ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/gc.j2

@@ -0,0 +1,20 @@
+{#
+# 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.
+#}
+
+{% for host in gc_hosts %}{{host}}
+{% endfor %}

+ 20 - 0
ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/masters.j2

@@ -0,0 +1,20 @@
+{#
+# 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.
+#}
+
+{% for host in master_hosts %}{{host}}
+{% endfor %}

+ 20 - 0
ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/monitor.j2

@@ -0,0 +1,20 @@
+{#
+# 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.
+#}
+
+{% for host in monitor_hosts %}{{host}}
+{% endfor %}

+ 20 - 0
ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/slaves.j2

@@ -0,0 +1,20 @@
+{#
+# 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.
+#}
+
+{% for host in tserver_hosts %}{{host}}
+{% endfor %}

+ 20 - 0
ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/tracers.j2

@@ -0,0 +1,20 @@
+{#
+# 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.
+#}
+
+{% for host in tracer_hosts %}{{host}}
+{% endfor %}

+ 3 - 1
ambari-server/src/main/resources/role_command_order.json

@@ -28,7 +28,9 @@
     "ZOOKEEPER_SERVICE_CHECK-SERVICE_CHECK": ["ZOOKEEPER_SERVER-START"],
     "ZOOKEEPER_SERVICE_CHECK-SERVICE_CHECK": ["ZOOKEEPER_SERVER-START"],
     "ZOOKEEPER_QUORUM_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", "ACCUMULO_MASTER-STOP", "ACCUMULO_TSERVER-STOP", "ACCUMULO_GC-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"],
+    "ACCUMULO_MONITOR-STOP" : ["ACCUMULO_MASTER-STOP"],
+    "ACCUMULO_MASTER-STOP" : ["ACCUMULO_TSERVER-STOP"],
+    "ACCUMULO_TSERVER-STOP" : ["ACCUMULO_TRACER-STOP", "ACCUMULO_GC-STOP"],
     "HBASE_MASTER-STOP": ["HBASE_REGIONSERVER-STOP"],
     "HBASE_MASTER-STOP": ["HBASE_REGIONSERVER-STOP"],
     "TASKTRACKER-UPGRADE": ["JOBTRACKER-UPGRADE"],
     "TASKTRACKER-UPGRADE": ["JOBTRACKER-UPGRADE"],
     "MAPREDUCE_CLIENT-UPGRADE": ["TASKTRACKER-UPGRADE", "JOBTRACKER-UPGRADE"],
     "MAPREDUCE_CLIENT-UPGRADE": ["TASKTRACKER-UPGRADE", "JOBTRACKER-UPGRADE"],

+ 3 - 1
ambari-server/src/main/resources/stacks/HDP/2.2/role_command_order.json

@@ -8,7 +8,9 @@
     "ACCUMULO_MONITOR-START": ["ACCUMULO_MASTER-START"],
     "ACCUMULO_MONITOR-START": ["ACCUMULO_MASTER-START"],
     "ACCUMULO_GC-START": ["ACCUMULO_MASTER-START"],
     "ACCUMULO_GC-START": ["ACCUMULO_MASTER-START"],
     "ACCUMULO_TRACER-START": ["ACCUMULO_MASTER-START", "ACCUMULO_TSERVER-START"],
     "ACCUMULO_TRACER-START": ["ACCUMULO_MASTER-START", "ACCUMULO_TSERVER-START"],
-    "ACCUMULO_MASTER-STOP" : ["ACCUMULO_TSERVER-STOP", "ACCUMULO_TRACER-STOP", "ACCUMULO_GC-STOP"],
+    "ACCUMULO_MONITOR-STOP" : ["ACCUMULO_MASTER-STOP"],
+    "ACCUMULO_MASTER-STOP" : ["ACCUMULO_TSERVER-STOP"],
+    "ACCUMULO_TSERVER-STOP" : ["ACCUMULO_TRACER-STOP", "ACCUMULO_GC-STOP"],
     "ACCUMULO_SERVICE_CHECK-SERVICE_CHECK": ["ACCUMULO_MASTER-START", "ACCUMULO_TSERVER-START", "ACCUMULO_TRACER-START"],
     "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_ADMIN-START"],
     "RANGER_SERVICE_CHECK-SERVICE_CHECK" : ["RANGER_USERSYNC-START"],
     "RANGER_SERVICE_CHECK-SERVICE_CHECK" : ["RANGER_USERSYNC-START"],

+ 1 - 1
ambari-web/app/controllers/wizard/step8_controller.js

@@ -1814,7 +1814,7 @@ App.WizardStep8Controller = Em.Controller.extend(App.AddSecurityConfigs, App.wiz
     var configs = this.get('configs').filterProperty('filename', site + '.xml');
     var configs = this.get('configs').filterProperty('filename', site + '.xml');
     var attributes = App.router.get('mainServiceInfoConfigsController').getConfigAttributes(configs);
     var attributes = App.router.get('mainServiceInfoConfigsController').getConfigAttributes(configs);
     configs.forEach(function (_configProperty) {
     configs.forEach(function (_configProperty) {
-        var heapsizeExceptions = ['hadoop_heapsize', 'yarn_heapsize', 'nodemanager_heapsize', 'resourcemanager_heapsize', 'apptimelineserver_heapsize', 'jobhistory_heapsize', 'nfsgateway_heapsize'];
+        var heapsizeExceptions = ['hadoop_heapsize', 'yarn_heapsize', 'nodemanager_heapsize', 'resourcemanager_heapsize', 'apptimelineserver_heapsize', 'jobhistory_heapsize', 'nfsgateway_heapsize', 'accumulo_master_heapsize', 'accumulo_tserver_heapsize', 'accumulo_monitor_heapsize', 'accumulo_gc_heapsize', 'accumulo_other_heapsize'];
         // do not pass any globals whose name ends with _host or _hosts
         // do not pass any globals whose name ends with _host or _hosts
         if (_configProperty.isRequiredByAgent !== false) {
         if (_configProperty.isRequiredByAgent !== false) {
           // append "m" to JVM memory options except for heapsizeExtensions
           // append "m" to JVM memory options except for heapsizeExtensions

+ 263 - 0
ambari-web/app/data/HDP2/site_properties.js

@@ -1917,6 +1917,269 @@ var hdp2properties = [
     "index": 0
     "index": 0
   },
   },
 
 
+/********************************************* ACCUMULO *****************************/
+  {
+    "id": "site property",
+    "name": "accumulo_instance_name",
+    "displayName": "Instance Name",
+    "displayType": "string",
+    "isOverridable": false,
+    "isReconfigurable": false,
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-env.xml",
+    "category": "General"
+  },
+  {
+    "id": "site property",
+    "name": "accumulo_user",
+    "displayName": "Accumulo process user",
+    "displayType": "user",
+    "isOverridable": false,
+    "isReconfigurable": false,
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-env.xml",
+    "category": "General"
+  },
+  {
+    "id": "site property",
+    "name": "accumulo_root_password",
+    "displayName": "Accumulo root password",
+    "displayType": "password",
+    "isOverridable": false,
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-env.xml",
+    "category": "General"
+  },
+  {
+    "id": "site property",
+    "name": "trace.user",
+    "displayName": "Trace user",
+    "displayType": "string",
+    "isOverridable": false,
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-site.xml",
+    "category": "General"
+  },
+  {
+    "id": "site property",
+    "name": "trace_password",
+    "displayName": "Trace user password",
+    "displayType": "password",
+    "isOverridable": false,
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-env.xml",
+    "category": "General"
+  },
+  {
+    "id": "site property",
+    "name": "instance_secret",
+    "displayName": "Instance Secret",
+    "displayType": "password",
+    "isOverridable": false,
+    "isReconfigurable": false,
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-env.xml",
+    "category": "General"
+  },
+  {
+    "id": "site property",
+    "name": "server_content",
+    "displayName": "Server accumulo-env template",
+    "displayType": "content",
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-env.xml",
+    "category": "Advanced accumulo-env"
+  },
+  {
+    "id": "puppet var",
+    "name": "accumulo_master_heapsize",
+    "displayName": "Accumulo Master Maximum Java heap size",
+    "displayType": "int",
+    "unit": "MB",
+    "isOverridable": false,
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-env.xml",
+    "category": "Advanced accumulo-env"
+  },
+  {
+    "id": "puppet var",
+    "name": "accumulo_tserver_heapsize",
+    "displayName": "Accumulo TServer Maximum Java heap size",
+    "displayType": "int",
+    "unit": "MB",
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-env.xml",
+    "category": "Advanced accumulo-env"
+  },
+  {
+    "id": "puppet var",
+    "name": "accumulo_monitor_heapsize",
+    "displayName": "Accumulo Monitor Maximum Java heap size",
+    "displayType": "int",
+    "unit": "MB",
+    "isOverridable": false,
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-env.xml",
+    "category": "Advanced accumulo-env"
+  },
+  {
+    "id": "puppet var",
+    "name": "accumulo_gc_heapsize",
+    "displayName": "Accumulo GC Maximum Java heap size",
+    "displayType": "int",
+    "unit": "MB",
+    "isOverridable": false,
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-env.xml",
+    "category": "Advanced accumulo-env"
+  },
+  {
+    "id": "puppet var",
+    "name": "accumulo_other_heapsize",
+    "displayName": "Accumulo Other Maximum Java heap size",
+    "displayType": "int",
+    "unit": "MB",
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-env.xml",
+    "category": "Advanced accumulo-env"
+  },
+  {
+    "id": "puppet var",
+    "name": "accumulo_log_dir",
+    "displayName": "Accumulo Log Dir",
+    "isReconfigurable": false,
+    "displayType": "directory",
+    "isOverridable": false,
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-env.xml",
+    "category": "Advanced accumulo-env"
+  },
+  {
+    "id": "puppet var",
+    "name": "accumulo_pid_dir",
+    "displayName": "Accumulo PID Dir",
+    "isReconfigurable": false,
+    "displayType": "directory",
+    "isOverridable": false,
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-env.xml",
+    "category": "Advanced accumulo-env"
+  },
+  {
+    "id": "site property",
+    "name": "instance.volumes",
+    "displayName": "instance.volumes",
+    "displayType": "string",
+    "isOverridable": false,
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-site.xml",
+    "category": "Advanced accumulo-site",
+    "index": 0
+  },
+  {
+    "id": "site property",
+    "name": "instance.zookeeper.host",
+    "displayName": "instance.zookeeper.host",
+    "displayType": "string",
+    "isOverridable": false,
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-site.xml",
+    "category": "Advanced accumulo-site",
+    "index": 1
+  },
+  {
+    "id": "site property",
+    "name": "instance.zookeeper.timeout",
+    "displayName": "instance.zookeeper.timeout",
+    "displayType": "string",
+    "isOverridable": false,
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-site.xml",
+    "category": "Advanced accumulo-site",
+    "index": 2
+  },
+  {
+    "id": "site property",
+    "name": "master.port.client",
+    "displayName": "master.port.client",
+    "displayType": "int",
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-site.xml",
+    "category": "Advanced accumulo-site",
+    "index": 3
+  },
+  {
+    "id": "site property",
+    "name": "tserver.port.client",
+    "displayName": "tserver.port.client",
+    "displayType": "int",
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-site.xml",
+    "category": "Advanced accumulo-site",
+    "index": 4
+  },
+  {
+    "id": "site property",
+    "name": "monitor.port.client",
+    "displayName": "monitor.port.client",
+    "displayType": "int",
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-site.xml",
+    "category": "Advanced accumulo-site",
+    "index": 5
+  },
+  {
+    "id": "site property",
+    "name": "monitor.port.log4j",
+    "displayName": "monitor.port.log4j",
+    "displayType": "int",
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-site.xml",
+    "category": "Advanced accumulo-site",
+    "index": 6
+  },
+  {
+    "id": "site property",
+    "name": "gc.port.client",
+    "displayName": "gc.port.client",
+    "displayType": "int",
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-site.xml",
+    "category": "Advanced accumulo-site",
+    "index": 7
+  },
+  {
+    "id": "site property",
+    "name": "trace.port.client",
+    "displayName": "trace.port.client",
+    "displayType": "int",
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-site.xml",
+    "category": "Advanced accumulo-site",
+    "index": 8
+  },
+  {
+    "id": "site property",
+    "name": "tserver.memory.maps.native.enabled",
+    "displayName": "tserver.memory.maps.native.enabled",
+    "displayType": "checkbox",
+    "defaultValue": false,
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-site.xml",
+    "category": "Advanced accumulo-site",
+    "index": 9
+  },
+  {
+    "id": "site property",
+    "name": "general.classpaths",
+    "displayName": "general.classpaths",
+    "displayType": "content",
+    "serviceName": "ACCUMULO",
+    "filename": "accumulo-site.xml",
+    "category": "Advanced accumulo-site",
+    "index": 10
+  },
+
 /*******************************************kerberos***********************************/
 /*******************************************kerberos***********************************/
   {
   {
     "id": "puppet var",
     "id": "puppet var",

+ 5 - 0
ambari-web/app/models/stack_service.js

@@ -341,6 +341,11 @@ App.StackService.configCategories = function () {
         App.ServiceConfigCategory.create({ name: 'LDAPSettings', displayName: 'LDAP Settings'})
         App.ServiceConfigCategory.create({ name: 'LDAPSettings', displayName: 'LDAP Settings'})
       ]);
       ]);
       break;
       break;
+    case 'ACCUMULO':
+      serviceConfigCategories.pushObjects([
+        App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'})
+      ]);
+      break;
     case 'PIG':
     case 'PIG':
       break;
       break;
     case 'SQOOP':
     case 'SQOOP':