In this homework, we'll be re-creating the functionality of Homework 4 (Accumulo + WebApp) using a Storm topology and Redis. This will provide a more real-time experience and make the app a little more interesting. You'll need to re-use your Avro schema as well as your Kafka producer. Make sure HDFS, ZooKeeper, Kafka, and Storm are running.
This homework (and all future homeworks) will require heavy internet searching and reading! Use of these tools is best learnt by trial and error, so hit up the Googles.
# Open a terminal and download the tarball [shadam1@cmsc491 ~]$ wget http://www.csee.umbc.edu/~shadam1/491s16/resources/hw5/apache-storm-1.0.0-for-vm.tar.gz # Move it to /opt and change your working directory [shadam1@cmsc491 ~]$ sudo mv apache-storm-1.0.0-for-vm.tar.gz /opt [shadam1@cmsc491 ~]$ cd /opt/ # Unpack the tarball [shadam1@cmsc491 opt]$ sudo tar -xf apache-storm-1.0.0-for-vm.tar.gz # Change ownership to your user (use your GL ID instead of shadam1) [shadam1@cmsc491 opt]$ sudo chown -R shadam1:shadam1 apache-storm-1.0.0 # Create softlink from the real folder to /opt/storm [shadam1@cmsc491 opt]$ sudo ln -s /opt/apache-storm-1.0.0 /opt/storm # Create the data directory and give yourself ownership [shadam1@cmsc491 opt]$ sudo mkdir -p /data1/storm [shadam1@cmsc491 opt]$ sudo chown -R shadam1:shadam1 /data1/storm # Change back to the home directory [shadam1@cmsc491 opt]$ cd # Modify the contents of ~/.bashrc to add the STORM_HOME environment # variable and add the $STORM_HOME/bin folder to $PATH [shadam1@cmsc491 ~]$ vi .bashrc # make changes using whatever text editor you want [shadam1@cmsc491 ~]$ cat .bashrc # omitted lines export ACCUMULO_HOME=/opt/accumulo export STORM_HOME=/opt/storm export PATH=$HADOOP_PREFIX/bin:$M2_HOME/bin:$KAFKA_HOME/bin:$PIG_HOME/bin:$SPARK_HOME/bin:$JAVA_HOME/bin:$ACCUMULO_HOME/bin:$PATH export PATH=$STORM_HOME/bin:$PATH # Source our changes for this window (this is done for you when you open a new terminal tab/window) [shadam1@cmsc491 ~]$ source .bashrc # Start Kafka and ZooKeeper if you have not done so already [shadam1@cmsc491 ~]$ ~/scripts/start_kafka.sh # Start the Storm processes, ONE PER TAB. These processes will hang indefinitely. Whenever you need to start Storm, open a terminal with three tabs and type the below: [shadam1@cmsc491 ~]$ storm nimbus [shadam1@cmsc491 ~]$ storm supervisor [shadam1@cmsc491 ~]$ storm ui
# Download the pre-configured redis tarball [shadam1@cmsc491 ~]$ wget http://www.csee.umbc.edu/~shadam1/491s16/resources/hw5/redis-stable-for-vm.tar.gz # Move and unpack Redis unde r/opt, changing permissions and creating the softlink [shadam1@cmsc491 ~]$ sudo mv redis-stable-for-vm.tar.gz /opt [shadam1@cmsc491 ~]$ cd /opt/ [shadam1@cmsc491 opt]$ sudo tar -xf redis-stable-for-vm.tar.gz [shadam1@cmsc491 opt]$ sudo chown -R shadam1:shadam1 redis-stable [shadam1@cmsc491 opt]$ sudo ln -s /opt/redis-stable /opt/redis # Create Redis data directory [shadam1@cmsc491 opt]$ sudo mkdir -p /data1/redis [shadam1@cmsc491 opt]$ sudo chown shadam1:shadam1 /data1/redis # Make log directory [shadam1@cmsc491 redis]$ mkdir -p /opt/redis/logs # Start Redis [shadam1@cmsc491 redis]$ /opt/redis/src/redis-server /opt/redis/redis.conf # Create REDIS_HOME variable in .bashrc and add it to $PATH # NOTE we are adding the $REDIS_HOME/src directory, NOT the $REDIS_HOME/bin directory (which does not exist) [shadam1@cmsc491 ~]$ vi .bashrc # use your preferred text editor [shadam1@cmsc491 ~]$ cat .bashrc # ... omitted... export STORM_HOME=/opt/storm export REDIS_HOME=/opt/redis export PATH=$HADOOP_PREFIX/bin:$M2_HOME/bin:$KAFKA_HOME/bin:$PIG_HOME/bin:$SPARK_HOME/bin:$JAVA_HOME/bin:$ACCUMULO_HOME/bin:$PATH export PATH=$STORM_HOME/bin:$PATH export PATH=$REDIS_HOME/src:$PATH # Source it [shadam1@cmsc491 ~]$ source .bashrc
[shadam1@cmsc491 ~]$ redis-cli 127.0.0.1:6379> SET foo bar OK 127.0.0.1:6379> GET foo "bar" 127.0.0.1:6379> DEL foo (integer) 1 127.0.0.1:6379>
[shadam1@cmsc491 ~]$ wget http://www.csee.umbc.edu/~shadam1/491s16/resources/hw5/twitter-storm.tar.gz [shadam1@cmsc491 ~]$ tar -xf twitter-storm.tar.gz
[shadam1@cmsc491 storm]$ mvn clean package [shadam1@cmsc491 storm]$ storm jar target/storm-0.0.1.jar com.adamjshook.demo.storm.Driver tweettop
[shadam1@cmsc491 storm]$ storm kill tweettop
[shadam1@cmsc491 storm]$ mvn clean package [shadam1@cmsc491 storm]$ java -jar target/storm-webapp-1.0.0.jar
[shadam1@491vm ~]$ cd shadam1-gitrepo [shadam1@491vm ~]$ git pull [shadam1@491vm shadam1-gitrepo]$ mkdir hw5 [shadam1@491vm shadam1-gitrepo]$ git add hw5 [shadam1@491vm shadam1-gitrepo]$ cd hw5 [shadam1@491vm hw5]$ # copy files [shadam1@491vm hw5]$ # Locate and delete any target directories! They are too big! [shadam1@491vm hw5]$ tar -zcvf hw5.tar.gz * [shadam1@491vm hw5]$ git add hw5.tar.gz [shadam1@491vm hw5]$ git commit -m "Homework 5 submission" [shadam1@491vm hw5]$ git push
Any of the following items will cause significant point loss. Any item below with an asterisk (*) will give that submission a 0.