You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ct...@apache.org on 2014/06/27 01:48:09 UTC

[12/13] git commit: ACCUMULO-2646 Generate config examples in assembly

ACCUMULO-2646 Generate config examples in assembly

  This patch removes unnecessary static configuration files, and instead
  replaces them with generated ones, to simplify improvements to example config
  files. This also gets some consistency in examples. The assembly component
  descriptor is cleaned up a bit by moving assembly-related files into the
  assemble module and by dropping some relative paths and vestigial file sets.


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/037ad964
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/037ad964
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/037ad964

Branch: refs/heads/master
Commit: 037ad964bb6313f78b80d4929450c6e2976c1a11
Parents: c8b7881
Author: Christopher Tubbs <ct...@apache.org>
Authored: Thu Jun 26 19:10:51 2014 -0400
Committer: Christopher Tubbs <ct...@apache.org>
Committed: Thu Jun 26 19:33:18 2014 -0400

----------------------------------------------------------------------
 assemble/bin/LogForwarder.sh                    |  50 +++
 assemble/bin/accumulo                           | 171 ++++++++++
 assemble/bin/bootstrap_config.sh                | 319 +++++++++++++++++++
 assemble/bin/bootstrap_hdfs.sh                  |  84 +++++
 assemble/bin/build_native_library.sh            |  74 +++++
 assemble/bin/check-slaves                       | 199 ++++++++++++
 assemble/bin/config.sh                          | 177 ++++++++++
 assemble/bin/generate_monitor_certificate.sh    |  84 +++++
 assemble/bin/start-all.sh                       |  77 +++++
 assemble/bin/start-here.sh                      |  78 +++++
 assemble/bin/start-server.sh                    |  87 +++++
 assemble/bin/stop-all.sh                        |  68 ++++
 assemble/bin/stop-here.sh                       |  60 ++++
 assemble/bin/stop-server.sh                     |  56 ++++
 assemble/bin/tdown.sh                           |  49 +++
 assemble/bin/tool.sh                            |  92 ++++++
 assemble/bin/tup.sh                             |  46 +++
 assemble/conf/examples/crypto/README            |  23 ++
 assemble/conf/examples/crypto/accumulo-site.xml | 171 ++++++++++
 .../examples/vfs-classloader/accumulo-site.xml  | 175 ++++++++++
 assemble/conf/templates/accumulo-env.sh         |  66 ++++
 assemble/conf/templates/accumulo-metrics.xml    |  60 ++++
 assemble/conf/templates/accumulo-site.xml       | 132 ++++++++
 assemble/conf/templates/accumulo.policy.example | 143 +++++++++
 assemble/conf/templates/auditLog.xml            |  35 ++
 assemble/conf/templates/gc                      |  16 +
 .../conf/templates/generic_logger.properties    |  58 ++++
 assemble/conf/templates/generic_logger.xml      |  83 +++++
 assemble/conf/templates/log4j.properties        |  42 +++
 assemble/conf/templates/masters                 |  16 +
 assemble/conf/templates/monitor                 |  16 +
 .../conf/templates/monitor_logger.properties    |  44 +++
 assemble/conf/templates/monitor_logger.xml      |  64 ++++
 assemble/conf/templates/slaves                  |  16 +
 assemble/conf/templates/tracers                 |  16 +
 assemble/pom.xml                                |  24 ++
 assemble/src/main/assemblies/component.xml      |  57 ++--
 bin/LogForwarder.sh                             |  50 ---
 bin/accumulo                                    | 171 ----------
 bin/bootstrap_config.sh                         | 319 -------------------
 bin/bootstrap_hdfs.sh                           |  84 -----
 bin/build_native_library.sh                     |  74 -----
 bin/check-slaves                                | 199 ------------
 bin/config.sh                                   | 177 ----------
 bin/generate_monitor_certificate.sh             |  84 -----
 bin/start-all.sh                                |  77 -----
 bin/start-here.sh                               |  78 -----
 bin/start-server.sh                             |  87 -----
 bin/stop-all.sh                                 |  68 ----
 bin/stop-here.sh                                |  60 ----
 bin/stop-server.sh                              |  56 ----
 bin/tdown.sh                                    |  49 ---
 bin/tool.sh                                     |  92 ------
 bin/tup.sh                                      |  46 ---
 conf/accumulo.policy.example                    | 143 ---------
 .../1GB/native-standalone/accumulo-env.sh       |  66 ----
 .../1GB/native-standalone/accumulo-metrics.xml  |  60 ----
 .../1GB/native-standalone/accumulo-site.xml     | 122 -------
 .../examples/1GB/native-standalone/auditLog.xml |  41 ---
 conf/examples/1GB/native-standalone/gc          |  16 -
 .../1GB/native-standalone/generic_logger.xml    |  83 -----
 .../1GB/native-standalone/log4j.properties      |  42 ---
 conf/examples/1GB/native-standalone/masters     |  16 -
 conf/examples/1GB/native-standalone/monitor     |  16 -
 .../1GB/native-standalone/monitor_logger.xml    |  64 ----
 conf/examples/1GB/native-standalone/slaves      |  16 -
 conf/examples/1GB/native-standalone/tracers     |  16 -
 conf/examples/1GB/standalone/accumulo-env.sh    |  66 ----
 .../1GB/standalone/accumulo-metrics.xml         |  60 ----
 conf/examples/1GB/standalone/accumulo-site.xml  | 122 -------
 conf/examples/1GB/standalone/auditLog.xml       |  41 ---
 conf/examples/1GB/standalone/gc                 |  16 -
 conf/examples/1GB/standalone/generic_logger.xml |  83 -----
 conf/examples/1GB/standalone/log4j.properties   |  42 ---
 conf/examples/1GB/standalone/masters            |  16 -
 conf/examples/1GB/standalone/monitor            |  16 -
 conf/examples/1GB/standalone/monitor_logger.xml |  64 ----
 conf/examples/1GB/standalone/slaves             |  16 -
 conf/examples/1GB/standalone/tracers            |  16 -
 .../2GB/native-standalone/accumulo-env.sh       |  65 ----
 .../2GB/native-standalone/accumulo-metrics.xml  |  60 ----
 .../2GB/native-standalone/accumulo-site.xml     | 112 -------
 .../examples/2GB/native-standalone/auditLog.xml |  41 ---
 conf/examples/2GB/native-standalone/gc          |  16 -
 .../2GB/native-standalone/generic_logger.xml    |  83 -----
 .../2GB/native-standalone/log4j.properties      |  42 ---
 conf/examples/2GB/native-standalone/masters     |  16 -
 conf/examples/2GB/native-standalone/monitor     |  16 -
 .../2GB/native-standalone/monitor_logger.xml    |  64 ----
 conf/examples/2GB/native-standalone/slaves      |  16 -
 conf/examples/2GB/native-standalone/tracers     |  16 -
 conf/examples/2GB/standalone/accumulo-env.sh    |  66 ----
 .../2GB/standalone/accumulo-metrics.xml         |  60 ----
 conf/examples/2GB/standalone/accumulo-site.xml  | 125 --------
 conf/examples/2GB/standalone/auditLog.xml       |  41 ---
 conf/examples/2GB/standalone/gc                 |  16 -
 conf/examples/2GB/standalone/generic_logger.xml |  83 -----
 conf/examples/2GB/standalone/log4j.properties   |  42 ---
 conf/examples/2GB/standalone/masters            |  16 -
 conf/examples/2GB/standalone/monitor            |  16 -
 conf/examples/2GB/standalone/monitor_logger.xml |  64 ----
 conf/examples/2GB/standalone/slaves             |  16 -
 conf/examples/2GB/standalone/tracers            |  16 -
 .../3GB/native-standalone/accumulo-env.sh       |  65 ----
 .../3GB/native-standalone/accumulo-metrics.xml  |  60 ----
 .../3GB/native-standalone/accumulo-site.xml     | 107 -------
 .../examples/3GB/native-standalone/auditLog.xml |  41 ---
 conf/examples/3GB/native-standalone/gc          |  16 -
 .../3GB/native-standalone/generic_logger.xml    |  83 -----
 .../3GB/native-standalone/log4j.properties      |  42 ---
 conf/examples/3GB/native-standalone/masters     |  16 -
 conf/examples/3GB/native-standalone/monitor     |  16 -
 .../3GB/native-standalone/monitor_logger.xml    |  64 ----
 conf/examples/3GB/native-standalone/slaves      |  16 -
 conf/examples/3GB/native-standalone/tracers     |  16 -
 conf/examples/3GB/standalone/accumulo-env.sh    |  65 ----
 .../3GB/standalone/accumulo-metrics.xml         |  60 ----
 conf/examples/3GB/standalone/accumulo-site.xml  | 112 -------
 conf/examples/3GB/standalone/auditLog.xml       |  41 ---
 conf/examples/3GB/standalone/gc                 |  16 -
 conf/examples/3GB/standalone/generic_logger.xml |  83 -----
 conf/examples/3GB/standalone/log4j.properties   |  42 ---
 conf/examples/3GB/standalone/masters            |  16 -
 conf/examples/3GB/standalone/monitor            |  16 -
 conf/examples/3GB/standalone/monitor_logger.xml |  64 ----
 conf/examples/3GB/standalone/slaves             |  16 -
 conf/examples/3GB/standalone/tracers            |  16 -
 .../512MB/native-standalone/accumulo-env.sh     |  65 ----
 .../native-standalone/accumulo-metrics.xml      |  60 ----
 .../512MB/native-standalone/accumulo-site.xml   | 117 -------
 .../512MB/native-standalone/auditLog.xml        |  41 ---
 conf/examples/512MB/native-standalone/gc        |  16 -
 .../512MB/native-standalone/generic_logger.xml  |  83 -----
 .../512MB/native-standalone/log4j.properties    |  42 ---
 conf/examples/512MB/native-standalone/masters   |  16 -
 conf/examples/512MB/native-standalone/monitor   |  16 -
 .../512MB/native-standalone/monitor_logger.xml  |  64 ----
 conf/examples/512MB/native-standalone/slaves    |  16 -
 conf/examples/512MB/native-standalone/tracers   |  16 -
 conf/examples/512MB/standalone/accumulo-env.sh  |  65 ----
 .../512MB/standalone/accumulo-metrics.xml       |  60 ----
 .../examples/512MB/standalone/accumulo-site.xml | 123 -------
 conf/examples/512MB/standalone/auditLog.xml     |  41 ---
 conf/examples/512MB/standalone/gc               |  16 -
 .../512MB/standalone/generic_logger.xml         |  83 -----
 conf/examples/512MB/standalone/log4j.properties |  42 ---
 conf/examples/512MB/standalone/masters          |  16 -
 conf/examples/512MB/standalone/monitor          |  16 -
 .../512MB/standalone/monitor_logger.xml         |  64 ----
 conf/examples/512MB/standalone/slaves           |  16 -
 conf/examples/512MB/standalone/tracers          |  16 -
 conf/examples/crypto/README                     |  23 --
 conf/examples/crypto/accumulo-site.xml          | 171 ----------
 conf/examples/vfs-classloader/accumulo-site.xml | 175 ----------
 conf/templates/accumulo-env.sh                  |  66 ----
 conf/templates/accumulo-metrics.xml             |  60 ----
 conf/templates/accumulo-site.xml                | 132 --------
 conf/templates/accumulo.policy.example          | 143 ---------
 conf/templates/auditLog.xml                     |  35 --
 conf/templates/gc                               |  16 -
 conf/templates/generic_logger.properties        |  58 ----
 conf/templates/generic_logger.xml               |  83 -----
 conf/templates/log4j.properties                 |  42 ---
 conf/templates/masters                          |  16 -
 conf/templates/monitor                          |  16 -
 conf/templates/monitor_logger.properties        |  44 ---
 conf/templates/monitor_logger.xml               |  64 ----
 conf/templates/slaves                           |  16 -
 conf/templates/tracers                          |  16 -
 169 files changed, 3001 insertions(+), 7540 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/037ad964/assemble/bin/LogForwarder.sh
