Start caching large-sized resources

Use the cache-url script (in the element cache-url) to download and
cache resources which might be expensive (mostly because of their size)
to fetch every time.
As the shared cache ($DIB_IMAGE_CACHE) is available only when running
the root.d elements, move the download phases to root.d scripts.

Change-Id: Iec3e0f92e62c4c9542487a3c228ba8f9e884e5dd
This commit is contained in:
Pino Toscano 2015-04-03 15:45:16 +02:00
parent 999eb1f69e
commit f2fac65cc4
15 changed files with 194 additions and 51 deletions

View File

@ -1,3 +1,4 @@
cache-url
java
ssh
sahara-version

View File

@ -11,16 +11,6 @@ if [ "${DIB_DEBUG_TRACE:-0}" -gt 0 ]; then
set -x
fi
function download_hadoop_package {
echo "Hadoop version $DIB_HADOOP_VERSION will be injected into image. Starting the download"
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
}
function install_hadoop_v1 {
case "$DISTRO_NAME" in
ubuntu )
@ -31,8 +21,6 @@ function install_hadoop_v1 {
;;
esac
download_hadoop_package
case "$DISTRO_NAME" in
ubuntu )
dpkg -i $tmp_dir/$package
@ -80,8 +68,6 @@ function install_hadoop_v2 {
package="hadoop-$DIB_HADOOP_VERSION.tar.gz"
download_hadoop_package
echo "Installing hadoop"
INSTALL_DIR="/opt"

View File

@ -0,0 +1,50 @@
#!/bin/bash
if [ "${DIB_DEBUG_TRACE:-0}" -gt 0 ]; then
set -x
fi
set -eu
set -o pipefail
function download_hadoop_package {
package=$1
echo "Hadoop version $DIB_HADOOP_VERSION will be downloaded"
cached_package="$DIB_IMAGE_CACHE/$package"
$TMP_HOOKS_PATH/bin/cache-url "http://archive.apache.org/dist/hadoop/core/hadoop-$DIB_HADOOP_VERSION/$package" $cached_package
sudo install -D -g root -o root -m 0644 $cached_package $tmp_dir
}
function download_hadoop_v1 {
case "$DISTRO_NAME" in
ubuntu )
package="hadoop_$DIB_HADOOP_VERSION-1_x86_64.deb"
;;
fedora | rhel | centos )
package="hadoop-$DIB_HADOOP_VERSION-1.x86_64.rpm"
;;
esac
download_hadoop_package $package
}
function download_hadoop_v2 {
download_hadoop_package "hadoop-$DIB_HADOOP_VERSION.tar.gz"
}
case "$DISTRO_NAME" in
fedora | ubuntu | rhel | centos )
;;
*)
echo "Unknown distro: $DISTRO_NAME. Exiting."
exit 1
;;
esac
tmp_dir=$TARGET_ROOT/tmp/hadoop
mkdir -p $tmp_dir
if [[ "$DIB_HADOOP_VERSION" < "2.0.0" ]]; then
download_hadoop_v1
else
download_hadoop_v2
fi

View File

@ -1,2 +1,3 @@
cache-url
hadoop
mysql

View File

@ -4,21 +4,16 @@ if [ "${DIB_DEBUG_TRACE:-0}" -gt 0 ]; then
set -x
fi
install-packages wget tar
install-packages tar
tmp_dir=/tmp/hive
mkdir -p $tmp_dir
cd $tmp_dir
if [ -z "${HIVE_DOWNLOAD_URL:-}" ]; then
HIVE_DOWNLOAD_URL=http://archive.apache.org/dist/hive/hive-$HIVE_VERSION/hive-$HIVE_VERSION-bin.tar.gz
HIVE_FILE=hive-$HIVE_VERSION-bin.tar.gz
else
HIVE_FILE=$(basename $HIVE_DOWNLOAD_URL)
fi
wget $HIVE_DOWNLOAD_URL
if [ $? -ne 0 ]; then
echo -e "Could not download hive.\nAborting"
exit 1
fi
HIVE_FILE=$(basename $HIVE_DOWNLOAD_URL)
tar xzf $HIVE_FILE
HIVE_DIR="${HIVE_FILE%.*}"
HIVE_DIR="${HIVE_DIR%.*}"

View File

@ -0,0 +1,18 @@
#!/bin/bash
if [ "${DIB_DEBUG_TRACE:-0}" -gt 0 ]; then
set -x
fi
set -eu
set -o pipefail
tmp_dir=$TARGET_ROOT/tmp/hive
mkdir -p $tmp_dir
if [ -z ${HIVE_DOWNLOAD_URL:-} ]; then
HIVE_DOWNLOAD_URL=http://archive.apache.org/dist/hive/hive-$HIVE_VERSION/hive-$HIVE_VERSION-bin.tar.gz
fi
HIVE_FILE=$(basename $HIVE_DOWNLOAD_URL)
cached_tar="$DIB_IMAGE_CACHE/$HIVE_FILE"
$TMP_HOOKS_PATH/bin/cache-url $HIVE_DOWNLOAD_URL $cached_tar
sudo install -D -g root -o root -m 0644 $cached_tar $tmp_dir

