You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by jd...@apache.org on 2009/01/27 19:20:10 UTC

svn commit: r738184 - in /hadoop/hbase/trunk: CHANGES.txt bin/hbase bin/hbase-zookeeper.sh bin/start-hbase.sh bin/stop-hbase.sh bin/zookeeper.sh conf/hbase-env.sh conf/zoo.cfg

Author: jdcryans
Date: Tue Jan 27 18:20:09 2009
New Revision: 738184

URL: http://svn.apache.org/viewvc?rev=738184&view=rev
Log:
HBASE-1147  Modify the scripts to use Zookeeper

Added:
    hadoop/hbase/trunk/bin/hbase-zookeeper.sh   (with props)
    hadoop/hbase/trunk/bin/zookeeper.sh   (with props)
    hadoop/hbase/trunk/conf/zoo.cfg
Modified:
    hadoop/hbase/trunk/CHANGES.txt
    hadoop/hbase/trunk/bin/hbase
    hadoop/hbase/trunk/bin/start-hbase.sh
    hadoop/hbase/trunk/bin/stop-hbase.sh
    hadoop/hbase/trunk/conf/hbase-env.sh

Modified: hadoop/hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=738184&r1=738183&r2=738184&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Tue Jan 27 18:20:09 2009
@@ -1,6 +1,7 @@
 HBase Change Log
 Release 0.20.0 - Unreleased
   INCOMPATIBLE CHANGES
+   HBASE-1147  Modify the scripts to use Zookeeper
 
   BUG FIXES
    HBASE-1140  "ant clean test" fails (Nitay Joffe via Stack)

Modified: hadoop/hbase/trunk/bin/hbase
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/bin/hbase?rev=738184&r1=738183&r2=738184&view=diff
==============================================================================
--- hadoop/hbase/trunk/bin/hbase (original)
+++ hadoop/hbase/trunk/bin/hbase Tue Jan 27 18:20:09 2009
@@ -60,6 +60,7 @@
   echo "  regionserver     run an HBase HRegionServer node" 
   echo "  rest             run an HBase REST server" 
   echo "  thrift           run an HBase Thrift server" 
+  echo "  zookeeper        run a Zookeeper server"
   echo "  migrate          upgrade an hbase.rootdir"
   echo " or"
   echo "  CLASSNAME        run the class named CLASSNAME"
@@ -181,36 +182,41 @@
 # restore ordinary behaviour
 unset IFS
 
-# figure out which class to run
-if [ "$COMMAND" = "shell" ] ; then
-  CLASS="org.jruby.Main ${HBASE_HOME}/bin/hirb.rb"
-elif [ "$COMMAND" = "master" ] ; then
-  CLASS='org.apache.hadoop.hbase.master.HMaster'
-elif [ "$COMMAND" = "regionserver" ] ; then
-  CLASS='org.apache.hadoop.hbase.regionserver.HRegionServer'
-elif [ "$COMMAND" = "rest" ] ; then
-  CLASS='org.apache.hadoop.hbase.rest.Dispatcher'
-elif [ "$COMMAND" = "thrift" ] ; then
-  CLASS='org.apache.hadoop.hbase.thrift.ThriftServer'
-elif [ "$COMMAND" = "migrate" ] ; then
-  CLASS='org.apache.hadoop.hbase.util.Migrate'
+# We kill the ZK instance using a hard coded port, to be changed
+if [ "$COMMAND" = "zookeeper" ] && [ "$@" = "start" ] ; then
+  exec "$JAVA" $JAVA_HEAP_MAX -classpath "$CLASSPATH" org.apache.zookeeper.server.quorum.QuorumPeerMain conf/zoo.cfg
 else
-  CLASS=$COMMAND
-fi
+  # figure out which class to run
+  if [ "$COMMAND" = "shell" ] ; then
+    CLASS="org.jruby.Main ${HBASE_HOME}/bin/hirb.rb"
+  elif [ "$COMMAND" = "master" ] ; then
+    CLASS='org.apache.hadoop.hbase.master.HMaster'
+  elif [ "$COMMAND" = "regionserver" ] ; then
+    CLASS='org.apache.hadoop.hbase.regionserver.HRegionServer'
+  elif [ "$COMMAND" = "rest" ] ; then
+    CLASS='org.apache.hadoop.hbase.rest.Dispatcher'
+  elif [ "$COMMAND" = "thrift" ] ; then
+    CLASS='org.apache.hadoop.hbase.thrift.ThriftServer'
+  elif [ "$COMMAND" = "migrate" ] ; then
+    CLASS='org.apache.hadoop.hbase.util.Migrate'
+  else
+    CLASS=$COMMAND
+  fi
 
