#!/bin/bash
echo "---- Runninig scripts in root_local-hooks ----"
echo "---- [1] Installing Sun Java JDK 6 ........ ----"
echo "deb http://free.nchc.org.tw/debian lenny non-free" > lenny-non-free.list
mv lenny-non-free.list /etc/apt/sources.list.d/.
apt-get update
cat << EOF | /usr/bin/debconf-set-selections
sun-java6-bin   shared/accepted-sun-dlj-v1-1    select true
sun-java6-jdk   shared/accepted-sun-dlj-v1-1    select true
sun-java6-jre   shared/accepted-sun-dlj-v1-1    select true
EOF
apt-get -y install sun-java6-jdk
echo "---- [2] Installing Hadoop 0.20.2 ........ ----"
cd /opt
{
  if [ ! -x /opt/hadoop ]; then
    wget http://ftp.twaren.net/Unix/Web/apache/hadoop/core/hadoop-0.20.2/hadoop-0.20.2.tar.gz
    tar zxvf hadoop-0.20.2.tar.gz
    rm -f hadoop-0.20.2.tar.gz
    mv hadoop-0.20.2/ hadoop
    chown -R hadoop:hadoop /opt/hadoop
    if [ ! -x /var/hadoop ]; then
      mkdir -p /var/hadoop
      chown -R hadoop:hadoop /var/hadoop
    fi
  fi
}
if [ ! -x /opt/hadoop ]; then
  echo "---- [ERROR] /opt/hadoop is not exist!! ----"; exit;
else
  echo "---- [3] Configure Hadoop NameNode and JobTracker .... ----"
  cd /opt/hadoop
  {
    if [ ! -f /opt/hadoop/conf/hadoop-env.sh ]; then
      echo "---- [ERROR] /opt/hadoop/conf/hadoop-env.sh is not exist!!  ----"; exit
    else
      if [ ! -f /opt/hadoop/conf/hadoop-env.sh.org ]; then
        echo "---- [3.1] Updating /opt/hadoop/conf/hadoop-env.sh ....  ----"
        cp /opt/hadoop/conf/hadoop-env.sh /opt/hadoop/conf/hadoop-env.sh.org
        cat >> conf/hadoop-env.sh << EOF
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export HADOOP_HOME=/opt/hadoop
export HADOOP_CONF_DIR=/opt/hadoop/conf
EOF
      fi
    fi
    if [ ! -f /opt/hadoop/conf/core-site.xml ]; then
      echo "---- [ERROR] /opt/hadoop/conf/core-site.xml is not exist!!  ----"; exit
    else
      if [ ! -f /opt/hadoop/conf/core-site.xml.org ]; then
        echo "---- [3.2] Updating /opt/hadoop/conf/core-site.xml ....  ----"
        cp /opt/hadoop/conf/core-site.xml /opt/hadoop/conf/core-site.xml.org
        cat > conf/core-site.xml << EOF
  
    fs.default.name
    hdfs://localhost:9000
  
  
    hadoop.tmp.dir
    /var/hadoop/hadoop-\${user.name}
  
EOF
      fi
    fi
    if [ ! -f /opt/hadoop/conf/hdfs-site.xml ]; then
      echo "---- [ERROR] /opt/hadoop/conf/hdfs-site.xml is not exist!!  ----"; exit
    else
      if [ ! -f /opt/hadoop/conf/hdfs-site.xml.org ]; then
        echo "---- [3.3] Updating /opt/hadoop/conf/hdfs-site.xml ....  ----"
        cp /opt/hadoop/conf/hdfs-site.xml /opt/hadoop/conf/hdfs-site.xml.org
        cat > conf/hdfs-site.xml << EOF
  
    dfs.replication
    1
  
EOF
      fi
    fi
    if [ ! -f /opt/hadoop/conf/mapred-site.xml ]; then
      echo "---- [ERROR] /opt/hadoop/conf/mapred-site.xml is not exist!!  ----"; exit
    else
      if [ ! -f /opt/hadoop/conf/mapred-site.xml.org ]; then
        echo "---- [3.3] Updating /opt/hadoop/conf/mapred-site.xml ....  ----"
        cp /opt/hadoop/conf/mapred-site.xml /opt/hadoop/conf/mapred-site.xml.org
        cat > conf/mapred-site.xml << EOF
  
    mapred.job.tracker
    localhost:9001
  
EOF
      fi
    fi
    if [ ! -d /var/hadoop/hadoop-root/dfs/name ]; then
      echo "---- [3.4] Formating NameNode ....  ----"
      bin/hadoop namenode -format
    fi
  }
fi