| #!/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" |
| |
| |
| |
| |