-# Have JVM dump heap if we run out of memory.  Files will be 'launch directory'
-# and are named like the following: java_pid21612.hprof. Apparently it doesn't
-# 'cost' to have this flag enabled. Its a 1.6 flag only. See:
-# http://blogs.sun.com/alanb/entry/outofmemoryerror_looks_a_bit_better 
-HBASE_OPTS="$HBASE_OPTS -XX:+HeapDumpOnOutOfMemoryError"
-HBASE_OPTS="$HBASE_OPTS -Dhbase.log.dir=$HBASE_LOG_DIR"
-HBASE_OPTS="$HBASE_OPTS -Dhbase.log.file=$HBASE_LOGFILE"
-HBASE_OPTS="$HBASE_OPTS -Dhbase.home.dir=$HBASE_HOME"
-HBASE_OPTS="$HBASE_OPTS -Dhbase.id.str=$HBASE_IDENT_STRING"
-HBASE_OPTS="$HBASE_OPTS -Dhbase.root.logger=${HBASE_ROOT_LOGGER:-INFO,console}"
-if [ "x$JAVA_LIBRARY_PATH" != "x" ]; then
-  HBASE_OPTS="$HBASE_OPTS -Djava.library.path=$JAVA_LIBRARY_PATH"
-fi  
+  # Have JVM dump heap if we run out of memory.  Files will be 'launch directory'
+  # and are named like the following: java_pid21612.hprof. Apparently it doesn't
+  # 'cost' to have this flag enabled. Its a 1.6 flag only. See:
+  # http://blogs.sun.com/alanb/entry/outofmemoryerror_looks_a_bit_better 
+  HBASE_OPTS="$HBASE_OPTS -XX:+HeapDumpOnOutOfMemoryError"
+  HBASE_OPTS="$HBASE_OPTS -Dhbase.log.dir=$HBASE_LOG_DIR"
+  HBASE_OPTS="$HBASE_OPTS -Dhbase.log.file=$HBASE_LOGFILE"
+  HBASE_OPTS="$HBASE_OPTS -Dhbase.home.dir=$HBASE_HOME"
+  HBASE_OPTS="$HBASE_OPTS -Dhbase.id.str=$HBASE_IDENT_STRING"
+  HBASE_OPTS="$HBASE_OPTS -Dhbase.root.logger=${HBASE_ROOT_LOGGER:-INFO,console}"
+  if [ "x$JAVA_LIBRARY_PATH" != "x" ]; then
+    HBASE_OPTS="$HBASE_OPTS -Djava.library.path=$JAVA_LIBRARY_PATH"
+  fi  
 
-# run it
-exec "$JAVA" $JAVA_HEAP_MAX $HBASE_OPTS -classpath "$CLASSPATH" $CLASS "$@"
+  # run it
+  exec "$JAVA" $JAVA_HEAP_MAX $HBASE_OPTS -classpath "$CLASSPATH" $CLASS "$@"
+fi

