blob: 45276b288ea03d627f76ad28094e7a25a99e51d4 [file] [log] [blame]
#!/bin/sh
# 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 configures hbase-env.sh and symlinkis directories for
# relocating RPM locations.
usage() {
echo "
usage: $0 <parameters>
Required parameters:
--prefix=PREFIX path to install into
Optional parameters:
--arch=i386 OS Architecture
--bin-dir=PREFIX/bin Executable directory
--conf-dir=/etc/hbase Configuration directory
--log-dir=/var/log/hbase Log directory
--pid-dir=/var/run PID file location
"
exit 1
}
OPTS=$(getopt \
-n $0 \
-o '' \
-l 'arch:' \
-l 'prefix:' \
-l 'bin-dir:' \
-l 'conf-dir:' \
-l 'lib-dir:' \
-l 'log-dir:' \
-l 'pid-dir:' \
-l 'uninstall' \
-- "$@")
if [ $? != 0 ] ; then
usage
fi
eval set -- "${OPTS}"
while true ; do
case "$1" in
--arch)
ARCH=$2 ; shift 2
;;
--prefix)
PREFIX=$2 ; shift 2
;;
--bin-dir)
BIN_DIR=$2 ; shift 2
;;
--log-dir)
LOG_DIR=$2 ; shift 2
;;
--lib-dir)
LIB_DIR=$2 ; shift 2
;;
--conf-dir)
CONF_DIR=$2 ; shift 2
;;
--pid-dir)
PID_DIR=$2 ; shift 2
;;
--uninstall)
UNINSTALL=1; shift
;;
--)
shift ; break
;;
*)
echo "Unknown option: $1"
usage
exit 1
;;
esac
done
for var in PREFIX; do
if [ -z "$(eval "echo \$$var")" ]; then
echo Missing param: $var
usage
fi
done
ARCH=${ARCH:-i386}
BIN_DIR=${BIN_DIR:-$PREFIX/share/hbase/bin}
CONF_DIR=${CONF_DIR:-$PREFIX/conf}
LIB_DIR=${LIB_DIR:-$PREFIX/lib}
LOG_DIR=${LOG_DIR:-$PREFIX/var/log}
PID_DIR=${PID_DIR:-$PREFIX/var/run}
UNINSTALL=${UNINSTALL:-0}
if [ "${ARCH}" != "i386" ]; then
LIB_DIR=${LIB_DIR}64
fi
[ -f /etc/default/hadoop-env.sh ] && . /etc/default/hadoop-env.sh
[ -f /etc/default/zookeeper-env.sh ] && . /etc/default/zookeeper-env.sh
if [ "${UNINSTALL}" -eq "1" ]; then
# Remove symlinks
if [ "${BIN_DIR}" != "${PREFIX}/share/hbase/bin" ]; then
for var in `ls ${PREFIX}/share/hbase/bin`; do
rm -f ${BIN_DIR}/${var}
done
fi
if [ -f /etc/default/hbase-env.sh ]; then
rm -f /etc/default/hbase-env.sh
fi
if [ "${CONF_DIR}" != "${PREFIX}/share/hbase/conf" ]; then
rm -f ${PREFIX}/share/hbase/conf
fi
rm -f ${PREFIX}/share/hbase/sbin/hbase-master
rm -f ${PREFIX}/share/hbase/sbin/hbase-regionserver
rm -f /etc/init.d/hbase-master
rm -f /etc/init.d/hbase-regionserver
else
# Create symlinks
if [ "${BIN_DIR}" != "${PREFIX}/share/hbase/bin" ]; then
for var in `ls ${PREFIX}/share/hbase/bin`; do
ln -sf ${PREFIX}/share/hbase/bin/${var} ${BIN_DIR}/${var}
done
fi
if [ "${CONF_DIR}" != "${PREFIX}/share/hbase/conf" ]; then
ln -sf ${CONF_DIR} ${PREFIX}/share/hbase/conf
fi
chmod 755 ${PREFIX}/share/hbase/sbin/*
ln -sf ${PREFIX}/share/hbase/sbin/hbase-master /etc/init.d/hbase-master
ln -sf ${PREFIX}/share/hbase/sbin/hbase-regionserver /etc/init.d/hbase-regionserver
ln -sf ${CONF_DIR}/hbase-env.sh /etc/default/hbase-env.sh
ln -sf ${CONF_DIR}/hbase-env.sh /etc/profile.d/hbase-env.sh
if [ -n "${HADOOP_HOME}" -a -d "${HADOOP_HOME}" ]; then
HADOOP_JARS=`ls ${HADOOP_HOME}/*.jar | tr '\n' ':'`
fi
if [ -n "${ZOOKEEPER_HOME}" -a -d "${ZOOKEEPER_HOME}/share/zookeeper" ]; then
ZOOKEEPER_JARS=`ls ${ZOOKEEPER_HOME}/share/zookeeper/*.jar | tr '\n' ':'`
fi
mkdir -p ${PID_DIR}
mkdir -p ${LOG_DIR}
chown hbase ${PID_DIR}
chown hbase ${LOG_DIR}
TFILE="/tmp/$(basename $0).$$.tmp"
grep -v "^export HBASE_HOME" ${CONF_DIR}/hbase-env.sh | \
grep -v "^export HBASE_CONF_DIR" | \
grep -v "^export HBASE_CLASSPATH" | \
grep -v "^export HBASE_MANAGES_ZK" | \
grep -v "^export HBASE_IDENT_STRING" | \
grep -v "^export HBASE_PID_DIR" | \
grep -v "^export HBASE_LOG_DIR" | \
grep -v "^export JAVA_HOME" > ${TFILE}
if [ -z "${JAVA_HOME}" ]; then
if [ -e /etc/lsb-release ]; then
JAVA_HOME=`update-alternatives --config java | grep java | cut -f2 -d':' | cut -f2 -d' ' | sed -e 's/\/bin\/java//'`
else
JAVA_HOME=/usr/java/default
fi
fi
if [ "${JAVA_HOME}xxx" != "xxx" ]; then
echo "export JAVA_HOME=${JAVA_HOME}" >> ${TFILE}
fi
echo "export HBASE_IDENT_STRING=\`whoami\`" >> ${TFILE}
echo "export HBASE_HOME=${PREFIX}/share/hbase" >> ${TFILE}
echo "export HBASE_CONF_DIR=${CONF_DIR}" >> ${TFILE}
echo "export HBASE_CLASSPATH=${CONF_DIR}:${HADOOP_CONF_DIR}:${HADOOP_JARS}:${ZOOKEEPER_JARS}" >> ${TFILE}
echo "export HBASE_MANAGES_ZK=false" >> ${TFILE}
echo "export HBASE_PID_DIR=${PID_DIR}" >> ${TFILE}
echo "export HBASE_LOG_DIR=${LOG_DIR}" >> ${TFILE}
cp ${TFILE} ${CONF_DIR}/hbase-env.sh
rm -f ${TFILE}
fi