blob: 018ace0520e366f0cd8d7944d719c1784cd8e700 [file] [log] [blame]
#!/bin/bash
# @@@ START COPYRIGHT @@@
#
# 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.
#
# @@@ END COPYRIGHT @@@
#
# This script will configure HBase with HBase-trx
# and co-processors needed for Trafodion. It uses
# Ambari's configs.sh script to do this.
#
# NOTE: Only for Ambari installations
TRAF_CONFIG=/etc/trafodion/trafodion_config
source $TRAF_CONFIG
export PDSH="pdsh -R exec"
export PDSH_SSH_CMD="ssh -q -n %h"
export PDCP="pdcp -R ssh"
export PDSH_HADOOP_NODES="$PDSH $MY_HBASE_NODES $PDSH_SSH_CMD"
export PDCP_HADOOP_NODES="$PDCP $MY_HBASE_NODES"
#=====================================
# copy Trafodion hbase trx jar to /usr/lib/hbase/lib
cd $UNTAR_DIR
HDFS_NODE=$(echo $HDFS_NODES | head -n1 | awk '{print $1;}')
HBASE_NODE=$(echo $HBASE_NODES | head -n1 | awk '{print $1;}')
echo "export HDFS_NODE=\"$HDFS_NODE\"" >> $TRAF_CONFIG
echo "export HBASE_NODE=\"$HBASE_NODE\"" >> $TRAF_CONFIG
sudo chmod 777 $TRAF_CONFIG
source $TRAF_CONFIG
hbase_trx_jar="hbase-trx-apache1_2*.jar"
if [[ $hbaseVersion =~ "1.1" ]]; then
hbase_trx_jar="hbase-trx-apache1_1*.jar"
elif [[ $hbaseVersion =~ "1.0" ]]; then
hbase_trx_jar="hbase-trx-apache1_0*.jar"
fi
traf_util_jar="trafodion-utility-*.jar"
# The permissions the Trafodion build process creates on the hbase-trx jar
# files does not work well with the installation process so we change them
sudo chmod -R 777 $UNTAR_DIR/export/lib
if [ ! -f $UNTAR_DIR/export/lib/$hbase_trx_jar ]; then
echo "***ERROR: unable to find $UNTAR_DIR/export/lib/$hbase_trx_jar"
exit -1
fi
# if more than one node then copy to all nodes
echo "***INFO: copying $hbase_trx_jar to all nodes"
if [ $node_count -ne 1 ]; then
$PDSH_HADOOP_NODES sudo rm -rf $HBASE_HOME/lib/hbase-trx* 2>/dev/null
$TRAF_PDSH mkdir -p $LOCAL_WORKDIR 2>/dev/null
$PDSH_HADOOP_NODES mkdir -p $LOCAL_WORKDIR 2>/dev/null
cp $UNTAR_DIR/export/lib/$hbase_trx_jar $LOCAL_WORKDIR
cp $UNTAR_DIR/export/lib/$traf_util_jar $LOCAL_WORKDIR
$PDCP_HADOOP_NODES $LOCAL_WORKDIR/$hbase_trx_jar $LOCAL_WORKDIR
$PDCP_HADOOP_NODES $LOCAL_WORKDIR/$traf_util_jar $LOCAL_WORKDIR
$PDSH_HADOOP_NODES sudo cp $LOCAL_WORKDIR/$traf_util_jar $HBASE_HOME/lib
$PDSH_HADOOP_NODES sudo cp $LOCAL_WORKDIR/$hbase_trx_jar $HBASE_HOME/lib
$PDSH_HADOOP_NODES sudo chmod 644 $HBASE_HOME/lib/$hbase_trx_jar
$PDSH_HADOOP_NODES sudo chmod 644 $HBASE_HOME/lib/$traf_util_jar
$PDSH_HADOOP_NODES rm $LOCAL_WORKDIR/$hbase_trx_jar 2>/dev/null
$PDSH_HADOOP_NODES rm $LOCAL_WORKDIR/$traf_util_jar 2>/dev/null
else
for node in $HBASE_NODES
do
ssh -q -n $node sudo rm -rf $HBASE_HOME/lib/hbase-trx* 2>/dev/null
ssh -q -n $node sudo mkdir -p $TRAF_WORKDIR 2>/dev/null
ssh -q -n $node sudo chmod 777 $TRAF_WORKDIR
scp -q $UNTAR_DIR/export/lib/$hbase_trx_jar $(whoami)@$node:$TRAF_WORKDIR
scp -q $UNTAR_DIR/export/lib/$traf_util_jar $(whoami)@$node:$TRAF_WORKDIR
ssh -q -n $node sudo cp $TRAF_WORKDIR/$hbase_trx_jar $HBASE_HOME/lib
ssh -q -n $node sudo cp $TRAF_WORKDIR/$traf_util_jar $HBASE_HOME/lib
ssh -q -n $node sudo chmod 644 $HBASE_HOME/lib/$hbase_trx_jar
ssh -q -n $node sudo chmod 644 $HBASE_HOME/lib/$traf_util_jar
done
fi
#=======================================
#Check that HBase-trx copied to all nodes
echo "Check that HBase-trx copied to all nodes"
for node in $HBASE_NODES
do
copiedOver=$(ssh -q -n $node sudo ls $HBASE_HOME/lib/hbase-trx* | wc -l)
if [[ $copiedOver -ne "1" ]]; then
echo "***ERROR: $hbase_trx_jar was not copied on $node"
echo "***ERROR: Please investigate why this happened"
echo "***ERROR: Trafodion can not start without this. EXITING..."
exit -1
fi
done
echo "***INFO: $hbase_trx_jar copied correctly! Huzzah."
#Copy hbase-site.xml file
ssh -q -n $HBASE_NODE sudo cp $HBASE_HOME/conf/hbase-site.xml $HOME
ssh -q -n $HBASE_NODE sudo chown $(whoami).$(whoami) $HOME/hbase-site.xml
ssh -q -n $HBASE_NODE sudo chmod 777 $HOME/hbase-site.xml
scp -q $(whoami)@$HBASE_NODE:$HOME/hbase-site.xml $HOME
if [[ $? -gt 1 ]]; then
echo "***ERROR: Unable to find $HBASE_HOME/conf/hbase-site.xml file on $HBASE_NODE or unable to copy."
exit -1
fi
sudo cp $HOME/hbase-site.xml $TRAF_WORKDIR
sudo chown trafodion.trafodion $TRAF_WORKDIR/hbase-site.xml
#=====================================
# create new directories for bulkload and lobs if not already there
rm $LOCAL_WORKDIR/traf_temp_output 2>/dev/null
ssh -q -n $HDFS_NODE 'sudo su' "$HDFS_USER" '--command "' "$HADOOP_PREFIX"'/bin/hdfs dfs -mkdir -p /user/'"$TRAF_USER"'"'
if [ $? != 0 ]; then
echo "***ERROR: hds dfs -mkdir -p /hbase-staging' command failed"
exit -1
fi
ssh -q -n $HDFS_NODE 'sudo su' "$HDFS_USER" '--command "' "$HADOOP_PREFIX"'/bin/hdfs dfs -chown -R '"$TRAF_USER"' /user/'"$TRAF_USER"'"'
ssh -q -n $HDFS_NODE 'sudo su' "$HDFS_USER" '--command "' "$HADOOP_PREFIX"'/bin/hdfs dfs -mkdir -p /hbase-staging"'
if [ $? != 0 ]; then
echo "***ERROR: hds dfs -mkdir -p /hbase-staging' command failed"
exit -1
fi
ssh -q -n $HDFS_NODE 'sudo su' "$HDFS_USER" '--command "' "$HADOOP_PREFIX"'/bin/hdfs dfs -chown -R' "$HBASE_USER"':'"$HBASE_GROUP" '/hbase-staging"'
ssh -q -n $HDFS_NODE 'sudo su' "$HDFS_USER" '--command "' "$HADOOP_PREFIX"'/bin/hdfs dfs -mkdir -p /bulkload"'
if [ $? != 0 ]; then
echo "***ERROR: 'hdfs dfs -mkdir -p /bulkload' command failed"
exit -1
fi
ssh -q -n $HDFS_NODE 'sudo su' "$HDFS_USER" '--command " ' "$HADOOP_PREFIX"'/bin/hdfs dfs -chown -R' "$TRAF_USER"':trafodion /bulkload"'
# Create lobs directory
ssh -q -n $HDFS_NODE 'sudo su' "$HDFS_USER" '--command "' "$HADOOP_PREFIX"'/bin/hdfs dfs -mkdir -p /lobs"'
if [ $? != 0 ]; then
echo "***ERROR: 'hdfs dfs -mkdir -p /lobs' command failed"
exit -1
fi
ssh -q -n $HDFS_NODE 'sudo su' "$HDFS_USER" '--command "' "$HADOOP_PREFIX"'/bin/hdfs dfs -chown -R' "$TRAF_USER"':trafodion /lobs"'
ssh -q -n $HDFS_NODE 'sudo su' "$HDFS_USER" '--command "' "$HADOOP_PREFIX"'/bin/hdfs dfs -mkdir -p /trafodion_backups" 2> $HOME/traf_temp_output'
if [ $? != 0 ]; then
echo "***ERROR: 'hdfs dfs -mkdir -p /trafodion_backups' command failed"
exit -1
fi
ssh -q -n $HDFS_NODE 'sudo su' "$HDFS_USER" '--command "' "$HADOOP_PREFIX"'/bin/hdfs dfs -chown -R' "$TRAF_USER"':trafodion /trafodion_backups"'
ssh -q -n $HDFS_NODE 'rm -rf $HOME/traf_temp_output'
#=====================================
#Restart HAdoop
echo "****INFO: Stopping HDFS, HBASE, and Zookeeper"
sudo su $HBASE_USER $HBASE_HOME/bin/stop-hbase.sh
sudo su $ZOO_USER $ZOO_HOME/bin/zkServer.sh stop
sudo su $HDFS_USER $HADOOP_PREFIX/sbin/stop-dfs.sh
echo "***IMPORTANT***********************************************************************"
echo
echo "***INFO: Settings below need to be set for Trafodion to work on Apache Hadoop/HBase"
echo "***INFO: In hdfs-site.xml set dfs.namenode.acls.enabled to true and dfs.umaskmode to 0002"
echo "***INFO: In zoo.cfg set maxClientCnxns to 0"
echo "***INFO: Create $ZOO_HOME/conf/zookeeeper-env.sh and set JAVA_HOME"
echo "***INFO: In hbase-site.xml set hbase.coprocessor.region.classes to org.apache.hadoop.hbase.coprocessor.transactional.TrxRegionObserver, org.apache.hadoop.hbase.coprocessor.transactional.TrxRegionEndpoint, org.apache.hadoop.hbase.coprocessor.AggregateImplementation"
echo "***INFO: In hbase-site.xml set hbase.hregion.impl to org.apache.hadoop.hbase.regionserver.transactional.TransactionalRegion"
echo
echo "***IMPORTANT***********************************************************************"
sleep 15
sudo su $ZOO_USER $ZOO_HOME/bin/zkServer.sh start
sudo su $HDFS_USER $HADOOP_PREFIX/sbin/start-dfs.sh
ssh -q -n $HDFS_NODE 'sudo su ' "$HDFS_USER" '--command "' "$HADOOP_PREFIX"'/bin/hdfs dfsadmin -safemode wait"'
sudo su $HBASE_USER $HBASE_HOME/bin/start-hbase.sh
#=====================================
# NOTE: These command must be done AFTER acls are
# enabled and HDFS has been restarted
echo "***INFO: Setting HDFS ACLs for snapshot scan support"
ssh -q -n $HDFS_NODE 'sudo su' "$HDFS_USER" '--command "' "$HADOOP_PREFIX"'/bin/hdfs dfs -mkdir -p /apps/hbase/data/archive"'
if [ $? != 0 ]; then
echo "***ERROR: (hdfs dfs -mkdir -p /apps/hbase/data/archive) command failed"
exit -1
fi
ssh -q -n $HDFS_NODE 'sudo su' "$HDFS_USER" '--command "' "$HADOOP_PREFIX"'/bin/hdfs dfs -chown ' "$HBASE_USER"':'"$HDFS_USER" '/apps/hbase/data/archive"'
if [ $? != 0 ]; then
echo "***ERROR: (hdfs dfs -chown hbase:hdfs /apps/hbase/data/archive) command failed"
exit -1
fi
ssh -q -n $HDFS_NODE 'sudo su' "$HDFS_USER" '--command "' "$HADOOP_PREFIX"'/bin/hdfs dfs -setfacl -R -m user:'"$TRAF_USER"':rwx /apps/hbase/data/archive"'
if [ $? != 0 ]; then
echo "***ERROR: (hdfs dfs -setfacl -R -m mask::rwx /apps/hbase/data/archive) command failed"
exit -1
fi
ssh -q -n $HDFS_NODE 'sudo su' "$HDFS_USER" '--command "' "$HADOOP_PREFIX"'/bin/hdfs dfs -setfacl -R -m default:user:'"$TRAF_USER"':rwx /apps/hbase/data/archive"'
if [ $? != 0 ]; then
echo "***ERROR: (hdfs dfs -setfacl -R -m mask::rwx /apps/hbase/data/archive) command failed"
exit -1
fi
ssh -q -n $HDFS_NODE 'sudo su' "$HDFS_USER" '--command "' "$HADOOP_PREFIX"'/bin/hdfs dfs -setfacl -R -m mask::rwx /apps/hbase/data/archive"'
if [ $? != 0 ]; then
echo "***ERROR: (hdfs dfs -setfacl -R -m mask::rwx /apps/hbase/data/archive) command failed"
exit -1
fi
MODS_COMPLETE="Y"
sudo chmod 777 $TRAF_CONFIG
sed -i '/MODS_COMPLETE\=/d' $TRAF_CONFIG
echo "export MODS_COMPLETE=\"$MODS_COMPLETE\"" >> $TRAF_CONFIG
sudo chmod 777 $TRAF_CONFIG
source $TRAF_CONFIG
TRAF_CONFIG_FILE="trafodion_config"
TRAF_CONFIG_DIR="/etc/trafodion"
if [ $node_count -ne 1 ]; then
cp $TRAF_CONFIG $LOCAL_WORKDIR
$TRAF_PDCP $LOCAL_WORKDIR/$TRAF_CONFIG_FILE $HOME
$TRAF_PDSH sudo mkdir -p $TRAF_CONFIG_DIR
$TRAF_PDSH sudo cp $HOME/$TRAF_CONFIG_FILE $TRAF_CONFIG_DIR
$TRAF_PDSH sudo chmod 777 $TRAF_CONFIG
fi