Added: hadoop/hbase/trunk/bin/hbase-zookeeper.sh
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/bin/hbase-zookeeper.sh?rev=738184&view=auto
==============================================================================
--- hadoop/hbase/trunk/bin/hbase-zookeeper.sh (added)
+++ hadoop/hbase/trunk/bin/hbase-zookeeper.sh Tue Jan 27 18:20:09 2009
@@ -0,0 +1,42 @@
+#!/usr/bin/env bash
+#
+#/**
+# * Copyright 2009 The Apache Software Foundation
+# *
+# * 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.
+# */
+# 
+# Run a hbase command on all slave hosts.
+# Modelled after $HADOOP_HOME/bin/hadoop-daemons.sh
+
+usage="Usage: hbase-daemons.sh [--config <hbase-confdir>] \
+ [start|stop] command args..."
+
+# if no args specified, show usage
+if [ $# -le 1 ]; then
+  echo $usage
+  exit 1
+fi
+
+bin=`dirname "$0"`
+bin=`cd "$bin"; pwd`
+
+. $bin/hbase-config.sh
+
+exec "$bin/zookeeper.sh" --config "${HBASE_CONF_DIR}" \
+ cd "${HBASE_HOME}" \; \
+ "$bin/hbase-daemon.sh" --config "${HBASE_CONF_DIR}" "$@"

Propchange: hadoop/hbase/trunk/bin/hbase-zookeeper.sh
------------------------------------------------------------------------------
    svn:executable = *

Modified: hadoop/hbase/trunk/bin/start-hbase.sh
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/bin/start-hbase.sh?rev=738184&r1=738183&r2=738184&view=diff
==============================================================================
--- hadoop/hbase/trunk/bin/start-hbase.sh (original)
+++ hadoop/hbase/trunk/bin/start-hbase.sh Tue Jan 27 18:20:09 2009
@@ -38,6 +38,8 @@
 then
   exit $errCode
 fi
+"$bin"/hbase-zookeeper.sh --config "${HBASE_CONF_DIR}" \
+  start zookeeper
 "$bin"/hbase-daemon.sh --config "${HBASE_CONF_DIR}" start master 
 "$bin"/hbase-daemons.sh --config "${HBASE_CONF_DIR}" \
   --hosts "${HBASE_REGIONSERVERS}" start regionserver

Modified: hadoop/hbase/trunk/bin/stop-hbase.sh
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/bin/stop-hbase.sh?rev=738184&r1=738183&r2=738184&view=diff
==============================================================================
--- hadoop/hbase/trunk/bin/stop-hbase.sh (original)
+++ hadoop/hbase/trunk/bin/stop-hbase.sh Tue Jan 27 18:20:09 2009
@@ -30,3 +30,5 @@
 . "$bin"/hbase-config.sh
 
 "$bin"/hbase-daemon.sh --config "${HBASE_CONF_DIR}" stop master
+"$bin"/hbase-zookeeper.sh --config "${HBASE_CONF_DIR}" \
+  stop zookeeper

Added: hadoop/hbase/trunk/bin/zookeeper.sh
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/bin/zookeeper.sh?rev=738184&view=auto
==============================================================================
--- hadoop/hbase/trunk/bin/zookeeper.sh (added)
+++ hadoop/hbase/trunk/bin/zookeeper.sh Tue Jan 27 18:20:09 2009
@@ -0,0 +1,63 @@
+#!/usr/bin/env bash
+#
+#/**
+# * Copyright 2009 The Apache Software Foundation
+# *
+# * 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.
+# */
+# 
+# Run a shell command on all regionserver hosts.
+#
+# Environment Variables
+#
+#   HADOOP_CONF_DIR  Alternate conf dir. Default is ${HADOOP_HOME}/conf.
+#   HBASE_CONF_DIR  Alternate hbase conf dir. Default is ${HBASE_HOME}/conf.
+#   HADOOP_SLAVE_SLEEP Seconds to sleep between spawning remote commands.
+#   HADOOP_SSH_OPTS Options passed to ssh when running remote commands.
+#
+# Modelled after $HADOOP_HOME/bin/slaves.sh.
+
+usage="Usage: zookeeper [--config <hbase-confdir>] command..."
+
+# if no args specified, show usage
+if [ $# -le 0 ]; then
+  echo $usage
+  exit 1
+fi
+
+bin=`dirname "$0"`
+bin=`cd "$bin"; pwd`
+
+. "$bin"/hbase-config.sh
+
+if [ -f "${HBASE_CONF_DIR}/hbase-env.sh" ]; then
+  . "${HBASE_CONF_DIR}/hbase-env.sh"
+fi
+
+if [ "$HBASE_MANAGES_ZK" = "" ]; then
+  HBASE_MANAGES_ZK=true
+fi
+
+if [ "$HBASE_MANAGES_ZK" = "true" ]; then
+ ssh $HBASE_SSH_OPTS 127.0.0.1 $"${@// /\\ }" \
+   2>&1 | sed "s/^/$zookeeper: /" &
+ if [ "$HBASE_SLAVE_SLEEP" != "" ]; then
+   sleep $HBASE_SLAVE_SLEEP
+ fi
+fi
+
+wait

Propchange: hadoop/hbase/trunk/bin/zookeeper.sh
------------------------------------------------------------------------------
    svn:executable = *

Modified: hadoop/hbase/trunk/conf/hbase-env.sh
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/conf/hbase-env.sh?rev=738184&r1=738183&r2=738184&view=diff
==============================================================================
--- hadoop/hbase/trunk/conf/hbase-env.sh (original)
+++ hadoop/hbase/trunk/conf/hbase-env.sh Tue Jan 27 18:20:09 2009
@@ -55,3 +55,6 @@
 # can be useful in large clusters, where, e.g., slave rsyncs can
 # otherwise arrive faster than the master can service them.
 # export HBASE_SLAVE_SLEEP=0.1
+
+# Tell HBase whether it should manage it's own instance of Zookeeper or not.
+# export HBASE_MANAGES_ZK=true

Added: hadoop/hbase/trunk/conf/zoo.cfg
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/conf/zoo.cfg?rev=738184&view=auto
==============================================================================
--- hadoop/hbase/trunk/conf/zoo.cfg (added)
+++ hadoop/hbase/trunk/conf/zoo.cfg Tue Jan 27 18:20:09 2009
@@ -0,0 +1,12 @@
+# The number of milliseconds of each tick
+tickTime=2000
+# The number of ticks that the initial 
+# synchronization phase can take
+initLimit=10
+# The number of ticks that can pass between 
+# sending a request and getting an acknowledgement
+syncLimit=5
+# the directory where the snapshot is stored.
+dataDir=/tmp/zookeeper
+# the port at which the clients will connect
+clientPort=2181