| #!/bin/sh |
| # |
| # Copyright 2014 TappingStone, Inc. |
| # |
| # This script will install PredictionIO onto your computer! |
| # |
| # Documentation: http://docs.prediction.io |
| # |
| # License: http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # |
| |
| INSTALL_DIR=/home/$USER |
| TEMP_DIR=/tmp |
| PIO_VERSION=0.8.4 |
| PIO_DIR=$INSTALL_DIR/PredictionIO |
| PIO_FILE=PredictionIO-$PIO_VERSION.tar.gz |
| VENDORS_DIR=$PIO_DIR/vendors |
| SPARK_DIR=$VENDORS_DIR/spark-1.1.0 |
| ELASTICSEARCH_DIR=$VENDORS_DIR/elasticsearch-1.3.2 |
| HBASE_DIR=$VENDORS_DIR/hbase-0.98.6 |
| ZOOKEEPER_DIR=$VENDORS_DIR/zookeeper |
| |
| echo "This script requires superuser access." |
| echo "You will be prompted for your password by sudo." |
| |
| # Java |
| echo "Starting Java install..." |
| sudo apt-get install openjdk-7-jdk -y |
| |
| JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") |
| |
| echo "JAVA_HOME is now set to: $JAVA_HOME" |
| echo "Java install done!" |
| |
| # PredictionIO |
| echo "Starting PredictionIO setup in: $PIO_DIR" |
| cd $TEMP_DIR |
| if [ ! -e $PIO_FILE ]; then |
| echo "Downloading PredictionIO..." |
| wget http://download.prediction.io/$PIO_FILE |
| fi |
| tar zxf $PIO_FILE |
| rm -rf $PIO_DIR |
| mv PredictionIO-$PIO_VERSION $PIO_DIR |
| |
| chown -R $USER:$USER $PIO_DIR |
| |
| echo "Updating ~/.profile to include: $PIO_DIR" |
| PATH=$PATH:$PIO_DIR/bin |
| echo "export PATH=\$PATH:$PIO_DIR/bin" >> /home/$USER/.profile |
| |
| echo "PredictionIO setup done!" |
| |
| mkdir $VENDORS_DIR |
| |
| # Spark |
| echo "Starting Spark setup in: $SPARK_DIR" |
| if [ ! -e spark-1.1.0-bin-hadoop2.4.tgz ]; then |
| echo "Downloading Spark..." |
| wget http://d3kbcqa49mib13.cloudfront.net/spark-1.1.0-bin-hadoop2.4.tgz |
| fi |
| tar xf spark-1.1.0-bin-hadoop2.4.tgz |
| rm -rf $SPARK_DIR |
| mv spark-1.1.0-bin-hadoop2.4 $SPARK_DIR |
| |
| echo "Updating: $PIO_DIR/conf/pio-env.sh" |
| sed -i "s|SPARK_HOME=/path_to_apache_spark|SPARK_HOME=$SPARK_DIR|g" $PIO_DIR/conf/pio-env.sh |
| |
| echo "Spark setup done!" |
| |
| # Elasticsearch |
| echo "Starting Elasticsearch setup in $ELASTICSEARCH_DIR" |
| if [ ! -e elasticsearch-1.3.2.tar.gz ]; then |
| echo "Downloading Elasticsearch..." |
| wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.3.2.tar.gz |
| fi |
| tar zxf elasticsearch-1.3.2.tar.gz |
| rm -rf $ELASTICSEARCH_DIR |
| mv elasticsearch-1.3.2 $ELASTICSEARCH_DIR |
| |
| |
| echo "Updating: $ELASTICSEARCH_DIR/config/elasticsearch.yml" |
| echo 'network.host: 127.0.0.1' >> $ELASTICSEARCH_DIR/config/elasticsearch.yml |
| |
| echo "Elasticsearch setup done!" |
| |
| # HBase |
| echo "Starting HBase setup in $HBASE_DIR" |
| if [ ! -e hbase-0.98.6-hadoop2-bin.tar.gz ]; then |
| echo "Downloading HBase..." |
| wget http://archive.apache.org/dist/hbase/hbase-0.98.6/hbase-0.98.6-hadoop2-bin.tar.gz |
| fi |
| tar zxf hbase-0.98.6-hadoop2-bin.tar.gz |
| rm -rf $HBASE_DIR |
| mv hbase-0.98.6-hadoop2 $HBASE_DIR |
| |
| echo "Creating default site in: $HBASE_DIR/conf/hbase-site.xml" |
| cat <<EOT > $HBASE_DIR/conf/hbase-site.xml |
| <configuration> |
| <property> |
| <name>hbase.rootdir</name> |
| <value>file://$HBASE_DIR</value> |
| </property> |
| <property> |
| <name>hbase.zookeeper.property.dataDir</name> |
| <value>$ZOOKEEPER_DIR</value> |
| </property> |
| </configuration> |
| EOT |
| |
| echo "Updating: $HBASE_DIR/conf/hbase-env.sh to include $JAVA_HOME" |
| sed -i "s|# export JAVA_HOME=/usr/java/jdk1.6.0/|export JAVA_HOME=$JAVA_HOME|" $HBASE_DIR/conf/hbase-env.sh |
| |
| echo "HBase setup done!" |
| |
| echo "Updating permissions on: $VENDORS_DIR" |
| |
| chown -R $USER:$USER $VENDORS_DIR |
| |
| echo "Starting Elasticserach and HBase!" |
| |
| $ELASTICSEARCH_DIR/bin/elasticsearch -d |
| $HBASE_DIR/bin/start-hbase.sh |
| |
| echo "Installation completed!" |
| echo "################################################################################" |
| echo "IMPORTANT: You still have to start the eventserver manually:" |
| echo "Run 'pio eventserver --ip 0.0.0.0'" |
| echo "Check the eventserver status with 'curl -i -X GET http://localhost:7070'" |
| echo "Use 'pio [train|deploy|...] commands" |
| echo "Please report any problems to support@prediction.io" |
| echo "Documentation at http://docs.prediction.io" |
| echo "################################################################################" |