#!/bin/bash # usage: curl https://raw.githubusercontent.com/SunnyBingoMe/install-hadoop/master/setup-hadoop | bash # Note: if wanted, create_hadoop_user will ask for a new pwd for the user: ${HDUSER}. # Note: to start-dfs.sh, we need to `su ${HDUSER}` first. HDUSER=ubuntu # change to your desired username # Function for asking to proceed confirm () { read -r -p "${1:-Are you sure? [y/N]} " response case $response in [yY][eE][sS]|[yY]) true ;; *) false ;; esac } function update_apt_repo { sudo add-apt-repository ppa:webupd8team/java sudo apt-get update } function install_java { sudo apt-get install -y oracle-java8-installer sudo apt-get install -y oracle-java8-set-default } function install_open_java { sudo apt-get update && \ sudo apt-get install -y openjdk-8-jdk && \ sudo ln -s /usr/lib/jvm/java-8-openjdk-amd64 /opt/jdk && \ echo "JAVA_HOME='/opt/jdk'" | sudo tee -a /etc/environment && \ source /etc/environment && \ echo $JAVA_HOME } function create_hadoop_user { sudo useradd -m ${HDUSER} sudo adduser ${HDUSER} sudo sudo chsh -s /bin/bash ${HDUSER} #sudo passwd ${HDUSER} } function install_hadoop { sudo mkdir -p /usr/local/hadoop/ cd /usr/local/hadoop sudo curl http://archive.apache.org/dist/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz | sudo tar xz sudo chown -R ${HDUSER}:${HDUSER} /usr/local/hadoop } function setup_profile { local file=/etc/profile.d/hadoop-init.sh local tempfile=/tmp/hadoop_setup_sdfds.sh sudo mkdir -p /tmp/hadoop sudo chown -R ${HDUSER}:${HDUSER} /tmp/hadoop export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.2 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin cat >> $tempfile <> $tmpfile < hadoop.tmp.dir /tmp/hadooop optional, temporary directories. fs.default.name hdfs://localhost:9000 A URI whose scheme and authority determine the FileSystem implementation. EOF tmpfile=/tmp/hadoop_fafsa.xml sudo chown root $tmpfile sudo mv $tmpfile $file } function setup_mapred_xml { export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.2 local tmpfile=/tmp/hadoop_mapred.xml local file=$HADOOP_HOME/etc/hadoop/mapred-site.xml sudo rm -rf $file cat >> $tmpfile < mapred.job.tracker localhost:54311 The tracker of MapReduce EOT tmpfile=/tmp/hadoop_mapred.xml sudo chown root $tmpfile sudo mv $tmpfile $file } function setup_hdfs_xml { export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.2 local tmpfile=/tmp/hadoop_hdfs.xml local file=$HADOOP_HOME/etc/hadoop/hdfs-site.xml sudo rm -rf $file cat >> $tmpfile < dfs.replication 1 Number of replication of hdfs EOF tmpfile=/tmp/hadoop_hdfs.xml sudo chown root $tmpfile sudo mv $tmpfile $file } function setup_environment { export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.2 sudo sed -i -- 's/JAVA_HOME=\${JAVA_HOME}/JAVA_HOME=\$(readlink -f \/usr\/bin\/java | sed "s:bin\/java::")/' $HADOOP_HOME/etc/hadoop/hadoop-env.sh setup_profile setup_core_xml setup_mapred_xml setup_hdfs_xml sudo chown -R ${HDUSER}:${HDUSER} $HADOOP_HOME } if [ ! $HDUSER == $USER ]; then create_hadoop_user install_open_java install_hadoop echo "================== WARNING ! ==================" echo "Installer '$USER' is NOT hadoop user '$HDUSER', plz run 'setup_environment' as the hadoop user '$HDUSER' after this script." echo "================== WARNING ! ==================" else install_open_java install_hadoop setup_environment fi