blob: 7519da733fd7a884bfa57307f989f19bd2defbbb [file] [log] [blame]
#!/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 assumes that it is being run from the top level directory of the
# HCatalog distribution tarball
function usage() {
echo "Usage: $0 -r root -d dbroot -h hadoop_home -p server_port"
echo " root is the directory where you like to install the HCatalog server"
echo " /usr/local/hcat is suggested."
echo " dbroot is the directory where your mysql connector jar is located."
echo " hadoop_home is the directory of your Hadoop installation."
echo " server_port is the listening port of the HCatalog server"
echo " All paths must be absolute"
}
dir_check=`head -1 share/doc/hcatalog/NOTICE.txt`
if [ "${dir_check}" != "Apache HCatalog" ] ; then
echo "This script must be run in the top level directory of your HCatalog" \
"distribution."
exit 1
fi
root=`pwd`
dbroot="unknown"
hadoop_home="unknown"
server_port="9933"
alternate_root="n"
while [ "${1}x" != "x" ] ; do
if [ $1 == "-r" ] || [ $1 == "--root" ] ; then
shift
root=$1
alternate_root="y"
shift
elif [ $1 == "-d" ] || [ $1 == "--dbroot" ] ; then
shift
dbroot=$1
shift
elif [ $1 == "-h" ] || [ $1 == "--hadoop" ] ; then
shift
hadoop_home=$1
shift
elif [ $1 == "-p" ] || [ $1 == "--port" ] ; then
shift
server_port=$1
shift
else
echo "Unknown option $1"
shift
fi
done
for var in $dbroot $hadoop_home ; do
if [ $var == "unknown" ] ; then
usage
exit 1
fi
done
# Make sure root and dbroot are absolute paths
for var in $root $dbroot $hadoop_home ; do
if [ ${var:0:1} != "/" ] ; then
usage
exit 1
fi
done
# Make sure root is writable and has the necessary directories
root_owner=`ls -ld $root | awk '{print $3}'`
if [ $root_owner != `whoami` ] ; then
echo "You must run this as the user that will run HCatalog and that user" \
"must own the root directory."
exit 1
fi
root_perms=`ls -ld $root | awk '{print $1}'`
if [ ${root_perms:0:4} != "drwx" ] ; then
echo "Your root directory must be readable, writable, and executable by" \
"its owner."
exit 1
fi
# Check that the required Mysql driver is in the dbroot
mysql_jar=`ls ${dbroot}/mysql-connector-java-*.jar 2>/dev/null | grep mysql-connector-java`
if [ "${mysql_jar}x" == "x" ] ; then
echo "The required jar file mysql-connector-java-version.jar is not in " \
"$dbroot or is not readable"
exit 1
fi
# Create the needed directories in root
#for dir in var conf var/log bin lib ; do
for dir in var var/log bin etc libexec sbin share ; do
if [ ! -d $root/$dir ] ; then
mkdir $root/$dir
fi
done
# Move files into the appropriate directories
if [ "$alternate_root" == "y" ] ; then
echo Installing into [$root]
for dir in bin etc libexec sbin share ; do
for file in ./$dir/* ; do
cp -R $file $root/$dir
done
done
else
echo Using current directory [$root] as installation path and proceeding.
fi
#Create a softlink from distro conf dir to /etc/hcatalog location
rm -f $root/share/hcatalog/conf
ln -sf $root/etc/hcatalog $root/share/hcatalog/conf
# Put the start and stop scripts into bin
#for file in hcat_server_start.sh hcat_server_stop.sh ; do
# cp scripts/$file $root/bin
#done
# Move the proto-hive-site.xml to hive-site.xml
#cp $root/etc/hcatalog/proto-hive-site.xml $root/etc/hcatalog/hive-site.xml
# Set permissions on hive-site.xml to 700, since it will contain the password to the
# database
#chmod 700 $root/etc/hcatalog/hive-site.xml
# Write out an environment file so that the start file can use it later
cat > $root/etc/hcatalog/hcat-env.sh <<!!
ROOT=$root
DBROOT=$dbroot
USER=`whoami`
HADOOP_HOME=$hadoop_home
export METASTORE_PORT=$server_port
!!
echo "Installation successful"