blob: 3921e4f2dd274443d181aedf3724583587b62090 [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.
# Script for setup HDFS file system for single node deployment
bin=`dirname "$0"`
bin=`cd "$bin"; pwd`
if [ "$HADOOP_HOME" != "" ]; then
echo "Warning: \$HADOOP_HOME is deprecated."
echo
fi
. "$bin"/../libexec/hadoop-config.sh
usage() {
echo "
usage: $0 <parameters>
Optional parameters:
--default Setup system as default
-h Display this message
"
exit 1
}
template_generator() {
REGEX='(\$\{[a-zA-Z_][a-zA-Z_0-9]*\})'
cat $1 |
while read line ; do
while [[ "$line" =~ $REGEX ]] ; do
LHS=${BASH_REMATCH[1]}
RHS="$(eval echo "\"$LHS\"")"
line=${line//$LHS/$RHS}
done
echo $line >> $2
done
}
OPTS=$(getopt \
-n $0 \
-o '' \
-l 'default' \
-- "$@")
if [ $? != 0 ] ; then
usage
fi
if [ -e /etc/hadoop/hadoop-env.sh ]; then
. /etc/hadoop/hadoop-env.sh
fi
eval set -- "${OPTS}"
while true ; do
case "$1" in
--default)
AUTOMATED=1; shift
;;
-h)
usage
;;
--)
shift ; break
;;
*)
echo "Unknown option: $1"
usage
exit 1
;;
esac
done
if [ "${AUTOMATED}" != "1" ]; then
echo "Welcome to Hadoop single node setup wizard"
echo
echo -n "Would you like to use default single node configuration? (y/n) "
read SET_CONFIG
echo -n "Would you like to format name node? (y/n) "
read SET_FORMAT
echo -n "Would you like to setup default directory structure? (y/n) "
read SET_MKDIR
echo -n "Would you like to start up Hadoop? (y/n) "
read STARTUP
echo -n "Would you like to start up Hadoop on reboot? (y/n) "
read SET_REBOOT
echo
echo "Review your choices:"
echo
echo "Setup single node configuration : ${SET_CONFIG}"
echo "Format namenode : ${SET_FORMAT}"
echo "Setup default file system structure: ${SET_MKDIR}"
echo "Start up Hadoop : ${STARTUP}"
echo "Start up Hadoop on reboot : ${SET_REBOOT}"
echo
echo -n "Proceed with setup? (y/n) "
read CONFIRM
if [ "${CONFIRM}" != "y" ]; then
echo "User aborted setup, exiting..."
exit 1
fi
else
SET_CONFIG="y"
SET_FORMAT="y"
SET_MKDIR="y"
STARTUP="y"
SET_REBOOT="y"
fi
AUTOMATED=${AUTOMATED:-0}
SET_CONFIG=${SET_CONFIG:-y}
SET_FORMAT=${SET_FORMAT:-n}
SET_MKDIR=${SET_MKDIR:-y}
STARTUP=${STARTUP:-y}
SET_REBOOT=${SET_REBOOT:-y}
# Make sure system is not already started
/etc/init.d/hadoop-namenode stop 2>/dev/null >/dev/null
/etc/init.d/hadoop-datanode stop 2>/dev/null >/dev/null
/etc/init.d/hadoop-jobtracker stop 2>/dev/null >/dev/null
/etc/init.d/hadoop-tasktracker stop 2>/dev/null >/dev/null
if [ "${SET_CONFIG}" == "y" ]; then
JAVA_HOME=${JAVA_HOME:-/usr/java/default}
HADOOP_NN_HOST=${HADOOP_NN_HOST:-hdfs://localhost:9000/}
HADOOP_NN_DIR=${HADOOP_NN_DIR:-/var/lib/hadoop/hdfs/namenode}
HADOOP_DN_DIR=${HADOOP_DN_DIR:-/var/lib/hadoop/hdfs/datanode}
HADOOP_JT_HOST=${HADOOP_JT_HOST:-localhost:9001}
HADOOP_HDFS_DIR=${HADOOP_MAPRED_DIR:-/var/lib/hadoop/hdfs}
HADOOP_MAPRED_DIR=${HADOOP_MAPRED_DIR:-/var/lib/hadoop/mapred}
HADOOP_PID_DIR=${HADOOP_PID_DIR:-/var/run/hadoop}
HADOOP_LOG_DIR="/var/log/hadoop"
HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-/etc/hadoop}
HADOOP_REPLICATION=${HADOOP_RELICATION:-1}
${HADOOP_PREFIX}/sbin/hadoop-setup-conf.sh --auto \
--conf-dir=${HADOOP_CONF_DIR} \
--datanode-dir=${HADOOP_DN_DIR} \
--hdfs-dir=${HADOOP_HDFS_DIR} \
--jobtracker-url=${HADOOP_JT_HOST} \
--log-dir=${HADOOP_LOG_DIR} \
--pid-dir=${HADOOP_PID_DIR} \
--mapred-dir=${HADOOP_MAPRED_DIR} \
--namenode-dir=${HADOOP_NN_DIR} \
--namenode-url=${HADOOP_NN_HOST} \
--replication=${HADOOP_REPLICATION}
fi
if [ ! -e ${HADOOP_NN_DIR} ]; then
rm -rf ${HADOOP_HDFS_DIR} 2>/dev/null >/dev/null
mkdir -p ${HADOOP_HDFS_DIR}
chmod 755 ${HADOOP_HDFS_DIR}
chown hdfs:hadoop ${HADOOP_HDFS_DIR}
/etc/init.d/hadoop-namenode format
elif [ "${SET_FORMAT}" == "y" ]; then
rm -rf ${HADOOP_HDFS_DIR} 2>/dev/null >/dev/null
mkdir -p ${HADOOP_HDFS_DIR}
chmod 755 ${HADOOP_HDFS_DIR}
chown hdfs:hadoop ${HADOOP_HDFS_DIR}
rm -rf ${HADOOP_NN_DIR}
/etc/init.d/hadoop-namenode format
fi
/etc/init.d/hadoop-namenode start
/etc/init.d/hadoop-datanode start
su -c '${HADOOP_PREFIX}/bin/hadoop --config ${HADOOP_CONF_DIR} dfs -mkdir /user/mapred' hdfs
su -c '${HADOOP_PREFIX}/bin/hadoop --config ${HADOOP_CONF_DIR} dfs -chown mapred:mapred /user/mapred' hdfs
su -c '${HADOOP_PREFIX}/bin/hadoop --config ${HADOOP_CONF_DIR} dfs -mkdir /tmp' hdfs
su -c '${HADOOP_PREFIX}/bin/hadoop --config ${HADOOP_CONF_DIR} dfs -chmod 777 /tmp' hdfs
/etc/init.d/hadoop-jobtracker start
/etc/init.d/hadoop-tasktracker start
if [ "${SET_REBOOT}" == "y" ]; then
if [ -e /etc/debian_version ]; then
ln -sf ../init.d/hadoop-namenode /etc/rc2.d/S90hadoop-namenode
ln -sf ../init.d/hadoop-datanode /etc/rc2.d/S91hadoop-datanode
ln -sf ../init.d/hadoop-jobtracker /etc/rc2.d/S92hadoop-jobtracker
ln -sf ../init.d/hadoop-tasktracker /etc/rc2.d/S93hadoop-tasktracker
ln -sf ../init.d/hadoop-namenode /etc/rc6.d/S10hadoop-namenode
ln -sf ../init.d/hadoop-datanode /etc/rc6.d/S11hadoop-datanode
ln -sf ../init.d/hadoop-jobtracker /etc/rc6.d/S12hadoop-jobtracker
ln -sf ../init.d/hadoop-tasktracker /etc/rc6.d/S13hadoop-tasktracker
elif [ -e /etc/redhat-release ]; then
/sbin/chkconfig hadoop-namenode --add
/sbin/chkconfig hadoop-datanode --add
/sbin/chkconfig hadoop-jobtracker --add
/sbin/chkconfig hadoop-tasktracker --add
/sbin/chkconfig hadoop-namenode on
/sbin/chkconfig hadoop-datanode on
/sbin/chkconfig hadoop-jobtracker on
/sbin/chkconfig hadoop-tasktracker on
fi
fi
if [ "${STARTUP}" != "y" ]; then
/etc/init.d/hadoop-namenode stop
/etc/init.d/hadoop-datanode stop
/etc/init.d/hadoop-jobtracker stop
/etc/init.d/hadoop-tasktracker stop
fi