View File

@ -1 +1,2 @@
cache-url
sahara-version

View File

@ -6,29 +6,27 @@ fi
echo "Oozie setup"
install-packages zip unzip tar wget
install-packages zip unzip tar
tmp_dir=/tmp/oozie
mkdir $tmp_dir
if [[ "$DIB_HADOOP_VERSION" < "2.0.0" ]]; then
OOZIE_DOWNLOAD_URL="${OOZIE_HADOOP_V1_DOWNLOAD_URL:-}"
OOZIE_FILE="${OOZIE_HADOOP_V1_FILE:-}"
if [ -z "${OOZIE_HADOOP_V1_DOWNLOAD_URL:-}" ]; then
OOZIE_FILE=$(basename $OOZIE_HADOOP_V1_FILE)
else
OOZIE_FILE=$(basename $OOZIE_HADOOP_V1_DOWNLOAD_URL)
fi
elif [[ "$DIB_HADOOP_VERSION" == "2.6.0" ]]; then
OOZIE_DOWNLOAD_URL="${OOZIE_HADOOP_V2_6_DOWNLOAD_URL:-}"
OOZIE_FILE="${OOZIE_HADOOP_V2_6_FILE:-}"
if [ -z "${OOZIE_HADOOP_V2_6_DOWNLOAD_URL:-}" ]; then
OOZIE_FILE=$(basename $OOZIE_HADOOP_V2_6_FILE)
else
OOZIE_FILE=$(basename $OOZIE_HADOOP_V2_6_DOWNLOAD_URL)
fi
else
echo "Unknown Hadoop version selected. Aborting."
exit 1
fi
if [ -n "$OOZIE_DOWNLOAD_URL" ]; then
wget -P $tmp_dir $OOZIE_DOWNLOAD_URL
OOZIE_FILE=$(basename $OOZIE_DOWNLOAD_URL)
elif [ -n "$OOZIE_FILE" ]; then
install -D -g root -o root -m 0755 $(dirname $0)/$OOZIE_FILE $tmp_dir
fi
cd $tmp_dir
tar xzf $OOZIE_FILE
rm $OOZIE_FILE
@ -40,4 +38,4 @@ else
mv * /opt/oozie/
fi
rm -rf tmp_dir
rm -rf $tmp_dir

View File

@ -0,0 +1,30 @@
#!/bin/bash
if [ "${DIB_DEBUG_TRACE:-0}" -gt 0 ]; then
set -x
fi
set -eu
set -o pipefail
tmp_dir=$TARGET_ROOT/tmp/oozie
mkdir -p $tmp_dir
if [[ "$DIB_HADOOP_VERSION" < "2.0.0" ]]; then
OOZIE_DOWNLOAD_URL="${OOZIE_HADOOP_V1_DOWNLOAD_URL:-}"
OOZIE_FILE="${OOZIE_HADOOP_V1_FILE:-}"
elif [[ "$DIB_HADOOP_VERSION" == "2.6.0" ]]; then
OOZIE_DOWNLOAD_URL="${OOZIE_HADOOP_V2_6_DOWNLOAD_URL:-}"
OOZIE_FILE="${OOZIE_HADOOP_V2_6_FILE:-}"
else
echo "Unknown Hadoop version selected. Aborting."
exit 1
fi
if [ -n "${OOZIE_DOWNLOAD_URL:-}" ]; then
OOZIE_FILE=$(basename $OOZIE_DOWNLOAD_URL)
cached_tar="$DIB_IMAGE_CACHE/$OOZIE_FILE"
$TMP_HOOKS_PATH/bin/cache-url "$OOZIE_DOWNLOAD_URL" $cached_tar
sudo install -D -g root -o root -m 0755 $cached_tar $tmp_dir
elif [ -n "$OOZIE_FILE" ]; then
sudo install -D -g root -o root -m 0755 $(dirname $0)/$OOZIE_FILE $tmp_dir
fi

View File

@ -1 +1,2 @@
cache-url
hadoop-cdh

View File

@ -6,10 +6,9 @@ if [ "${DIB_DEBUG_TRACE:-0}" -gt 0 ]; then
set -x
fi
install-packages wget tar
install-packages tar
tmp_dir=/tmp/spark
mkdir -p $tmp_dir
pushd $tmp_dir
# The user is not providing his own Spark distribution package
@ -32,13 +31,6 @@ if [ -z "${SPARK_DOWNLOAD_URL:-}" ]; then
SPARK_DOWNLOAD_URL="http://archive.apache.org/dist/spark/spark-$DIB_SPARK_VERSION/spark-$DIB_SPARK_VERSION-bin-$SPARK_HADOOP_DL.tgz"
fi
echo "Downloading SPARK"
wget "$SPARK_DOWNLOAD_URL"
if [ $? -ne 0 ]; then
echo -e "Could not download spark.\nAborting"
exit 1
fi
echo "Extracting SPARK"
spark_file=$(basename "$SPARK_DOWNLOAD_URL")
extract_folder=$(tar tzf $spark_file | sed -e 's@/.*@@' | uniq)

