sahara-extra/elements/hadoop/post-install.d/40-setup-hadoop

77 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
# XXX: This is in post-install.d, instead of install.d, because the
# hadoop RPM claims ownership of files owned by the filesystem RPM,
# such as /usr and /bin, and installing hadoop then updating
# filesystem results in a failure. This can be moved to install.d when
# HADOOP-9777 is resolved.
# https://issues.apache.org/jira/browse/HADOOP-9777
distro=$(lsb_release -is || :)
if [ ! "$distro" == "Fedora" -a ! "$distro" == "Ubuntu" ]; then
echo "Unknown distro: $distro. Exiting."
exit 1
fi
echo "Hadoop setup begins for $distro"
tmp_dir=/tmp/hadoop
echo "Creating hadoop user & group"
case "$distro" in
Ubuntu )
addgroup hadoop
adduser --ingroup hadoop --disabled-password --gecos GECOS hadoop
adduser hadoop sudo
;;
Fedora )
adduser -G adm,wheel hadoop
;;
esac
echo "Hadoop version $DIB_HADOOP_VERSION will be injected into image. Starting the download"
case "$distro" in
Ubuntu )
package="hadoop_$DIB_HADOOP_VERSION-1_x86_64.deb"
;;
Fedora )
package="hadoop-$DIB_HADOOP_VERSION-1.x86_64.rpm"
;;
esac
install-packages wget
wget -P $tmp_dir "http://archive.apache.org/dist/hadoop/core/hadoop-$DIB_HADOOP_VERSION/$package"
if [ $? -ne 0 ]; then
echo -e "Could not find Hadoop version $DIB_HADOOP_VERSION.\nAborting"
exit 1
fi
case "$distro" in
Ubuntu )
dpkg -i $tmp_dir/$package
;;
Fedora )
if [ $(lsb_release -rs) = '19' ]; then
rpm -i $tmp_dir/$package --relocate /usr=/usr --replacefiles
else
rpm -ivh --replacefiles $tmp_dir/$package
fi
chmod 755 /usr/sbin/start-*
chmod 755 /usr/sbin/stop-*
chmod 755 /usr/sbin/slaves.sh
chmod 755 /usr/sbin/update-hadoop-env.sh
;;
esac
rm -r $tmp_dir
echo "Pre-configuring Hadoop"
filename=$(find $TARGET_ROOT/usr/java/ -maxdepth 1 -name "jdk*")
cat >> /home/hadoop/.bashrc <<EOF
PATH=\$PATH:/usr/sbin:$filename/bin
JAVA_HOME=$filename
HADOOP_HOME=/usr/share/hadoop/
EOF
sed -i -e "s,export JAVA_HOME=.*,export JAVA_HOME=$filename," \
-e "s,export HADOOP_LOG_DIR=.*,export HADOOP_LOG_DIR=/mnt/log/hadoop/\$USER," \
-e "s,export HADOOP_SECURE_DN_LOG_DIR=.*,export HADOOP_SECURE_DN_LOG_DIR=/mnt/log/hadoop/hdfs," \
/etc/hadoop/hadoop-env.sh