----------------------------------------------------------------------
diff --git a/assemble/bin/LogForwarder.sh b/assemble/bin/LogForwarder.sh
new file mode 100755
index 0000000..5fe7871
--- /dev/null
+++ b/assemble/bin/LogForwarder.sh
@@ -0,0 +1,50 @@
+#! /usr/bin/env bash
+
+# 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 script executes a program that will forward some or all of the logs to a running instance of Chainsaw v2.
+# To use this script, start Chainsaw on a host and create a new XMLSocketReceiver. This script
+# accepts the following command line parameters
+#
+#	host [required] - host running Chainsaw. Must be accessible via the network from this server
+#   port [required] - port that XMLSocketReceiver is listening on.
+#   filter [optional] - filter for log file names, * and ? are valid wildcards
+#   start [optional] - filter log messages beginning at this time (format is yyyyMMddHHmmss)
+#   end [optional] - filter log messages ending at this time (default is now, format is yyyyMMddHHmmss)
+#   level [optional] - filter log messages with this level and higher
+#   regex [optional] - filter log messages that match this regex (follows java.util.regex.Pattern syntax)
+#
+#
+# Example:
+#
+#	LogForwarder.sh -h 127.0.0.1 -p 4448 -f tserver* -s 2010010100001 -e 20100101235959 -l INFO -m .*scan.*
+#
+
+# Start: Resolve Script Directory
+SOURCE="${BASH_SOURCE[0]}"
+while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
+   bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+   SOURCE="$(readlink "$SOURCE")"
+   [[ $SOURCE != /* ]] && SOURCE="$bin/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
+done
+bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+script=$( basename "$SOURCE" )
+# Stop: Resolve Script Directory
+
+. "$bin"/config.sh
+
+${JAVA_HOME}/bin/java -cp $ACCUMULO_HOME/lib org.apache.accumulo.server.util.SendLogToChainsaw -d $ACCUMULO_LOG_DIR "$@"

http://git-wip-us.apache.org/repos/asf/accumulo/blob/037ad964/assemble/bin/accumulo
----------------------------------------------------------------------
diff --git a/assemble/bin/accumulo b/assemble/bin/accumulo
new file mode 100755
index 0000000..bdd742d
--- /dev/null
+++ b/assemble/bin/accumulo
@@ -0,0 +1,171 @@
+#! /usr/bin/env bash
+
+# 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.
+
+# Start: Resolve Script Directory
+SOURCE="${BASH_SOURCE[0]}"
+while [ -h "${SOURCE}" ]; do # resolve $SOURCE until the file is no longer a symlink
+   bin="$( cd -P "$( dirname "${SOURCE}" )" && pwd )"
+   SOURCE="$(readlink "${SOURCE}")"
+   [[ "${SOURCE}" != /* ]] && SOURCE="${bin}/${SOURCE}" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
+done
+bin="$( cd -P "$( dirname "${SOURCE}" )" && pwd )"
+script=$( basename "${SOURCE}" )
+# Stop: Resolve Script Directory
+
+. "${bin}"/config.sh
+
+START_JAR="${ACCUMULO_HOME}/lib/accumulo-start.jar"
+if [ ! -f "$START_JAR" ]; then
+   if [ -x /bin/rpm ]; then
+       START_JAR=$(echo $(/bin/rpm -E "%{_javadir}/accumulo/"accumulo-start-*.jar))
+   fi
+fi
+
+#
+# Resolve a program to its installation directory
+#
+locationByProgram()
+{
+   RESULT=$( which "$1" )
+   if [[ "$?" != 0 && -z "${RESULT}" ]]; then
+      echo "Cannot find '$1' and '$2' is not set in $ACCUMULO_CONF_DIR/accumulo-env.sh"
+      exit 1
+   fi
+   while [ -h "${RESULT}" ]; do # resolve $RESULT until the file is no longer a symlink
+      DIR="$( cd -P "$( dirname "$RESULT" )" && pwd )"
+      RESULT="$(readlink "${RESULT}")"
+      [[ "${RESULT}" != /* ]] && RESULT="${DIR}/${RESULT}" # if $RESULT was a relative symlink, we need to resolve it relative to the path where the symlink file was located
+   done
+   # find the relative home directory, accounting for an extra bin directory
+   RESULT=$(dirname $(dirname "${RESULT}") )
+   echo "Auto-set ${2} to '${RESULT}'.  To suppress this message, set ${2} in conf/accumulo-env.sh"
+   eval "${2}=${RESULT}"
+}
+
+test -z "${JAVA_HOME}"      && locationByProgram java JAVA_HOME
+test -z "${HADOOP_PREFIX}"  && locationByProgram hadoop HADOOP_PREFIX
+test -z "${ZOOKEEPER_HOME}" && locationByProgram zkCli.sh ZOOKEEPER_HOME
+
+DEFAULT_GENERAL_JAVA_OPTS=""
+
+#
+# ACCUMULO_XTRAJARS is where all of the commandline -add items go into for reading by accumulo.
+# It also holds the JAR run with the jar command and, if possible, any items in the JAR manifest's Class-Path.
+#
+if [ "$1" = "-add" ] ; then
+    export ACCUMULO_XTRAJARS="$2"
+    shift 2
+else
+    export ACCUMULO_XTRAJARS=""
+fi
+if [ "$1" = "jar" -a -f "$2" ] ; then
+    if [[ $2 =~ ^/ ]]; then
+      jardir="$(dirname "$2")"
+      jarfile="$2"
+    else
+      jardir="$(pwd)"
+      jarfile="${jardir}/${2}"
+    fi
+    if jar tf "$jarfile" | grep -q META-INF/MANIFEST.MF ; then
+      cp="$(unzip -p "$jarfile" META-INF/MANIFEST.MF | grep ^Class-Path: | sed 's/^Class-Path: *//')"
+      if [ -n "$cp" ] ; then
+         for j in $cp; do
+            if [ "$j" != "Class-Path:" ]; then
+               ACCUMULO_XTRAJARS="${jardir}/${j},$ACCUMULO_XTRAJARS"
+            fi
+         done
+      fi
+    fi
+    ACCUMULO_XTRAJARS="${jarfile},$ACCUMULO_XTRAJARS"
+fi
+
+#
+# Set up -D switches for JAAS and Kerberos if env variables set
+#
+if [ ! -z ${ACCUMULO_JAAS_CONF} ]; then
+  ACCUMULO_GENERAL_OPTS="${ACCUMULO_GENERAL_OPTS} -Djava.security.auth.login.config=${ACCUMULO_JAAS_CONF}"
+fi
+
+if [ ! -z ${ACCUMULO_KRB5_CONF} ]; then
+  ACCUMULO_GENERAL_OPTS="${ACCUMULO_GENERAL_OPTS} -Djava.security.krb5.conf=${ACCUMULO_KRB5_CONF}"
+fi
+
+#
+# Add appropriate options for process type
+#
+case "$1" in
+master)  export ACCUMULO_OPTS="${ACCUMULO_GENERAL_OPTS} ${ACCUMULO_MASTER_OPTS}" ;;
+gc)      export ACCUMULO_OPTS="${ACCUMULO_GENERAL_OPTS} ${ACCUMULO_GC_OPTS}" ;;
+tserver) export ACCUMULO_OPTS="${ACCUMULO_GENERAL_OPTS} ${ACCUMULO_TSERVER_OPTS}" ;;
+monitor) export ACCUMULO_OPTS="${ACCUMULO_GENERAL_OPTS} ${ACCUMULO_MONITOR_OPTS}" ;;
+logger)  export ACCUMULO_OPTS="${ACCUMULO_GENERAL_OPTS} ${ACCUMULO_LOGGER_OPTS}" ;;
+*)       export ACCUMULO_OPTS="${ACCUMULO_GENERAL_OPTS} ${ACCUMULO_OTHER_OPTS}" ;;
+esac
+
+XML_FILES="${ACCUMULO_CONF_DIR}"
+LOG4J_JAR=$(find -H "${HADOOP_PREFIX}/lib" "${HADOOP_PREFIX}"/share/hadoop/common/lib -name 'log4j*.jar' -print 2>/dev/null | head -1)
+CLASSPATH="${XML_FILES}:${START_JAR}:${LOG4J_JAR}"
+
+if [ -z "${JAVA_HOME}" -o ! -d "${JAVA_HOME}" ]; then
+   echo "JAVA_HOME is not set or is not a directory.  Please make sure it's set globally or in conf/accumulo-env.sh"
+   exit 1
+fi
+if [ -z "${HADOOP_PREFIX}" -o ! -d "${HADOOP_PREFIX}" ]; then
+   echo "HADOOP_PREFIX is not set or is not a directory.  Please make sure it's set globally or in conf/accumulo-env.sh"
+   exit 1
+fi
+if [ -z "${ZOOKEEPER_HOME}" -o ! -d "${ZOOKEEPER_HOME}" ]; then
+   echo "ZOOKEEPER_HOME is not set or is not a directory.  Please make sure it's set globally or in conf/accumulo-env.sh"
+   exit 1
+fi
+if [ -z "${ACCUMULO_LOG_DIR}" ]; then
+   echo "ACCUMULO_LOG_DIR is not set.  Please make sure it's set globally or in conf/accumulo-env.sh"
+   exit 1
+fi
+
+if [ ! -d "${ACCUMULO_LOG_DIR}" ]; then
+   mkdir -p "$ACCUMULO_LOG_DIR"
+fi
+
+# This is default for hadoop 2.x;
+#   for hadoop 1.0, 1.1, specify (DY)LD_LIBRARY_PATH
+#   explicitly in ${ACCUMULO_HOME}/conf/accumulo-env.sh
+#   usually something like:
+#     ${HADOOP_PREFIX}/lib/native/${PLATFORM}
+if [ -e "${HADOOP_PREFIX}/lib/native/libhadoop.so" ]; then
+   LIB_PATH="${HADOOP_PREFIX}/lib/native"
+   LD_LIBRARY_PATH="${LIB_PATH}:${LD_LIBRARY_PATH}"     # For Linux
+   DYLD_LIBRARY_PATH="${LIB_PATH}:${DYLD_LIBRARY_PATH}" # For Mac
+fi
+
+# Export the variables just in case they are not exported
+# This makes them available to java
+export JAVA_HOME HADOOP_PREFIX ZOOKEEPER_HOME LD_LIBRARY_PATH DYLD_LIBRARY_PATH
+#
+# app isn't used anywhere, but it makes the process easier to spot when ps/top/snmp truncate the command line
+JAVA="${JAVA_HOME}/bin/java"
+exec $JAVA "-Dapp=$1" \
+   $ACCUMULO_OPTS \
+   -classpath "${CLASSPATH}" \
+   -XX:OnOutOfMemoryError="${ACCUMULO_KILL_CMD:-kill -9 %p}" \
+   -XX:-OmitStackTraceInFastThrow \
+   -Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl \
+   -Dorg.apache.accumulo.core.home.dir="${ACCUMULO_HOME}" \
+   -Dhadoop.home.dir="${HADOOP_PREFIX}" \
+   -Dzookeeper.home.dir="${ZOOKEEPER_HOME}" \
+   org.apache.accumulo.start.Main \
+   "$@"