View File

@ -0,0 +1,36 @@
#!/bin/bash
if [ "${DIB_DEBUG_TRACE:-0}" -gt 0 ]; then
set -x
fi
set -eu
set -o pipefail
tmp_dir=$TARGET_ROOT/tmp/spark
mkdir -p $tmp_dir
# The user is not providing his own Spark distribution package
if [ -z "${SPARK_DOWNLOAD_URL:-}" ]; then
# Check hadoop version
# INFO on hadoop versions: http://spark.apache.org/docs/latest/hadoop-third-party-distributions.html
if [ -z "${DIB_SPARK_VERSION:-}" ]; then
case "$DIB_HADOOP_VERSION" in
CDH4)
DIB_SPARK_VERSION=1.0.0
SPARK_HADOOP_DL=cdh4
;;
*)
echo -e "WARNING: Hadoop version $DIB_HADOOP_VERSION not supported."
echo -e "WARNING: make sure SPARK_DOWNLOAD_URL points to a compatible Spark version."
;;
esac
fi
SPARK_DOWNLOAD_URL="http://archive.apache.org/dist/spark/spark-$DIB_SPARK_VERSION/spark-$DIB_SPARK_VERSION-bin-$SPARK_HADOOP_DL.tgz"
fi
echo "Downloading SPARK"
spark_file=$(basename "$SPARK_DOWNLOAD_URL")
cached_tar="$DIB_IMAGE_CACHE/$spark_file"
$TMP_HOOKS_PATH/bin/cache-url $SPARK_DOWNLOAD_URL $cached_tar
sudo install -D -g root -o root -m 0755 $cached_tar $tmp_dir

View File

@ -1 +1,2 @@
cache-url
zookeeper

View File

@ -8,7 +8,7 @@ fi
install-packages wget unzip build-essential uuid-dev git libtool autoconf pkg-config tar
tmp_dir=/tmp
tmp_dir=/tmp/storm
echo "Creating Storm User"
groupadd -g 53001 storm
@ -17,8 +17,7 @@ useradd -u 53001 -g 53001 -d /app/home/storm -s /bin/bash storm -c "Storm servic
chmod 700 /app/home/storm
chage -I -1 -E -1 -m -1 -M -1 -W -1 -E -1 storm
cd $tmp_dir
echo "Downloading Storm"
echo "Extracting Storm"
# The user is not providing his own Spark distribution package
if [ -z "${STORM_DOWNLOAD_URL:-}" ]; then
# Check storm version
@ -34,11 +33,12 @@ if [ -z "${STORM_DOWNLOAD_URL:-}" ]; then
esac
fi
wget $STORM_DOWNLOAD_URL
storm_file=$(basename "$STORM_DOWNLOAD_URL")
cd /usr/local
tar -xvf /tmp/apache-storm-$DIB_STORM_VERSION-incubating.tar.gz
tar -xvf $tmp_dir/$storm_file
chown -R storm:storm apache-storm-$DIB_STORM_VERSION-incubating
ln -s apache-storm-$DIB_STORM_VERSION-incubating storm
rm -r $tmp_dir
echo "Configuring Storm home"

View File

@ -0,0 +1,33 @@
#!/bin/bash
# This script installs storm and its dependencies
# More documentation on the README.md file
if [ "${DIB_DEBUG_TRACE:-0}" -gt 0 ]; then
set -x
fi
set -eu
set -o pipefail
tmp_dir=$TARGET_ROOT/tmp/storm
mkdir -p $tmp_dir
echo "Downloading Storm"
# The user is not providing his own Spark distribution package
if [ -z "${STORM_DOWNLOAD_URL:-}" ]; then
# Check storm version
case "$DIB_STORM_VERSION" in
0.9.*)
STORM_DOWNLOAD_URL="http://archive.apache.org/dist/incubator/storm/apache-storm-$DIB_STORM_VERSION-incubating/apache-storm-$DIB_STORM_VERSION-incubating.tar.gz"
;;
*)
echo -e "WARNING: Storm version $DIB_STORM_VERSION not supported."
echo -e "WARNING: make sure STORM_DOWNLOAD_URL points to a compatible Storm version."
exit 1
;;
esac
fi
storm_file=$(basename "$STORM_DOWNLOAD_URL")
cached_tar="$DIB_IMAGE_CACHE/$storm_file"
$TMP_HOOKS_PATH/bin/cache-url $STORM_DOWNLOAD_URL $cached_tar
sudo install -D -g root -o root -m 0755 $cached_tar $tmp_dir