Skip to content

Instantly share code, notes, and snippets.

@gslin
Created September 30, 2011 08:29
Show Gist options
  • Save gslin/1253098 to your computer and use it in GitHub Desktop.
Save gslin/1253098 to your computer and use it in GitHub Desktop.
Hadoop rc.local
# Variables initialize
INSTANCE_TYPE="`curl -s http://169.254.169.254/latest/meta-data/instance-type`"
MASTER_HOST="`curl -s http://169.254.169.254/latest/user-data | grep ^MASTER_HOST= | awk -F= '{print $2}'`"
PUBLIC_HOSTNAME="`curl -s http://169.254.169.254/latest/meta-data/public-hostname`"
ROLE="`curl -s http://169.254.169.254/latest/user-data | grep ^ROLE= | awk -F= '{print $2}'`"
if [ "x${MASTER_HOST}" -eq 'x' ]; then
MASTER_HOST="${PUBLIC_HOSTNAME}"
fi
# Swap (Enable in all type, except t1.micro)
if [ "x${INSTANCE_TYPE}" -ne 'xt1.micro' ]; then
( dd if=/dev/zero of=/mnt/swap.0 bs=1M count=2048 && mkswap /mnt/swap.0 && swapon /mnt/swap.0 ) &
( dd if=/dev/zero of=/mnt/swap.1 bs=1M count=2048 && mkswap /mnt/swap.1 && swapon /mnt/swap.1 ) &
fi
# Hadoop configuration
rsync -a /etc/hadoop/conf.template/ /etc/hadoop/conf/
perl -pi -e "s{_MASTER_HOST_}{${MASTER_HOST}}" /etc/hadoop/conf/core-site.xml
perl -pi -e "s{_MASTER_HOST_}{${MASTER_HOST}}" /etc/hadoop/conf/mapred-site.xml
# Create /mnt/tmp
install -d -m 1777 -o root -g root /mnt/tmp
# Create /var/log/hadoop
rm -f /var/log/hadoop
install -d -m 755 -o root -g hadoop /mnt/var.log.hadoop
ln -s /mnt/var.log.hadoop /var/log/hadoop
# Role
if [ "x${ROLE}" -eq 'xmaster' ]; then
su - hdfs -c "hadoop namenode -format"
/etc/init.d/hadoop-0.20-namenode start
/etc/init.d/hadoop-0.20-jobtracker start
elif [ "x${ROLE}" -eq 'xsecondary' ]; then
/etc/init.d/hadoop-0.20-secondarynamenode start
elif [ "x${ROLE}" -eq 'xslave' ]; then
/etc/init.d/hadoop-0.20-datanode start
/etc/init.d/hadoop-0.20-tasktracker start
fi
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment