Installation experience improvements
diff --git a/bin/install.sh b/bin/install.sh
index fc63efe..ac26b9e 100755
--- a/bin/install.sh
+++ b/bin/install.sh
@@ -10,7 +10,7 @@
OS=`uname`
PIO_VERSION=0.9.3
-SPARK_VERSION=1.3.0
+SPARK_VERSION=1.3.1
ELASTICSEARCH_VERSION=1.4.4
HBASE_VERSION=1.0.0
PIO_DIR=$HOME/PredictionIO
@@ -18,6 +18,10 @@
PIO_FILE=PredictionIO-${PIO_VERSION}.tar.gz
TEMP_DIR=/tmp
+PGSQL="PostgreSQL"
+MYSQL="MySQL"
+ES_HB="Elasticsearch + HBase"
+
# Ask a yes/no question, with a default of "yes".
confirm () {
echo -ne $@ "[Y/n] "
@@ -95,6 +99,7 @@
echo -e "\033[1;33mForcing defaults!\033[0m"
pio_dir=${PIO_DIR}
vendors_dir=${pio_dir}/vendors
+ source_setup=${ES_HB}
spark_dir=${vendors_dir}/spark-${SPARK_VERSION}
elasticsearch_dir=${vendors_dir}/elasticsearch-${ELASTICSEARCH_VERSION}
@@ -116,15 +121,13 @@
# todo: make java installation platform independent
sudo apt-get update
- sudo apt-get install openjdk-7-jdk libgfortran3 -y
+ sudo apt-get install openjdk-7-jdk libgfortran3 python-pip -y
+ sudo pip install predictionio
echo -e "\033[1;32mJava install done!\033[0m"
JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")
else
- PGSQL="PostgreSQL"
- MYSQL="MySQL"
- ES_HB="Elasticsearch + HBase"
# Interactive
while true; do
echo -e "\033[1mWhere would you like to install PredictionIO?\033[0m"
@@ -201,32 +204,45 @@
fi
done
+ distro=""
+ echo -e "\033[1mSelect your linux distribution:\033[0m"
+ select distribution in "Debian/Ubuntu" "Other"; do
+ case ${distribution} in
+ "Debian/Ubuntu")
+ distro="debian"
+ break
+ ;;
+ *)
+ ;;
+ esac
+ done
+
+
# Java Install
if [[ ${OS} = "Linux" ]] && confirm "\033[1mWould you like to install Java?\033[0m"; then
- echo -e "\033[1mSelect your linux distribution:\033[0m"
- select distribution in "Debian/Ubuntu" "Other"; do
- case ${distribution} in
- "Debian/Ubuntu")
- echo -e "\033[1;36mStarting Java install...\033[0m"
+ case ${distro} in
+ "Debian/Ubuntu")
+ distro="debian"
+ echo -e "\033[1;36mStarting Java install...\033[0m"
- echo -e "\033[33mThis script requires superuser access!\033[0m"
- echo -e "\033[33mYou will be prompted for your password by sudo:\033[0m"
+ echo -e "\033[33mThis script requires superuser access!\033[0m"
+ echo -e "\033[33mYou will be prompted for your password by sudo:\033[0m"
- sudo apt-get update
- sudo apt-get install openjdk-7-jdk libgfortran3 -y
+ sudo apt-get update
+ sudo apt-get install openjdk-7-jdk libgfortran3 python-pip -y
+ sudo pip install predictionio
- echo -e "\033[1;32mJava install done!\033[0m"
- break
- ;;
- "Other")
- echo -e "\033[1;31mYour disribution not yet supported for automatic install :(\033[0m"
- echo -e "\033[1;31mPlease install Java manually!\033[0m"
- exit 2
- ;;
- *)
- ;;
- esac
- done
+ echo -e "\033[1;32mJava install done!\033[0m"
+ break
+ ;;
+ "Other")
+ echo -e "\033[1;31mYour disribution not yet supported for automatic install :(\033[0m"
+ echo -e "\033[1;31mPlease install Java manually!\033[0m"
+ exit 2
+ ;;
+ *)
+ ;;
+ esac
fi
# Try to find JAVA_HOME
@@ -285,67 +301,56 @@
# Spark
echo -e "\033[1;36mStarting Spark setup in:\033[0m $spark_dir"
-if [[ -e spark-${SPARK_VERSION}-bin-hadoop2.4.tgz ]]; then
- if confirm "Delete existing spark-$SPARK_VERSION-bin-hadoop2.4.tgz?"; then
- rm spark-${SPARK_VERSION}-bin-hadoop2.4.tgz
+if [[ -e spark-${SPARK_VERSION}-bin-hadoop2.6.tgz ]]; then
+ if confirm "Delete existing spark-$SPARK_VERSION-bin-hadoop2.6.tgz?"; then
+ rm spark-${SPARK_VERSION}-bin-hadoop2.6.tgz
fi
fi
-if [[ ! -e spark-${SPARK_VERSION}-bin-hadoop2.4.tgz ]]; then
+if [[ ! -e spark-${SPARK_VERSION}-bin-hadoop2.6.tgz ]]; then
echo "Downloading Spark..."
- curl -O http://d3kbcqa49mib13.cloudfront.net/spark-${SPARK_VERSION}-bin-hadoop2.4.tgz
+ curl -O http://d3kbcqa49mib13.cloudfront.net/spark-${SPARK_VERSION}-bin-hadoop2.6.tgz
fi
-tar xf spark-${SPARK_VERSION}-bin-hadoop2.4.tgz
+tar xf spark-${SPARK_VERSION}-bin-hadoop2.6.tgz
rm -rf ${spark_dir}
-mv spark-${SPARK_VERSION}-bin-hadoop2.4 ${spark_dir}
+mv spark-${SPARK_VERSION}-bin-hadoop2.6 ${spark_dir}
echo "Updating: $pio_dir/conf/pio-env.sh"
${SED_CMD} "s|SPARK_HOME=.*|SPARK_HOME=$spark_dir|g" ${pio_dir}/conf/pio-env.sh
echo -e "\033[1;32mSpark setup done!\033[0m"
-
case $source_setup in
"$PGSQL")
- echo "Installing PostgreSQL"
- sudo apt-get install postgresql -y
-
- echo "Updating: $pio_dir/conf/pio-env.sh"
- ${SED_CMD} "s|PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH|PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL|" ${pio_dir}/conf/pio-env.sh
- ${SED_CMD} "s|PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS|PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL|" ${pio_dir}/conf/pio-env.sh
- ${SED_CMD} "s|PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE|PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL|" ${pio_dir}/conf/pio-env.sh
-
- ${SED_CMD} "s|HBASE_CONF_DIR=\$PIO_HOME/conf|# HBASE_CONF_DIR=\$PIO_HOME/conf|" ${pio_dir}/conf/pio-env.sh
- ${SED_CMD} "s|PIO_STORAGE_SOURCES_ELASTICSEARCH|# PIO_STORAGE_SOURCES_ELASTICSEARCH|" ${pio_dir}/conf/pio-env.sh
- ${SED_CMD} "s|PIO_STORAGE_SOURCES_LOCALFS|# PIO_STORAGE_SOURCES_LOCALFS|" ${pio_dir}/conf/pio-env.sh
- ${SED_CMD} "s|PIO_STORAGE_SOURCES_HBASE|# PIO_STORAGE_SOURCES_HBASE|" ${pio_dir}/conf/pio-env.sh
-
- echo "PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc" >> ${pio_dir}/conf/pio-env.sh
- echo "PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql:predictionio" >> ${pio_dir}/conf/pio-env.sh
- echo "PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio" >> ${pio_dir}/conf/pio-env.sh
- echo "PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio" >> ${pio_dir}/conf/pio-env.sh
-
- break
+ if [[ ${distro} = "debian" ]]; then
+ echo -e "\033[1;36mInstalling PostgreSQL...\033[0m"
+ sudo apt-get install postgresql -y
+ echo -e "\033[1;36mPlease use the default password 'pio' when prompted to enter one\033[0m"
+ sudo -u postgres createdb pio
+ sudo -u postgres createuser -P pio
+ echo -e "\033[1;36mPlease update $pio_dir/conf/pio-env.sh if you did not enter the default password\033[0m"
+ else
+ echo -e "\033[1;31mYour disribution not yet supported for automatic install :(\033[0m"
+ echo -e "\033[1;31mPlease install PostgreSQL manually!\033[0m"
+ exit 3
+ fi
;;
"$MYSQL")
- echo "Installing MySQL"
- sudo apt-get install mysql-server -y
-
- echo "Updating: $pio_dir/conf/pio-env.sh"
- ${SED_CMD} "s|PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH|PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=MYSQL|" ${pio_dir}/conf/pio-env.sh
- ${SED_CMD} "s|PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS|PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=MYSQL|" ${pio_dir}/conf/pio-env.sh
- ${SED_CMD} "s|PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE|PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=MYSQL|" ${pio_dir}/conf/pio-env.sh
-
- ${SED_CMD} "s|HBASE_CONF_DIR=\$PIO_HOME/conf|# HBASE_CONF_DIR=\$PIO_HOME/conf|" ${pio_dir}/conf/pio-env.sh
- ${SED_CMD} "s|PIO_STORAGE_SOURCES_ELASTICSEARCH|# PIO_STORAGE_SOURCES_ELASTICSEARCH|" ${pio_dir}/conf/pio-env.sh
- ${SED_CMD} "s|PIO_STORAGE_SOURCES_LOCALFS|# PIO_STORAGE_SOURCES_LOCALFS|" ${pio_dir}/conf/pio-env.sh
- ${SED_CMD} "s|PIO_STORAGE_SOURCES_HBASE|# PIO_STORAGE_SOURCES_HBASE|" ${pio_dir}/conf/pio-env.sh
-
- echo "PIO_STORAGE_SOURCES_MYSQL_TYPE=jdbc" >> ${pio_dir}/conf/pio-env.sh
- echo "PIO_STORAGE_SOURCES_MYSQL_URL=jdbc:mysql:predictionio" >> ${pio_dir}/conf/pio-env.sh
- echo "PIO_STORAGE_SOURCES_MYSQL_USERNAME=pio" >> ${pio_dir}/conf/pio-env.sh
- echo "PIO_STORAGE_SOURCES_MYSQL_PASSWORD=pio" >> ${pio_dir}/conf/pio-env.sh
-
- break
+ if [[ ${distro} = "debian" ]]; then
+ echo -e "\033[1;36mInstalling MySQL...\033[0m"
+ echo -e "\033[1;36mPlease update $pio_dir/conf/pio-env.sh with your database configuration\033[0m"
+ sudo apt-get install mysql-server -y
+ sudo mysql -e "create database pio; grant all on pio.* to pio@localhost identified by 'pio'"
+ echo -e "\033[1;36mUpdating: $pio_dir/conf/pio-env.sh\033[0m"
+ ${SED_CMD} "s|PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL|PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=MYSQL|" ${pio_dir}/conf/pio-env.sh
+ ${SED_CMD} "s|PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL|PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=MYSQL|" ${pio_dir}/conf/pio-env.sh
+ ${SED_CMD} "s|PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL|PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=MYSQL|" ${pio_dir}/conf/pio-env.sh
+ ${SED_CMD} "s|PIO_STORAGE_SOURCES_PGSQL|# PIO_STORAGE_SOURCES_PGSQL|" ${pio_dir}/conf/pio-env.sh
+ ${SED_CMD} "s|# PIO_STORAGE_SOURCES_MYSQL|PIO_STORAGE_SOURCES_MYSQL|" ${pio_dir}/conf/pio-env.sh
+ else
+ echo -e "\033[1;31mYour disribution not yet supported for automatic install :(\033[0m"
+ echo -e "\033[1;31mPlease install MySQL manually!\033[0m"
+ exit 4
+ fi
;;
"$ES_HB")
# Elasticsearch
@@ -367,7 +372,13 @@
echo 'network.host: 127.0.0.1' >> ${elasticsearch_dir}/config/elasticsearch.yml
echo "Updating: $pio_dir/conf/pio-env.sh"
- echo "PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=$elasticsearch_dir" >> ${pio_dir}/conf/pio-env.sh
+ ${SED_CMD} "s|PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL|PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH|" ${pio_dir}/conf/pio-env.sh
+ ${SED_CMD} "s|PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL|PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS|" ${pio_dir}/conf/pio-env.sh
+ ${SED_CMD} "s|PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL|PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE|" ${pio_dir}/conf/pio-env.sh
+ ${SED_CMD} "s|PIO_STORAGE_SOURCES_PGSQL|# PIO_STORAGE_SOURCES_PGSQL|" ${pio_dir}/conf/pio-env.sh
+ ${SED_CMD} "s|# PIO_STORAGE_SOURCES_LOCALFS|PIO_STORAGE_SOURCES_LOCALFS|" ${pio_dir}/conf/pio-env.sh
+ ${SED_CMD} "s|# PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE|PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE|" ${pio_dir}/conf/pio-env.sh
+ ${SED_CMD} "s|# PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=.*|PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=$elasticsearch_dir|" ${pio_dir}/conf/pio-env.sh
echo -e "\033[1;32mElasticsearch setup done!\033[0m"
@@ -404,12 +415,12 @@
${SED_CMD} "s|# export JAVA_HOME=/usr/java/jdk1.6.0/|export JAVA_HOME=$JAVA_HOME|" ${hbase_dir}/conf/hbase-env.sh
echo "Updating: $pio_dir/conf/pio-env.sh"
- echo "PIO_STORAGE_SOURCES_HBASE_HOME=$hbase_dir" >> ${pio_dir}/conf/pio-env.sh
- ${SED_CMD} "s|HBASE_CONF_DIR=\$PIO_HOME/conf|HBASE_CONF_DIR=$hbase_dir/conf|" ${pio_dir}/conf/pio-env.sh
+ ${SED_CMD} "s|# PIO_STORAGE_SOURCES_HBASE|PIO_STORAGE_SOURCES_HBASE|" ${pio_dir}/conf/pio-env.sh
+ ${SED_CMD} "s|PIO_STORAGE_SOURCES_HBASE_HOME=.*|PIO_STORAGE_SOURCES_HBASE_HOME=$hbase_dir|" ${pio_dir}/conf/pio-env.sh
+ ${SED_CMD} "s|# HBASE_CONF_DIR=.*|HBASE_CONF_DIR=$hbase_dir/conf|" ${pio_dir}/conf/pio-env.sh
echo -e "\033[1;32mHBase setup done!\033[0m"
- break
;;
esac
@@ -438,10 +449,16 @@
echo -e "\033[1;32mPlease follow documentation at http://docs.prediction.io/start/download/ to download the engine template based on your needs\033[0m"
echo -e
echo -e "\033[1;33mCommand Line Usage Notes:\033[0m"
-echo -e "To start PredictionIO and dependencies, run: '\033[1mpio-start-all\033[0m'"
+if [[ ${source_setup} = $ES_HB ]]; then
+ echo -e "To start PredictionIO and dependencies, run: '\033[1mpio-start-all\033[0m'"
+else
+ echo -e "To start PredictionIO Event Server in the background, run: '\033[1mpio eventserver &\033[0m'"
+fi
echo -e "To check the PredictionIO status, run: '\033[1mpio status\033[0m'"
echo -e "To train/deploy engine, run: '\033[1mpio [train|deploy|...]\033[0m' commands"
-echo -e "To stop PredictionIO and dependencies, run: '\033[1mpio-stop-all\033[0m'"
+if [[ ${source_setup} = $ES_HB ]]; then
+ echo -e "To stop PredictionIO and dependencies, run: '\033[1mpio-stop-all\033[0m'"
+fi
echo -e ""
echo -e "Please report any problems to: \033[1;34msupport@prediction.io\033[0m"
echo "--------------------------------------------------------------------------------"