http://git-wip-us.apache.org/repos/asf/accumulo/blob/037ad964/assemble/bin/bootstrap_config.sh
----------------------------------------------------------------------
diff --git a/assemble/bin/bootstrap_config.sh b/assemble/bin/bootstrap_config.sh
new file mode 100755
index 0000000..5d36499
--- /dev/null
+++ b/assemble/bin/bootstrap_config.sh
@@ -0,0 +1,319 @@
+#! /usr/bin/env bash
+
+# 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.
+
+function usage {
+  cat <<EOF
+Usage: bootstrap_config.sh [-options]
+where options include:
+    -d --dir        Alternate directory to setup config files
+    -s --size       Supported sizes: '1GB' '2GB' '3GB' '512MB'
+    -n --native     Configure to use native libraries
+    -j --jvm        Configure to use the jvm
+    -o --overwrite  Overwrite the default config directory
+    -v --version    Specify the Apache Hadoop version supported versions: '1' '2'
+    -h --help       Print this help message
+EOF
+}
+
+# Start: Resolve Script Directory
+SOURCE="${BASH_SOURCE[0]}"
+while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
+  bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+  SOURCE="$(readlink "$SOURCE")"
+  [[ $SOURCE != /* ]] && SOURCE="$bin/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
+done
+bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+
+# Stop: Resolve Script Directory
+
+#
+# Resolve accumulo home for bootstrapping
+#
+ACCUMULO_HOME=$( cd -P ${bin}/.. && pwd )
+TEMPLATE_CONF_DIR="${ACCUMULO_HOME}/conf/templates"
+CONF_DIR="${ACCUMULO_HOME}/conf"
+ACCUMULO_SITE=accumulo-site.xml
+ACCUMULO_ENV=accumulo-env.sh
+
+SIZE=
+TYPE=
+HADOOP_VERSION=
+OVERWRITE="0"
+BASE_DIR=
+
+#Execute getopt
+args=$(getopt -o "b:d:s:njov:h" -l "basedir:,dir:,size:,native,jvm,overwrite,version:,help" -q -- "$@")
+
+#Bad arguments
+if [[ $? != 0 ]]; then
+  usage 1>&2
+  exit 1
+fi
+eval set -- $args
+
+for i
+do
+  case "$i" in
+    -b|--basedir) #Hidden option used to set general.maven.project.basedir for developers
+      BASE_DIR=$2; shift
+      shift;;
+    -d|--dir)
+      CONF_DIR=$2; shift
+      shift;;
+    -s|--size)
+      SIZE=$2; shift
+      shift;;
+    -n|--native)
+      TYPE=native
+      shift;;
+    -j|--jvm)
+      TYPE=jvm
+      shift;;
+    -o|--overwrite)
+      OVERWRITE=1
+      shift;;
+    -v|--version)
+      HADOOP_VERSION=$2; shift
+      shift;;
+    -h|--help)
+      usage
+      exit 0
+      shift;;
+    --)
+    shift
+    break;;
+  esac
+done
+
+while [[ "${OVERWRITE}" = "0" ]]; do
+  if [[ -e "${CONF_DIR}/${ACCUMULO_ENV}" || -e "${CONF_DIR}/${ACCUMULO_SITE}" ]]; then
+    echo "Warning your current config files in ${CONF_DIR} will be overwritten!"
+    echo
+    echo "How would you like to proceed?:"
+    select CHOICE in 'Continue with overwrite' 'Specify new conf dir'; do
+      if [[ "${CHOICE}" = 'Specify new conf dir' ]]; then
+        echo -n "Please specifiy new conf directory: "
+        read CONF_DIR
+      elif [[ "${CHOICE}" = 'Continue with overwrite' ]]; then
+        OVERWRITE=1
+      fi
+      break
+    done
+  else
+    OVERWRITE=1
+  fi
+done
+echo "Coppying configuration files to: ${CONF_DIR}"
+
+#Native 1GB
+native_1GB_tServer="-Xmx128m -Xms128m"
+_1GB_master="-Xmx128m -Xms128m"
+_1GB_monitor="-Xmx64m -Xms64m"
+_1GB_gc="-Xmx64m -Xms64m"
+_1GB_other="-Xmx128m -Xms64m"
+
+_1GB_memoryMapMax="256M"
+native_1GB_nativeEnabled="true"
+_1GB_cacheDataSize="15M"
+_1GB_cacheIndexSize="40M"
+_1GB_sortBufferSize="50M"
+_1GB_waLogMaxSize="256M"
+
+#Native 2GB
+native_2GB_tServer="-Xmx256m -Xms256m"
+_2GB_master="-Xmx256m -Xms256m"
+_2GB_monitor="-Xmx128m -Xms64m"
+_2GB_gc="-Xmx128m -Xms128m"
+_2GB_other="-Xmx256m -Xms64m"
+
+_2GB_memoryMapMax="512M"
+native_2GB_nativeEnabled="true"
+_2GB_cacheDataSize="30M"
+_2GB_cacheIndexSize="80M"
+_2GB_sortBufferSize="50M"
+_2GB_waLogMaxSize="512M"
+
+#Native 3GB
+native_3GB_tServer="-Xmx1g -Xms1g -XX:NewSize=500m -XX:MaxNewSize=500m"
+_3GB_master="-Xmx1g -Xms1g"
+_3GB_monitor="-Xmx1g -Xms256m"
+_3GB_gc="-Xmx256m -Xms256m"
+_3GB_other="-Xmx1g -Xms256m"
+
+_3GB_memoryMapMax="1G"
+native_3GB_nativeEnabled="true"
+_3GB_cacheDataSize="128M"
+_3GB_cacheIndexSize="128M"
+_3GB_sortBufferSize="200M"
+_3GB_waLogMaxSize="1G"
+
+#Native 512MB
+native_512MB_tServer="-Xmx48m -Xms48m"
+_512MB_master="-Xmx128m -Xms128m"
+_512MB_monitor="-Xmx64m -Xms64m"
+_512MB_gc="-Xmx64m -Xms64m"
+_512MB_other="-Xmx128m -Xms64m"
+
+_512MB_memoryMapMax="80M"
+native_512MB_nativeEnabled="true"
+_512MB_cacheDataSize="7M"
+_512MB_cacheIndexSize="20M"
+_512MB_sortBufferSize="50M"
+_512MB_waLogMaxSize="100M"
+
+#JVM 1GB
+jvm_1GB_tServer="-Xmx384m -Xms384m"
+
+jvm_1GB_nativeEnabled="false"
+
+#JVM 2GB
+jvm_2GB_tServer="-Xmx768m -Xms768m"
+
+jvm_2GB_nativeEnabled="false"
+
+#JVM 3GB
+jvm_3GB_tServer="-Xmx2g -Xms2g -XX:NewSize=1G -XX:MaxNewSize=1G"
+
+jvm_3GB_nativeEnabled="false"
+
+#JVM 512MB
+jvm_512MB_tServer="-Xmx128m -Xms128m"
+
+jvm_512MB_nativeEnabled="false"
+
+
+if [[ -z "${SIZE}" ]]; then
+  echo "Choose the heap configuration:"
+  select DIRNAME in 1GB 2GB 3GB 512MB; do
+    echo "Using '${DIRNAME}' configuration"
+    SIZE=${DIRNAME}
+    break
+  done
+elif [[ "${SIZE}" != "1GB" && "${SIZE}" != "2GB"  && "${SIZE}" != "3GB" && "${SIZE}" != "512MB" ]]; then
+  echo "Invalid memory size"
+  echo "Supported sizes: '1GB' '2GB' '3GB' '512MB'"
+  exit 1
+fi
+
+if [[ -z "${TYPE}" ]]; then
+  echo
+  echo "Choose the Accumulo memory-map type:"
+  select TYPENAME in Java Native; do
+    if [[ "${TYPENAME}" == "Native" ]]; then
+      TYPE="native"
+      echo "Don't forget to build the native libraries using the bin/build_native_library.sh script"
+    elif [[ "${TYPENAME}" == "Java" ]]; then
+      TYPE="jvm"
+    fi
+    echo "Using '${TYPE}' configuration"
+    echo
+    break
+  done
+fi
+
+if [[ -z "${HADOOP_VERSION}" ]]; then
+  echo
+  echo "Choose the Apache Hadoop version:"
+  select HADOOP in 'HADOOP 1' 'HADOOP 2' ; do
+    if [ "${HADOOP}" == "HADOOP 2" ]; then
+      HADOOP_VERSION="2"
+    elif [ "${HADOOP}" == "HADOOP 1" ]; then
+      HADOOP_VERSION="1"
+    fi
+    echo "Using Apache Hadoop version '${HADOOP_VERSION}' configuration"
+    echo
+    break
+  done
+elif [[ "${HADOOP_VERSION}" != "1" && "${HADOOP_VERSION}" != "2" ]]; then
+  echo "Invalid Apache Hadoop version"
+  echo "Supported Apache Hadoop versions: '1' '2'"
+  exit 1
+fi
+
+for var in SIZE TYPE HADOOP_VERSION; do
+  if [[ -z ${!var} ]]; then
+    echo "Invalid $var configuration"
+    exit 1
+  fi
+done
+
+TSERVER="${TYPE}_${SIZE}_tServer"
+MASTER="_${SIZE}_master"
+MONITOR="_${SIZE}_monitor"
+GC="_${SIZE}_gc"
+OTHER="_${SIZE}_other"
+
+MEMORY_MAP_MAX="_${SIZE}_memoryMapMax"
+NATIVE="${TYPE}_${SIZE}_nativeEnabled"
+CACHE_DATA_SIZE="_${SIZE}_cacheDataSize"
+CACHE_INDEX_SIZE="_${SIZE}_cacheIndexSize"
+SORT_BUFFER_SIZE="_${SIZE}_sortBufferSize"
+WAL_MAX_SIZE="_${SIZE}_waLogMaxSize"
+
+MAVEN_PROJ_BASEDIR=""
+
+if [[ ! -z "${BASE_DIR}" ]]; then
+  MAVEN_PROJ_BASEDIR="\n  <property>\n    <name>general.maven.project.basedir</name>\n    <value>${BASE_DIR}</value>\n  </property>\n"
+fi
+
+#Configure accumulo-env.sh
+mkdir -p "${CONF_DIR}" && cp ${TEMPLATE_CONF_DIR}/* ${CONF_DIR}/
+sed -e "s/\${tServerHigh_tServerLow}/${!TSERVER}/" \
+    -e "s/\${masterHigh_masterLow}/${!MASTER}/" \
+    -e "s/\${monitorHigh_monitorLow}/${!MONITOR}/" \
+    -e "s/\${gcHigh_gcLow}/${!GC}/" \
+    -e "s/\${otherHigh_otherLow}/${!OTHER}/" \
+    ${TEMPLATE_CONF_DIR}/$ACCUMULO_ENV > ${CONF_DIR}/$ACCUMULO_ENV
+
+#Configure accumulo-site.xml
+sed -e "s/\${memMapMax}/${!MEMORY_MAP_MAX}/" \
+    -e "s/\${nativeEnabled}/${!NATIVE}/" \
+    -e "s/\${cacheDataSize}/${!CACHE_DATA_SIZE}/" \
+    -e "s/\${cacheIndexSize}/${!CACHE_INDEX_SIZE}/" \
+    -e "s/\${sortBufferSize}/${!SORT_BUFFER_SIZE}/" \
+    -e "s/\${waLogMaxSize}/${!WAL_MAX_SIZE}/" \
+    -e "s=\${mvnProjBaseDir}=${MAVEN_PROJ_BASEDIR}=" ${TEMPLATE_CONF_DIR}/$ACCUMULO_SITE > ${CONF_DIR}/$ACCUMULO_SITE
+
+#Configure for hadoop 1
+if [[ "$HADOOP_VERSION" = "1" ]]; then
+  sed -e 's/^test -z \"$HADOOP_CONF_DIR\"/#test -z \"$HADOOP_CONF_DIR\"/' -e 's/^# test -z "$HADOOP_CONF_DIR"/test -z \"$HADOOP_CONF_DIR\"/' ${CONF_DIR}/$ACCUMULO_ENV > temp
+  mv temp ${CONF_DIR}/$ACCUMULO_ENV
+  sed -e 's/<!-- Hadoop 2 requirements -->/<!-- Hadoop 2 requirements -->\n      <!--/' \
+      -e 's/<!-- End Hadoop 2 requirements -->/-->\n      <!-- End Hadoop 2 requirements -->/' \
+      ${CONF_DIR}/$ACCUMULO_SITE > temp
+  mv temp  ${CONF_DIR}/$ACCUMULO_SITE
+fi
+
+#Additional setup steps for native configuration.
+if [[ "${TYPE}" = "native" ]]; then
+  if [[ "$(uname)" = 'Linux' ]]; then
+    if [[ -z $HADOOP_PREFIX ]]; then
+      echo "HADOOP_PREFIX not set cannot automatically configure LD_LIBRARY_PATH"
+    else
+      NATIVE_LIB=$(readlink -ef $(dirname $(for x in $(find $HADOOP_PREFIX -name libhadoop.so); do ld $x 2>/dev/null && echo $x && break; done) 2>>/dev/null) 2>>/dev/null)
+      if [[ -z $NATIVE_LIB ]]; then
+        echo -e "Native libraries could not be found for your sytem in: $HADOOP_PREFIX"
+      else
+        sed "/# Should the monitor/ i export LD_LIBRARY_PATH=${NATIVE_LIB}:\${LD_LIBRARY_PATH}" ${CONF_DIR}/$ACCUMULO_ENV > temp
+        mv temp ${CONF_DIR}/$ACCUMULO_ENV
+        echo -e "Added ${NATIVE_LIB} to the LD_LIBRARY_PATH"
+      fi
+    fi
+  fi
+  echo -e "Please remember to compile the native libraries using the bin/build_native_library.sh script and to set the LD_LIBRARY_PATH variable in the ${CONF_DIR}/accumulo-env.sh script if needed."
+fi
+echo "Setup complete"

http://git-wip-us.apache.org/repos/asf/accumulo/blob/037ad964/assemble/bin/bootstrap_hdfs.sh
----------------------------------------------------------------------
diff --git a/assemble/bin/bootstrap_hdfs.sh b/assemble/bin/bootstrap_hdfs.sh
new file mode 100755
index 0000000..6f38f63
--- /dev/null
+++ b/assemble/bin/bootstrap_hdfs.sh
@@ -0,0 +1,84 @@
+#! /usr/bin/env bash
+
+# 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.
+
+# Start: Resolve Script Directory
+SOURCE="${BASH_SOURCE[0]}"
+while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
+   bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+   SOURCE="$(readlink "$SOURCE")"
+   [[ $SOURCE != /* ]] && SOURCE="$bin/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
+done
+bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+# Stop: Resolve Script Directory
+
+. "$bin"/config.sh
+
+#
+# Find the system context directory in HDFS
+#
+SYSTEM_CONTEXT_HDFS_DIR=$(grep -A1 "general.vfs.classpaths" "$ACCUMULO_CONF_DIR/accumulo-site.xml" | tail -1 | perl -pe 's/\s+<value>//; s/<\/value>//; s|[^/]+$||; print $ARGV[1]')
+
+if [ -z "$SYSTEM_CONTEXT_HDFS_DIR" ]
+then
+   echo "Your accumulo-site.xml file is not set up for the HDFS Classloader. Please add the following to your accumulo-site.xml file:"
+   echo ""
+   echo "<property>"
+   echo "   <name>general.vfs.classpaths</name>"
+   echo "   <value>hdfs://host:port/dir</value>"
+   echo "   <description>location of the jars for the default (system) context</description>"
+   echo "</property>"
+   exit 1
+fi
+
+#
+# Create the system context directy in HDFS if it does not exist
+#
+"$HADOOP_PREFIX/bin/hadoop" fs -ls "$SYSTEM_CONTEXT_HDFS_DIR"  > /dev/null
+if [ $? -ne 0 ]; then
+   "$HADOOP_PREFIX/bin/hadoop" fs -mkdir "$SYSTEM_CONTEXT_HDFS_DIR"  > /dev/null
+fi
+
+#
+# Replicate to all slaves to avoid network contention on startup
+#
+SLAVES="$ACCUMULO_CONF_DIR/slaves"
+NUM_SLAVES=$(egrep -v '(^#|^\s*$)' "$SLAVES" | wc -l)
+
+#let each datanode service around 50 clients
+let "REP=$NUM_SLAVES/50"
+
+if [ $REP -lt 3 ]; then
+   REP=3
+fi
+
+#
+# Copy all jars in lib to the system context directory
+#
+"$HADOOP_PREFIX/bin/hadoop" fs -moveFromLocal "$ACCUMULO_HOME"/lib/*.jar "$SYSTEM_CONTEXT_HDFS_DIR"  > /dev/null
+"$HADOOP_PREFIX/bin/hadoop" fs -setrep -R $REP "$SYSTEM_CONTEXT_HDFS_DIR"  > /dev/null
+
+#
+# We need two of the jars in lib, copy them back out and remove them from the system context dir
+#
+"$HADOOP_PREFIX/bin/hadoop" fs -copyToLocal "$SYSTEM_CONTEXT_HDFS_DIR/commons-vfs2.jar" "$ACCUMULO_HOME/lib/."  > /dev/null
+"$HADOOP_PREFIX/bin/hadoop" fs -rmr "$SYSTEM_CONTEXT_HDFS_DIR/commons-vfs2.jar"  > /dev/null
+"$HADOOP_PREFIX/bin/hadoop" fs -copyToLocal "$SYSTEM_CONTEXT_HDFS_DIR/accumulo-start.jar" "$ACCUMULO_HOME/lib/."  > /dev/null
+"$HADOOP_PREFIX/bin/hadoop" fs -rmr "$SYSTEM_CONTEXT_HDFS_DIR/accumulo-start.jar"  > /dev/null
+for f in `cat $ACCUMULO_CONF_DIR/slaves`
+do
+  rsync -ra --delete $ACCUMULO_HOME `dirname $ACCUMULO_HOME`
+done

http://git-wip-us.apache.org/repos/asf/accumulo/blob/037ad964/assemble/bin/build_native_library.sh
----------------------------------------------------------------------
diff --git a/assemble/bin/build_native_library.sh b/assemble/bin/build_native_library.sh
new file mode 100755
index 0000000..907ce2c
--- /dev/null
+++ b/assemble/bin/build_native_library.sh
@@ -0,0 +1,74 @@
+#!/usr/bin/env bash
+
+# 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.
+
+# Start: Resolve Script Directory
+SOURCE="${BASH_SOURCE[0]}"
+while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
+   bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+   SOURCE="$(readlink "$SOURCE")"
+   [[ $SOURCE != /* ]] && SOURCE="$bin/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
+done
+bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+script=$( basename "$SOURCE" )
+# Stop: Resolve Script Directory
+
+
+lib="${bin}/../lib"
+native_tarball="${lib}/accumulo-native.tar.gz"
+final_native_target="${lib}/native"
+
+if [[ ! -f $native_tarball ]]; then
+    echo "Could not find native code artifact: ${native_tarball}";
+    exit 1
+fi
+
+# Make the destination for the native library
+mkdir -p "${final_native_target}"
+
+# Make a directory for us to unpack the native source into
+TMP_DIR=`mktemp -d /tmp/accumulo-native.XXXX` || exit 1
+
+# Unpack the tarball to our temp directory
+tar xf "${native_tarball}" -C "${TMP_DIR}"
+
+if [[ $? -ne 0 ]]; then
+    echo "Failed to unpack native tarball to ${TMP_DIR}"
+    exit 1
+fi
+
+# Move to the first (only) directory in our unpacked tarball
+native_dir=`find "${TMP_DIR}" -maxdepth 1 -mindepth 1 -type d`
+
+cd "${native_dir}"
+
+# Make the native library
+export USERFLAGS=$@
+make
+
+# Make sure it didn't fail
+if [[ $? -ne 0 ]]; then
+    echo "Make failed!"
+    exit 1
+fi
+
+# "install" the artifact
+cp libaccumulo.* "${final_native_target}"
+
+# Clean up our temp directory
+rm -rf "${TMP_DIR}"
+
+echo "Successfully installed native library"

http://git-wip-us.apache.org/repos/asf/accumulo/blob/037ad964/assemble/bin/check-slaves
----------------------------------------------------------------------
diff --git a/assemble/bin/check-slaves b/assemble/bin/check-slaves
new file mode 100755
index 0000000..2af7f42
--- /dev/null
+++ b/assemble/bin/check-slaves
@@ -0,0 +1,199 @@
+#! /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.
+
+# This script will check the configuration and uniformity of all the nodes in a cluster.
+# Checks
+#   each node is reachable via ssh
+#   login identity is the same
+#   the physical memory is the same
+#   the mounts are the same on each machine
+#   a set of writable locations (typically different disks) are in fact writable
+# 
+# In order to check for writable partitions, you must configure the WRITABLE variable below.
+#
+
+import subprocess
+import time
+import select
+import os
+import sys
+import fcntl
+import signal
+if not sys.platform.startswith('linux'):
+   sys.stderr.write('This script only works on linux, sorry.\n')
+   sys.exit(1)
+
+TIMEOUT = 5
+WRITABLE = []
+#WRITABLE = ['/srv/hdfs1', '/srv/hdfs2', '/srv/hdfs3']
+
+def ssh(slave, *args):
+    'execute a command on a remote slave and return the Popen handle'
+    handle = subprocess.Popen( ('ssh', '-o', 'StrictHostKeyChecking=no', '-q', '-A', '-n', slave) + args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+    handle.slave = slave
+    handle.finished = False
+    handle.out = ''
+    return handle
+
+def wait(handles, seconds):
+    'wait for lots of handles simultaneously, and kill anything that doesn\'t return in seconds time\n'
+    'Note that stdout will be stored on the handle as the "out" field and "finished" will be set to True'
+    handles = handles[:]
+    stop = time.time() + seconds
+    for h in handles:
+       fcntl.fcntl(h.stdout, fcntl.F_SETFL, os.O_NONBLOCK)
+    while handles and time.time() < stop:
+       wait = min(0, stop - time.time())
+       handleMap = dict( [(h.stdout, h) for h in handles] )
+       rd, wr, err = select.select(handleMap.keys(), [], [], wait)
+       for r in rd:
+           handle = handleMap[r]
+           while 1:
+               more = handle.stdout.read(1024)
+               if more == '':
+                   handles.remove(handle)
+                   handle.poll()
+                   handle.wait()
+                   handle.finished = True
+               handle.out += more
+               if len(more) < 1024:
+                   break
+    for handle in handles:
+       os.kill(handle.pid, signal.SIGKILL)
+       handle.poll()
+
+def runAll(slaves, *cmd):
+    'Run the given command on all the slaves, returns Popen handles'
+    handles = []
+    for slave in slaves:
+        handles.append(ssh(slave, *cmd))
+    wait(handles, TIMEOUT)
+    return handles
+
+def checkIdentity(slaves):
+    'Ensure the login identity is consistent across the slaves'
+    handles = runAll(slaves, 'id', '-u', '-n')
+    bad = set()
+    myIdentity = os.popen('id -u -n').read().strip()
+    for h in handles:
+        if not h.finished or h.returncode != 0:
+            print '#', 'cannot look at identity on', h.slave
+            bad.add(h.slave)
+        else:
+            identity = h.out.strip()
+            if identity != myIdentity:
+                print '#', h.slave, 'inconsistent identity', identity
+                bad.add(h.slave)
+    return bad
+
+def checkMemory(slaves):
+    'Run free on all slaves and look for weird results'
+    handles = runAll(slaves, 'free')
+    bad = set()
+    mem = {}
+    swap = {}
+    for h in handles:
+        if not h.finished or h.returncode != 0:
+            print '#', 'cannot look at memory on', h.slave
+            bad.add(h.slave)
+        else:
+            if h.out.find('Swap:') < 0:
+               print '#',h.slave,'has no swap'
+               bad.add(h.slave)
+               continue
+            lines = h.out.split('\n')
+            for line in lines:
+               if line.startswith('Mem:'):
+                  mem.setdefault(line.split()[1],set()).add(h.slave)
+               if line.startswith('Swap:'):
+                  swap.setdefault(line.split()[1],set()).add(h.slave)
+    # order memory sizes by most common
+    mems = sorted([(len(v), k, v) for k, v in mem.items()], reverse=True)
+    mostCommon = float(mems[0][1])
+    for _, size, slaves in mems[1:]:
+        fract = abs(mostCommon - float(size)) / mostCommon
+        if fract > 0.05:
+            print '#',', '.join(slaves), ': unusual memory size', size
+            bad.update(slaves)
+    swaps = sorted([(len(v), k, v) for k, v in swap.items()], reverse=True)
+    mostCommon = float(mems[0][1])
+    for _, size, slaves in swaps[1:]:
+        fract = abs(mostCommon - float(size) / mostCommon)
+        if fract > 0.05:
+            print '#',', '.join(slaves), ': unusual swap size', size
+            bad.update(slaves)
+    return bad
+
+def checkWritable(slaves):
+    'Touch all the directories that should be writable by this user return any nodes that fail'
+    if not WRITABLE:
+       print '# WRITABLE value not configured, not checking partitions'
+       return []
+    handles = runAll(slaves, 'touch', *WRITABLE)
+    bad = set()
+    for h in handles:
+        if not h.finished or h.returncode != 0:
+           bad.add(h.slave)
+           print '#', h.slave, 'some drives are not writable'
+    return bad
+
+def checkMounts(slaves):
+    'Check the file systems that are mounted and report any that are unusual'
+    handles = runAll(slaves, 'mount')
+    mounts = {}
+    finished = set()
+    bad = set()
+    for handle in handles:
+        if handle.finished and handle.returncode == 0:
+            for line in handle.out.split('\n'):
+                words = line.split()
+                if len(words) < 5: continue
+                if words[4] == 'nfs': continue
+                if words[0].find(':/') >= 0: continue
+                mount = words[2]
+                mounts.setdefault(mount, set()).add(handle.slave)
+            finished.add(handle.slave)
+        else:
+            bad.add(handle.slave)
+            print '#', handle.slave, 'did not finish'
+    for m in sorted(mounts.keys()):
+        diff = finished - mounts[m]
+        if diff:
+            bad.update(diff)
+            print '#', m, 'not mounted on', ', '.join(diff)
+    return bad
+
+def main(argv):
+    if len(argv) < 1:
+        sys.stderr.write('Usage: check_slaves slaves\n')
+        sys.exit(1)
+    sys.stdin.close()
+    slaves = set()
+    for slave in open(argv[0]):
+        hashPos = slave.find('#')
+        if hashPos >= 0:
+           slave = slave[:hashPos]
+        slave = slave.strip()
+        if not slave: continue
+        slaves.add(slave)
+    bad = set()
+    for test in checkIdentity, checkMemory, checkMounts, checkWritable:
+        bad.update(test(slaves - bad))
+    for slave in sorted(slaves - bad):
+        print slave
+
+main(sys.argv[1:])

http://git-wip-us.apache.org/repos/asf/accumulo/blob/037ad964/assemble/bin/config.sh
----------------------------------------------------------------------
diff --git a/assemble/bin/config.sh b/assemble/bin/config.sh
new file mode 100755
index 0000000..7663473
--- /dev/null
+++ b/assemble/bin/config.sh
@@ -0,0 +1,177 @@
+#! /usr/bin/env bash
+
+# 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.
+
+# Guarantees that Accumulo and its environment variables are set.
+#
+# Parameters checked by script
+#  ACCUMULO_VERIFY_ONLY set to skip actions that would alter the local filesystem
+#
+# Values set by script that can be user provided.  If not provided script attempts to infer.
+#  ACCUMULO_CONF_DIR  Location where accumulo-env.sh, accumulo-site.xml and friends will be read from
+#  ACCUMULO_HOME      Home directory for Accumulo
+#  ACCUMULO_LOG_DIR   Directory for Accumulo daemon logs
+#  ACCUMULO_VERSION   Accumulo version name
+#  HADOOP_PREFIX      Prefix to the home dir for hadoop.
+#  MONITOR            Machine to run monitor daemon on. Used by start-here.sh script
+#
+# Iff ACCUMULO_VERIFY_ONLY is not set, this script will
+#   * Check for standalone mode (lack of masters and slaves files)
+#     - Do appropriate set up
+#   * Ensure the existence of ACCUMULO_LOG_DIR on the current host
+#   * Ensure the presense of local role files (masters, slaves, gc, tracers)
+#
+# Values always set by script.
+#  SSH                Default ssh parameters used to start daemons
+#  MALLOC_ARENA_MAX   To work around a memory management bug (see ACCUMULO-847)
+#  HADOOP_HOME        Home dir for hadoop.  TODO fix this.
+#
+# Values set by script if certain files exist
+# ACCUMULO_JAAS_CONF  Location of jaas.conf file. Needed by JAAS for things like Kerberos based logins
+# ACCUMULO_KRB5_CONF  Location of krb5.conf file. Needed by Kerberos subsystems to find login servers
+
+if [ -z "${ACCUMULO_HOME}" ] ; then
+  # Start: Resolve Script Directory
+  SOURCE="${BASH_SOURCE[0]}"
+  while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
+     bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+     SOURCE="$(readlink "$SOURCE")"
+     [[ $SOURCE != /* ]] && SOURCE="$bin/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
+  done
+  bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+  script=$( basename "$SOURCE" )
+  # Stop: Resolve Script Directory
+
+  ACCUMULO_HOME=$( cd -P ${bin}/.. && pwd )
+  export ACCUMULO_HOME
+fi
+
+if [ ! -d "${ACCUMULO_HOME}" ]; then
+  echo "ACCUMULO_HOME=${ACCUMULO_HOME} is not a valid directory. Please make sure it exists"
+  exit 1
+fi
+
+ACCUMULO_CONF_DIR="${ACCUMULO_CONF_DIR:-$ACCUMULO_HOME/conf}"
+export ACCUMULO_CONF_DIR
+if [ -z "$ACCUMULO_CONF_DIR" -o ! -d "$ACCUMULO_CONF_DIR" ]
+then
+  echo "ACCUMULO_CONF_DIR=$ACCUMULO_CONF_DIR is not a valid directory.  Please make sure it exists"
+  exit 1
+fi
+
+if [ -f $ACCUMULO_CONF_DIR/accumulo-env.sh ] ; then
+   . $ACCUMULO_CONF_DIR/accumulo-env.sh
+elif [ -z "$ACCUMULO_TEST" ] ; then
+   #
+   # Attempt to bootstrap configuration and continue
+   #
+   echo ""
+   echo "Accumulo is not properly configured."
+   echo ""
+   echo "Try running \$ACCUMULO_HOME/bin/bootstrap_config.sh and then editing"
+   echo "\$ACCUMULO_HOME/conf/accumulo-env.sh"
+   echo ""
+   exit 1
+fi
+
+if [ -z ${ACCUMULO_LOG_DIR} ]; then
+   ACCUMULO_LOG_DIR=$ACCUMULO_HOME/logs
+fi
+
+if [ -z "${ACCUMULO_VERIFY_ONLY}" ] ; then
+  mkdir -p $ACCUMULO_LOG_DIR 2>/dev/null
+fi
+
+export ACCUMULO_LOG_DIR
+
+if [ -z "$HADOOP_PREFIX" ]
+then
+   HADOOP_PREFIX="`which hadoop`"
+   if [ -z "$HADOOP_PREFIX" ]
+   then
+      echo "You must set HADOOP_PREFIX"
+      exit 1
+   fi
+   HADOOP_PREFIX=`dirname $HADOOP_PREFIX`
+   HADOOP_PREFIX=`dirname $HADOOP_PREFIX`
+fi
+if [ ! -d "$HADOOP_PREFIX" ]
+then
+   echo "HADOOP_PREFIX, which has a value of $HADOOP_PREFIX, is not a directory."
+   exit 1
+fi
+export HADOOP_PREFIX
+
+unset MASTER1
+if [[ -f "$ACCUMULO_CONF_DIR/masters" ]]; then
+  MASTER1=$(egrep -v '(^#|^\s*$)' "$ACCUMULO_CONF_DIR/masters" | head -1)
+fi
+
+if [ -z "${MONITOR}" ] ; then
+  MONITOR=$MASTER1
+  if [ -f "$ACCUMULO_CONF_DIR/monitor" ]; then
+      MONITOR=$(egrep -v '(^#|^\s*$)' "$ACCUMULO_CONF_DIR/monitor" | head -1)
+  fi
+  if [ -z "${MONITOR}" ] ; then
+    echo "Could not infer a Monitor role. You need to either define the MONITOR env variable, define \"${ACCUMULO_CONF_DIR}/monitor\", or make sure \"${ACCUMULO_CONF_DIR}/masters\" is non-empty."
+    exit 1
+  fi
+fi
+if [ ! -f "$ACCUMULO_CONF_DIR/tracers" -a -z "${ACCUMULO_VERIFY_ONLY}" ]; then
+  if [ -z "${MASTER1}" ] ; then
+    echo "Could not find a master node to use as a default for the tracer role. Either set up \"${ACCUMULO_CONF_DIR}/tracers\" or make sure \"${ACCUMULO_CONF_DIR}/masters\" is non-empty."
+    exit 1
+  else
+    echo "$MASTER1" > "$ACCUMULO_CONF_DIR/tracers"
+  fi
+
+fi
+
+if [ ! -f "$ACCUMULO_CONF_DIR/gc" -a -z "${ACCUMULO_VERIFY_ONLY}" ]; then
+  if [ -z "${MASTER1}" ] ; then
+    echo "Could not infer a GC role. You need to either set up \"${ACCUMULO_CONF_DIR}/gc\" or make sure \"${ACCUMULO_CONF_DIR}/masters\" is non-empty."
+    exit 1
+  else
+    echo "$MASTER1" > "$ACCUMULO_CONF_DIR/gc"
+  fi
+fi
+
+SSH='ssh -qnf -o ConnectTimeout=2'
+
+export HADOOP_HOME=$HADOOP_PREFIX
+export HADOOP_HOME_WARN_SUPPRESS=true
+
+# See HADOOP-7154 and ACCUMULO-847
+export MALLOC_ARENA_MAX=${MALLOC_ARENA_MAX:-1}
+
+# ACCUMULO-1985 provide a way to use the scripts and still bind to all network interfaces
+export ACCUMULO_MONITOR_BIND_ALL=${ACCUMULO_MONITOR_BIND_ALL:-"false"}
+
+# Check for jaas.conf configuration
+if [ -z ${ACCUMULO_JAAS_CONF} ]; then
+  if [ -f ${ACCUMULO_CONF_DIR}/jaas.conf ]; then
+    export ACCUMULO_JAAS_CONF=${ACCUMULO_CONF_DIR}/jaas.conf
+  fi
+fi
+
+# Check for krb5.conf configuration
+if [ -z ${ACCUMULO_KRB5_CONF} ]; then
+  if [ -f ${ACCUMULO_CONF_DIR}/krb5.conf ]; then
+    export ACCUMULO_KRB5_CONF=${ACCUMULO_CONF_DIR}/krb5.conf
+  fi
+fi
+
+

http://git-wip-us.apache.org/repos/asf/accumulo/blob/037ad964/assemble/bin/generate_monitor_certificate.sh
----------------------------------------------------------------------
diff --git a/assemble/bin/generate_monitor_certificate.sh b/assemble/bin/generate_monitor_certificate.sh
new file mode 100755
index 0000000..edd4159
--- /dev/null
+++ b/assemble/bin/generate_monitor_certificate.sh
@@ -0,0 +1,84 @@
+#! /usr/bin/env bash
+
+# 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.
+
+# Start: Resolve Script Directory
+SOURCE="${BASH_SOURCE[0]}"
+while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
+   bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+   SOURCE="$(readlink "$SOURCE")"
+   [[ $SOURCE != /* ]] && SOURCE="$bin/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
+done
+bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+# Stop: Resolve Script Directory
+
+. "$bin"/config.sh
+
+ALIAS="default"
+KEYPASS=$(LC_CTYPE=C tr -dc '#-~' < /dev/urandom | tr -d '<>&' | head -c 20)
+STOREPASS=$(LC_CTYPE=C tr -dc '#-~' < /dev/urandom | tr -d '<>&' | head -c 20)
+KEYSTOREPATH="$ACCUMULO_HOME/conf/keystore.jks"
+TRUSTSTOREPATH="$ACCUMULO_HOME/conf/cacerts.jks"
+CERTPATH="$ACCUMULO_HOME/conf/server.cer"
+
+if [ -e "$KEYSTOREPATH" ]; then
+   rm -i $KEYSTOREPATH
+   if [ -e "$KEYSTOREPATH" ]; then
+      echo "KeyStore already exists, exiting"
+      exit 1
+   fi
+fi
+
+if [ -e "$TRUSTSTOREPATH" ]; then
+   rm -i $TRUSTSTOREPATH
+   if [ -e "$TRUSTSTOREPATH" ]; then
+      echo "TrustStore already exists, exiting"
+      exit 2
+   fi
+fi
+
+if [ -e "$CERTPATH" ]; then
+   rm -i $CERTPATH
+   if [ -e "$CERTPATH" ]; then
+      echo "Certificate already exists, exiting"
+      exit 3
+  fi
+fi
+
+${JAVA_HOME}/bin/keytool -genkey -alias $ALIAS -keyalg RSA -keypass $KEYPASS -storepass $KEYPASS -keystore $KEYSTOREPATH
+${JAVA_HOME}/bin/keytool -export -alias $ALIAS -storepass $KEYPASS -file $CERTPATH -keystore $KEYSTOREPATH
+echo "yes" | ${JAVA_HOME}/bin/keytool -import -v -trustcacerts -alias $ALIAS -file $CERTPATH -keystore $TRUSTSTOREPATH -storepass $STOREPASS
+
+echo
+echo "keystore and truststore generated.  now add the following to accumulo-site.xml:"
+echo
+echo "    <property>"
+echo "      <name>monitor.ssl.keyStore</name>"
+echo "      <value>$KEYSTOREPATH</value>"
+echo "    </property>"
+echo "    <property>"
+echo "      <name>monitor.ssl.keyStorePassword</name>"
+echo "      <value>$KEYPASS</value>"
+echo "    </property>"
+echo "    <property>"
+echo "      <name>monitor.ssl.trustStore</name>"
+echo "      <value>$TRUSTSTOREPATH</value>"
+echo "    </property>"
+echo "    <property>"
+echo "      <name>monitor.ssl.trustStorePassword</name>"
+echo "      <value>$STOREPASS</value>"
+echo "    </property>"
+echo

http://git-wip-us.apache.org/repos/asf/accumulo/blob/037ad964/assemble/bin/start-all.sh
----------------------------------------------------------------------
diff --git a/assemble/bin/start-all.sh b/assemble/bin/start-all.sh
new file mode 100755
index 0000000..b71ba70
--- /dev/null
+++ b/assemble/bin/start-all.sh
@@ -0,0 +1,77 @@
+#! /usr/bin/env bash
+
+# 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.
+
+# Start: Resolve Script Directory
+SOURCE="${BASH_SOURCE[0]}"
+while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
+   bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+   SOURCE="$(readlink "$SOURCE")"
+   [[ $SOURCE != /* ]] && SOURCE="$bin/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
+done
+bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+# Stop: Resolve Script Directory
+
+. "$bin"/config.sh
+unset DISPLAY
+
+if [ ! -f $ACCUMULO_CONF_DIR/accumulo-env.sh ] ; then
+   echo "${ACCUMULO_CONF_DIR}/accumulo-env.sh does not exist. Please make sure you configure Accumulo before you run anything"
+   echo "We provide examples you can copy in ${ACCUMULO_HOME}/conf/examples/ which are set up for your memory footprint"
+   exit 1
+fi
+
+if [ -z "$ZOOKEEPER_HOME" ] ; then
+   echo "ZOOKEEPER_HOME is not set.  Please make sure it's set globally or in conf/accumulo-env.sh"
+   exit 1
+fi
+if [ ! -d $ZOOKEEPER_HOME ]; then
+   echo "ZOOKEEPER_HOME is not a directory: $ZOOKEEPER_HOME"
+   echo "Please check the setting, either globally or in accumulo-env.sh."
+   exit 1
+fi
+
+ZOOKEEPER_VERSION=$(find -L $ZOOKEEPER_HOME -maxdepth 1 -name "zookeeper-[0-9]*.jar" | head -1)
+if [ -z "$ZOOKEEPER_VERSION" ]; then
+   echo "A Zookeeper JAR was not found in $ZOOKEEPER_HOME."
+   echo "Please check ZOOKEEPER_HOME, either globally or in accumulo-env.sh."
+   exit 1
+fi
+ZOOKEEPER_VERSION=${ZOOKEEPER_VERSION##$ZOOKEEPER_HOME/zookeeper-}
+ZOOKEEPER_VERSION=${ZOOKEEPER_VERSION%%.jar}
+
+if [ "$ZOOKEEPER_VERSION" '<' "3.3.0" ]; then
+   echo "WARN : Using Zookeeper $ZOOKEEPER_VERSION.  Use version 3.3.0 or greater to avoid zookeeper deadlock bug.";
+fi
+
+${bin}/start-server.sh $MONITOR monitor 
+
+if [ "$1" != "--notSlaves" ]; then
+   ${bin}/tup.sh
+fi
+
+${bin}/accumulo org.apache.accumulo.master.state.SetGoalState NORMAL
+for master in `egrep -v '(^#|^\s*$)' "$ACCUMULO_CONF_DIR/masters"`; do
+   ${bin}/start-server.sh $master master
+done
+
+for gc in `egrep -v '(^#|^\s*$)' "$ACCUMULO_CONF_DIR/gc"`; do
+   ${bin}/start-server.sh $gc gc "garbage collector"
+done
+
+for tracer in `egrep -v '(^#|^\s*$)' "$ACCUMULO_CONF_DIR/tracers"`; do
+   ${bin}/start-server.sh $tracer tracer
+done

http://git-wip-us.apache.org/repos/asf/accumulo/blob/037ad964/assemble/bin/start-here.sh
----------------------------------------------------------------------
diff --git a/assemble/bin/start-here.sh b/assemble/bin/start-here.sh
new file mode 100755
index 0000000..9abdb38
--- /dev/null
+++ b/assemble/bin/start-here.sh
@@ -0,0 +1,78 @@
+#! /usr/bin/env bash
+
+# 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 script starts all the accumulo services on this host
+#
+
+# Start: Resolve Script Directory
+SOURCE="${BASH_SOURCE[0]}"
+while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
+   bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+   SOURCE="$(readlink "$SOURCE")"
+   [[ $SOURCE != /* ]] && SOURCE="$bin/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
+done
+bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+# Stop: Resolve Script Directory
+
+. "$bin"/config.sh
+
+IFCONFIG=/sbin/ifconfig
+if [ ! -x $IFCONFIG ]; then
+   IFCONFIG='/bin/netstat -ie'
+fi
+ip=$($IFCONFIG 2>/dev/null| grep inet[^6] | awk '{print $2}' | sed 's/addr://' | grep -v 0.0.0.0 | grep -v 127.0.0.1 | head -n 1)
+if [ $? != 0 ]; then
+   ip=$(python -c 'import socket as s; print s.gethostbyname(s.getfqdn())')
+fi
+
+HOSTS="$(hostname -a 2> /dev/null) $(hostname) localhost 127.0.0.1 $ip"
+for host in $HOSTS; do
+   if grep -q "^${host}\$" $ACCUMULO_CONF_DIR/slaves; then
+      ${bin}/start-server.sh $host tserver "tablet server"
+      break
+   fi
+done
+
+for host in $HOSTS; do
+   if grep -q "^${host}\$" $ACCUMULO_CONF_DIR/masters; then
+      ${bin}/accumulo org.apache.accumulo.master.state.SetGoalState NORMAL
+      ${bin}/start-server.sh $host master
+      break
+   fi
+done
+
+for host in $HOSTS; do
+   if grep -q "^${host}\$" $ACCUMULO_CONF_DIR/gc; then
+      ${bin}/start-server.sh $host gc "garbage collector"
+      break
+   fi
+done
+
+for host in $HOSTS; do
+   if [ ${host} = "${MONITOR}" ]; then
+      ${bin}/start-server.sh $MONITOR monitor 
+      break
+   fi
+done
+
+for host in $HOSTS; do
+   if grep -q "^${host}\$" $ACCUMULO_CONF_DIR/tracers; then
+      ${bin}/start-server.sh $host tracer 
+      break
+   fi
+done

http://git-wip-us.apache.org/repos/asf/accumulo/blob/037ad964/assemble/bin/start-server.sh
----------------------------------------------------------------------
diff --git a/assemble/bin/start-server.sh b/assemble/bin/start-server.sh
new file mode 100755
index 0000000..62ad91d
--- /dev/null
+++ b/assemble/bin/start-server.sh
@@ -0,0 +1,87 @@
+#! /usr/bin/env bash
+
+# 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.
+
+# Start: Resolve Script Directory
+SOURCE="${BASH_SOURCE[0]}"
+while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
+   bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+   SOURCE="$(readlink "$SOURCE")"
+   [[ $SOURCE != /* ]] && SOURCE="$bin/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
+done
+bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+script=$( basename "$SOURCE" )
+# Stop: Resolve Script Directory
+
+. "$bin"/config.sh
+
+HOST="$1"
+host "$1" >/dev/null 2>/dev/null
+if [ $? -ne 0 ]; then
+   LOGHOST="$1"
+else
+   LOGHOST=$(host "$1" | head -1 | cut -d' ' -f1)
+fi
+ADDRESS="$1"
+SERVICE="$2"
+LONGNAME="$3"
+if [ -z "$LONGNAME" ]; then
+   LONGNAME="$2"
+fi
+SLAVES=$( wc -l < ${ACCUMULO_CONF_DIR}/slaves )
+
+IFCONFIG=/sbin/ifconfig
+if [ ! -x $IFCONFIG ]; then
+   IFCONFIG='/bin/netstat -ie'
+fi
+
+# ACCUMULO-1985 Allow monitor to bind on all interfaces
+if [ ${SERVICE} == "monitor" -a ${ACCUMULO_MONITOR_BIND_ALL} == "true" ]; then
+    ADDRESS="0.0.0.0"
+fi
+
+ip=$($IFCONFIG 2>/dev/null| grep inet[^6] | awk '{print $2}' | sed 's/addr://' | grep -v 0.0.0.0 | grep -v 127.0.0.1 | head -n 1)
+if [ $? != 0 ]
+then
+   ip=$(python -c 'import socket as s; print s.gethostbyname(s.getfqdn())')
+fi
+
+if [ "$HOST" = "localhost" -o "$HOST" = "`hostname`" -o "$HOST" = "$ip" ]; then
+   PID=$(ps -ef | egrep ${ACCUMULO_HOME}/.*/accumulo.*.jar | grep "Main $SERVICE" | grep -v grep | awk {'print $2'} | head -1)
+else
+   PID=$($SSH $HOST ps -ef | egrep ${ACCUMULO_HOME}/.*/accumulo.*.jar | grep "Main $SERVICE" | grep -v grep | awk {'print $2'} | head -1)
+fi
+
+if [ -z "$PID" ]; then
+   echo "Starting $LONGNAME on $HOST"
+   if [ "$HOST" = "localhost" -o "$HOST" = "`hostname`" -o "$HOST" = "$ip" ]; then
+      ${bin}/accumulo ${SERVICE} --address ${ADDRESS} >${ACCUMULO_LOG_DIR}/${SERVICE}_${LOGHOST}.out 2>${ACCUMULO_LOG_DIR}/${SERVICE}_${LOGHOST}.err & 
+      MAX_FILES_OPEN=$(ulimit -n)
+   else
+      $SSH $HOST "bash -c 'exec nohup ${bin}/accumulo ${SERVICE} --address ${ADDRESS} >${ACCUMULO_LOG_DIR}/${SERVICE}_${LOGHOST}.out 2>${ACCUMULO_LOG_DIR}/${SERVICE}_${LOGHOST}.err' &"
+      MAX_FILES_OPEN=$($SSH $HOST "/usr/bin/env bash -c 'ulimit -n'") 
+   fi
+
+   if [ -n "$MAX_FILES_OPEN" ] && [ -n "$SLAVES" ] ; then
+      MAX_FILES_RECOMMENDED=${MAX_FILES_RECOMMENDED:-32768}
+      if (( SLAVES > 10 )) && (( MAX_FILES_OPEN < MAX_FILES_RECOMMENDED ))
+      then
+         echo "WARN : Max open files on $HOST is $MAX_FILES_OPEN, recommend $MAX_FILES_RECOMMENDED" >&2
+      fi
+   fi
+else
+   echo "$HOST : $LONGNAME already running (${PID})"
+fi

http://git-wip-us.apache.org/repos/asf/accumulo/blob/037ad964/assemble/bin/stop-all.sh
----------------------------------------------------------------------
diff --git a/assemble/bin/stop-all.sh b/assemble/bin/stop-all.sh
new file mode 100755
index 0000000..3bd30bd
--- /dev/null
+++ b/assemble/bin/stop-all.sh
@@ -0,0 +1,68 @@
+#! /usr/bin/env bash
+
+# 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.
+
+
+# Start: Resolve Script Directory
+SOURCE="${BASH_SOURCE[0]}"
+while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
+   bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+   SOURCE="$(readlink "$SOURCE")"
+   [[ $SOURCE != /* ]] && SOURCE="$bin/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
+done
+bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+# Stop: Resolve Script Directory
+
+. "$bin"/config.sh
+
+echo "Stopping accumulo services..."
+${bin}/accumulo admin "$@" stopAll
+
+if [ $? -ne 0 ]; then
+   echo "Invalid password or unable to connect to the master"
+   echo "Initiating forced shutdown in 15 seconds (Ctrl-C to abort)"
+   sleep 10
+   echo "Initiating forced shutdown in  5 seconds (Ctrl-C to abort)"
+else
+   echo "Accumulo shut down cleanly"
+   echo "Utilities and unresponsive servers will shut down in 5 seconds (Ctrl-C to abort)"
+fi
+
+sleep 5
+
+#look for master and gc processes not killed by 'admin stopAll'
+for signal in TERM KILL ; do
+   for master in `grep -v '^#' "$ACCUMULO_CONF_DIR/masters"`; do
+      ${bin}/stop-server.sh $master "$ACCUMULO_HOME/lib/accumulo-start.*.jar" master $signal
+   done
+
+   for gc in `grep -v '^#' "$ACCUMULO_CONF_DIR/gc"`; do
+      ${bin}/stop-server.sh "$gc" "$ACCUMULO_HOME/lib/accumulo-start.*.jar" gc $signal
+   done
+
+   ${bin}/stop-server.sh "$MONITOR" "$ACCUMULO_HOME/.*/accumulo-start.*.jar" monitor $signal
+
+   for tracer in `egrep -v '(^#|^\s*$)' "$ACCUMULO_CONF_DIR/tracers"`; do
+      ${bin}/stop-server.sh $tracer "$ACCUMULO_HOME/.*/accumulo-start.*.jar" tracer $signal
+   done
+done
+
+# stop tserver still running
+${bin}/tdown.sh
+
+echo "Cleaning all server entries in ZooKeeper"
+$ACCUMULO_HOME/bin/accumulo org.apache.accumulo.server.util.ZooZap -master -tservers -tracers
+

http://git-wip-us.apache.org/repos/asf/accumulo/blob/037ad964/assemble/bin/stop-here.sh
----------------------------------------------------------------------
diff --git a/assemble/bin/stop-here.sh b/assemble/bin/stop-here.sh
new file mode 100755
index 0000000..4d5533a
--- /dev/null
+++ b/assemble/bin/stop-here.sh
@@ -0,0 +1,60 @@
+#! /usr/bin/env bash
+
+# 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 script safely stops all the accumulo services on this host
+#
+
+# Start: Resolve Script Directory
+SOURCE="${BASH_SOURCE[0]}"
+while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
+   bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+   SOURCE="$(readlink "$SOURCE")"
+   [[ $SOURCE != /* ]] && SOURCE="$bin/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
+done
+bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+# Stop: Resolve Script Directory
+
+. "$bin"/config.sh
+
+ACCUMULO="$ACCUMULO_HOME/lib/accumulo-start.jar"
+
+# Determine hostname without errors to user
+HOSTNAME=$(hostname -a 2> /dev/null | head -1)
+if [ -z ${HOSTNAME} ]; then
+   HOSTNAME=$(hostname)
+fi
+
+if egrep -q localhost\|127.0.0.1 $ACCUMULO_CONF_DIR/slaves; then
+   $bin/accumulo admin stop localhost
+else
+   for host in "$(hostname -a 2> /dev/null) $(hostname)"; do
+      if grep -q ${host} $ACCUMULO_CONF_DIR/slaves; then
+         ${bin}/accumulo admin stop $host
+      fi
+   done
+fi
+
+for signal in TERM KILL; do
+   for svc in tserver gc master monitor logger tracer; do
+      PID=$(ps -ef | egrep ${ACCUMULO} | grep "Main $svc" | grep -v grep | grep -v stop-here.sh | awk '{print $2}' | head -1)
+      if [ ! -z $PID ]; then
+         echo "Stopping ${svc} on ${HOSTNAME} with signal ${signal}"
+         kill -s ${signal} ${PID}
+      fi
+   done
+done

http://git-wip-us.apache.org/repos/asf/accumulo/blob/037ad964/assemble/bin/stop-server.sh
----------------------------------------------------------------------
diff --git a/assemble/bin/stop-server.sh b/assemble/bin/stop-server.sh
new file mode 100755
index 0000000..6fbe0af
--- /dev/null
+++ b/assemble/bin/stop-server.sh
@@ -0,0 +1,56 @@
+#! /usr/bin/env bash
+
+# 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.
+
+# Start: Resolve Script Directory
+SOURCE="${BASH_SOURCE[0]}"
+while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
+   bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+   SOURCE="$(readlink "$SOURCE")"
+   [[ $SOURCE != /* ]] && SOURCE="$bin/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
+done
+bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+# Stop: Resolve Script Directory
+
+. "$bin"/config.sh
+
+HOST=$1
+
+IFCONFIG=/sbin/ifconfig
+if [ ! -x $IFCONFIG ]
+then
+   IFCONFIG='/bin/netstat -ie'
+fi
+ip=$($IFCONFIG 2>/dev/null| grep inet[^6] | awk '{print $2}' | sed 's/addr://' | grep -v 0.0.0.0 | grep -v 127.0.0.1 | head -n 1)
+if [ $? != 0 ]
+then
+   ip=$(python -c 'import socket as s; print s.gethostbyname(s.getfqdn())')
+fi
+
+# only stop if there's not one already running
+if [ "$HOST" = "localhost" -o "$HOST" = "`hostname`" -o "$HOST" = "$ip" ]; then
+   PID=$(ps -ef | grep "$ACCUMULO_HOME" | egrep ${2} | grep "Main ${3}" | grep -v grep | grep -v ssh | grep -v stop-server.sh | awk {'print $2'} | head -1)
+   if [ ! -z $PID ]; then
+      echo "Stopping ${3} on $1";
+      kill -s ${4} ${PID} 2>/dev/null
+   fi;
+else
+   PID=$(ssh -q -o 'ConnectTimeout 8' $1 "ps -ef | grep \"$ACCUMULO_HOME\" |  egrep '${2}' | grep 'Main ${3}' | grep -v grep | grep -v ssh | grep -v stop-server.sh" | awk {'print $2'} | head -1)
+   if [ ! -z $PID ]; then
+      echo "Stopping ${3} on $1";
+      ssh -q -o 'ConnectTimeout 8' $1 "kill -s ${4} ${PID} 2>/dev/null"
+   fi;
+fi

http://git-wip-us.apache.org/repos/asf/accumulo/blob/037ad964/assemble/bin/tdown.sh
----------------------------------------------------------------------
diff --git a/assemble/bin/tdown.sh b/assemble/bin/tdown.sh
new file mode 100755
index 0000000..141ad24
--- /dev/null
+++ b/assemble/bin/tdown.sh
@@ -0,0 +1,49 @@
+#! /usr/bin/env bash
+
+# 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.
+
+# Start: Resolve Script Directory
+SOURCE="${BASH_SOURCE[0]}"
+while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
+   bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+   SOURCE="$(readlink "$SOURCE")"
+   [[ $SOURCE != /* ]] && SOURCE="$bin/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
+done
+bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+# Stop: Resolve Script Directory
+
+. "$bin"/config.sh
+
+HADOOP_CMD=$HADOOP_PREFIX/bin/hadoop
+SLAVES=$ACCUMULO_CONF_DIR/slaves
+SLAVE_HOSTS=$(egrep -v '(^#|^\s*$)' "${SLAVES}")
+
+echo "Stopping unresponsive tablet servers (if any)..."
+for server in ${SLAVE_HOSTS}; do
+   # only start if there's not one already running
+   $ACCUMULO_HOME/bin/stop-server.sh $server "$ACCUMULO_HOME/lib/accumulo-start.jar" tserver TERM & 
+done
+
+sleep 10
+
+echo "Stopping unresponsive tablet servers hard (if any)..."
+for server in ${SLAVE_HOSTS}; do
+   # only start if there's not one already running
+   $ACCUMULO_HOME/bin/stop-server.sh $server "$ACCUMULO_HOME/lib/accumulo-start.jar" tserver KILL & 
+done
+
+echo "Cleaning tablet server entries from zookeeper"
+$ACCUMULO_HOME/bin/accumulo org.apache.accumulo.server.util.ZooZap -tservers

http://git-wip-us.apache.org/repos/asf/accumulo/blob/037ad964/assemble/bin/tool.sh
----------------------------------------------------------------------
diff --git a/assemble/bin/tool.sh b/assemble/bin/tool.sh
new file mode 100755
index 0000000..376983f
--- /dev/null
+++ b/assemble/bin/tool.sh
@@ -0,0 +1,92 @@
+#! /usr/bin/env bash
+
+# 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.
+
+# Start: Resolve Script Directory
+SOURCE="${BASH_SOURCE[0]}"
+while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
+   bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+   SOURCE="$(readlink "$SOURCE")"
+   [[ $SOURCE != /* ]] && SOURCE="$bin/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
+done
+bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+# Stop: Resolve Script Directory
+
+. "$bin"/config.sh
+
+if [ -z "$HADOOP_PREFIX" ] ; then
+   echo "HADOOP_PREFIX is not set.  Please make sure it's set globally or in conf/accumulo-env.sh"
+   exit 1
+fi
+if [ -z "$ZOOKEEPER_HOME" ] ; then
+   echo "ZOOKEEPER_HOME is not set.  Please make sure it's set globally or in conf/accumulo-env.sh"
+   exit 1
+fi
+
+ZOOKEEPER_CMD='ls -1 $ZOOKEEPER_HOME/zookeeper-[0-9]*[^csn].jar '
+if [ `eval $ZOOKEEPER_CMD | wc -l` != "1" ] ; then
+   echo "Not exactly one zookeeper jar in $ZOOKEEPER_HOME"
+   exit 1
+fi
+ZOOKEEPER_LIB=$(eval $ZOOKEEPER_CMD)
+
+LIB="$ACCUMULO_HOME/lib"
+CORE_LIB="$LIB/accumulo-core.jar"
+FATE_LIB="$LIB/accumulo-fate.jar"
+THRIFT_LIB="$LIB/libthrift.jar"
+TRACE_LIB="$LIB/accumulo-trace.jar"
+JCOMMANDER_LIB="$LIB/jcommander.jar"
+COMMONS_VFS_LIB="$LIB/commons-vfs2.jar"
+GUAVA_LIB="$LIB/guava.jar"
+
+USERJARS=" "
+for arg in "$@"; do
+    if [ "$arg" != "-libjars" -a -z "$TOOLJAR" ]; then
+      TOOLJAR="$arg"
+      shift
+   elif [ "$arg" != "-libjars" -a -z "$CLASSNAME" ]; then
+      CLASSNAME="$arg"
+      shift
+   elif [ -z "$USERJARS" ]; then
+      USERJARS=$(echo "$arg" | tr "," " ")
+      shift
+   elif [ "$arg" = "-libjars" ]; then
+      USERJARS=""
+      shift
+   else
+      break
+   fi
+done
+
+LIB_JARS="$THRIFT_LIB,$CORE_LIB,$FATE_LIB,$ZOOKEEPER_LIB,$TRACE_LIB,$JCOMMANDER_LIB,$COMMONS_VFS_LIB,$GUAVA_LIB"
+H_JARS="$THRIFT_LIB:$CORE_LIB:$FATE_LIB:$ZOOKEEPER_LIB:$TRACE_LIB:$JCOMMANDER_LIB:$COMMONS_VFS_LIB:$GUAVA_LIB"
+
+for jar in $USERJARS; do
+   LIB_JARS="$LIB_JARS,$jar"
+   H_JARS="$H_JARS:$jar"
+done
+export HADOOP_CLASSPATH="$H_JARS:$HADOOP_CLASSPATH"
+
+if [ -z "$CLASSNAME" -o -z "$TOOLJAR" ]; then
+   echo "Usage: tool.sh path/to/myTool.jar my.tool.class.Name [-libjars my1.jar,my2.jar]" 1>&2
+   exit 1
+fi
+
+#echo USERJARS=$USERJARS
+#echo CLASSNAME=$CLASSNAME
+#echo HADOOP_CLASSPATH=$HADOOP_CLASSPATH
+#echo exec "$HADOOP_PREFIX/bin/hadoop" jar "$TOOLJAR" $CLASSNAME -libjars \"$LIB_JARS\" $ARGS
+exec "$HADOOP_PREFIX/bin/hadoop" jar "$TOOLJAR" $CLASSNAME -libjars \"$LIB_JARS\" "$@"

http://git-wip-us.apache.org/repos/asf/accumulo/blob/037ad964/assemble/bin/tup.sh
----------------------------------------------------------------------
diff --git a/assemble/bin/tup.sh b/assemble/bin/tup.sh
new file mode 100755
index 0000000..b26def5
--- /dev/null
+++ b/assemble/bin/tup.sh
@@ -0,0 +1,46 @@
+#! /usr/bin/env bash
+
+# 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.
+
+# Start: Resolve Script Directory
+SOURCE="${BASH_SOURCE[0]}"
+while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
+   bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+   SOURCE="$(readlink "$SOURCE")"
+   [[ $SOURCE != /* ]] && SOURCE="$bin/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
+done
+bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+# Stop: Resolve Script Directory
+
+. "$bin"/config.sh
+
+SLAVES=$ACCUMULO_CONF_DIR/slaves
+
+echo -n "Starting tablet servers ..."
+
+count=1
+for server in `egrep -v '(^#|^\s*$)' "${SLAVES}"`; do
+   echo -n "."
+   ${bin}/start-server.sh $server tserver "tablet server" &
+   let count++
+   if [ $(( ${count} % 72 )) -eq 0 ] ;
+   then
+      echo
+      wait
+   fi
+done
+
+echo " done"

http://git-wip-us.apache.org/repos/asf/accumulo/blob/037ad964/assemble/conf/examples/crypto/README
----------------------------------------------------------------------
diff --git a/assemble/conf/examples/crypto/README b/assemble/conf/examples/crypto/README
new file mode 100644
index 0000000..75fa6b1
--- /dev/null
+++ b/assemble/conf/examples/crypto/README
@@ -0,0 +1,23 @@
+Title: Apache Accumulo Crypto Configuration Example
+Notice:    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 accumulo-site.xml file demonstrates how to configure the basic encryption at rest feature.
+
+The default configuration shown here is not entirely secure, as the master key for all encryption keys
+is stored alongside the encrypted files.  Placing that master key somewhere secure is an exercise
+left to the reader.