shellscripts/aws/emr/bootstrap/configure-hbase-daemons

71 lines
1.6 KiB
Bash

#!/bin/bash
set -e
# first validate the arguments
REPLACE_FILE=false
for i in "$@" ; do
case $i in
--*-opts*)
if ! echo $i | grep -E -- '--[a-zA-Z-]+?-opts=.+' > /dev/null 2>&1 ; then
echo "Couldn't parse option $i expected --cmd-opts=-XX:+UseG1GC where cmd is hadoop-master or some such and -XX:+UseG1GC is the option to pass to the JVM" 1>&2
exit 1
fi
;;
--help)
set +x
echo "Usage: "
echo "--<daemon>-opts"
echo " Set additional Java options for the specified daemon."
echo " "
echo "--replace"
echo " Replace the existing hbase-user-env.sh file if it exists."
echo " "
echo "<daemon> is one of:"
echo " hbase-master, hbase-regionserver, zookeeper"
echo " "
echo " "
echo "Example Usage:"
echo " --hbase-master-opts=-Xmx2048 --zookeeper-opts=-XX:GCTimeRatio=19"
exit 1
;;
--replace)
REPLACE_FILE=true
;;
*)
echo "Unknown option $i" 1>&2
exit 1
;;
esac
done
set -x
mkdir /home/hadoop/conf
HBASE_ENV_FILE=/home/hadoop/conf/hbase-user-env.sh
if [ -d "/home/hadoop/hbase/conf" ] ; then
HBASE_ENV_FILE=/home/hadoop/hbase/conf/hbase-user-env.sh
fi
if [ $REPLACE_FILE == "true" ] ; then
rm -rf $HBASE_ENV_FILE
fi
if [ -e $HBASE_ENV_FILE ] ; then
[[ ! -n $(grep "#\\!/bin/bash" $HBASE_ENV_FILE ) ]] && echo "#!/bin/bash" >> $HBASE_ENV_FILE
else
echo "#!/bin/bash" >> $HBASE_ENV_FILE
fi
for i in "$@" ; do
case $i in
--*-opts*)
OPTS_CMD=$(echo $i | sed -r 's|--(.*?)-opts=.*|\1|' | tr 'a-z-' 'A-Z_')_OPTS
OPTS_VALUE=$(echo $i | sed -r 's|--.*?-opts=(.*)|\1|')
cat >> $HBASE_ENV_FILE <<EOF
$OPTS_CMD="$OPTS_VALUE"
EOF
;;
esac
done