#!/bin/bash # # /etc/init.d/hadoop - Start/stop the hadoop HDFS filesystem # # The following two lines allow this script to be managed by Fedora's # chkconfig program. # # chkconfig: - 80 30 # description: hadoop is a cluster file system. if [ -e /etc/sysconfig/hadoop ] ; then . /etc/sysconfig/hadoop fi HADOOP_NAMEPORT=${HADOOP_NAMEPORT-9000} HADOOP_DATADIR=${HADOOP_DATADIR-/data1/hadoop} HADOOP_DATA=${HADOOP_DATA-/data1/hadoop/data} HADOOP_LOG=${HADOOP_LOG-/data1/hadoop/logs} HADOOP_SCRATCH=${HADOOP_SCRATCH-/data1/hadoop/scratch} POOL_DATA_SIZE_MIN=${HADOOP_MIN_DATANODE_SIZE-300} . /etc/hadoop/hadoop-env.sh . ~hadoop/.bash_profile setup_dirs() { mkdir -p $HADOOP_DATADIR mkdir -p $HADOOP_LOG mkdir -p $HADOOP_SCRATCH for dir in `echo "$HADOOP_DATA" | sed -e "s/,/ /g"` ; do mkdir -p $dir chown $HADOOP_USER: $dir done chown $HADOOP_USER: $HADOOP_DATADIR chown $HADOOP_USER: $HADOOP_LOG chown -R $HADOOP_USER: $HADOOP_SCRATCH chown $HADOOP_USER: /var/run/hadoop } start() { ulimit -n 65536 # A few sanity checks are needed before starting the data services POOL_DATA_SIZE=`/usr/bin/getPoolSize.sh $HADOOP_DATADIR` if [ "$POOL_DATA_SIZE" == "0" ] ; then echo -n " ...$HADOOP_DATADIR has zero size?" return 1 fi if [ $POOL_DATA_SIZE -lt "$POOL_DATA_SIZE_MIN" ] ; then echo -n " ...$HADOOP_DATADIR is too small ($POOL_DATA_SIZE GB < ${POOL_DATA_SIZE_MIN} GB)" return 1 fi su - "$HADOOP_USER" -c "/usr/bin/hadoop-daemon.sh start datanode" RETVAL=$? if [ $RETVAL != 0 ] ; then return $RETVAL fi } # A function to stop a program. stop() { su - "$HADOOP_USER" -c "/usr/bin/hadoop-daemon.sh stop datanode" RETVAL=$? if [ $RETVAL != 0 ] ; then return $RETVAL fi return 0 } prog="hadoop-daemon.sh" name="hadoop-daemon.sh" case $1 in 'start') echo -n $"Starting $prog: " setup_dirs start RETVAL=$? ;; 'stop') echo -n $"Stopping $prog: " stop RETVAL=$? echo ;; 'status') status $prog ;; 'reload' | 'restart') $0 stop $0 start ;; *) echo "usage: $0 {start|stop|status|restart}" ;; esac exit $RETVAL