Storm is a free and open source distributed realtime computation sytem. It works with streams of data, equivalent for realtime processing as Hadoop with batch processing. It's used in realtime analytics, online machine learning and more. It's one of the fastest process engine, one million tuples processed per second per node. It relies on a master(Nimbus) /slave architecture.
In this tutorial you will learn how to easily deploy a Storm environment using ProActive Service Automation, then run some computation on it, and finally release this Storm environment.
1 Deploy Storm Instance
Register with your credentials that you provided
Go to Workflow Execution , Launch a Service.
Select service-automation in the bucket list.
Click on the Storm icon
You can leave the default-values or you can try to play
with options :
INSTANCE_NAME
The name of the service to be deployed
NUMBER_OF_SUPERVISORS
Number of supervisors or workers that will be deployed
You can check the box of advanced variables for more options:
PROXYFIED
True if a proxy is needed to protect the access to the service endpoint.
ZOOKEEPER_INSTANCE_NAME
Instance name of the targeted Zookeeper service .
ZOOKEEPER_SERVICE_ID
Instance ID of the targeted Zookeeper service.
When you have filled the needed fields you can click on submit.
Then you should see in the running services area a new line
with your Storm instance
Now you can click to the endpoint adress to access the UI and see
that instance is really deployed.
2 Run topology on your Storm instance
Connect to the ProActive Workflow Studio.
Create a new workflow
#Firstly you need to change your current repository and go to the one with the topology to run cd /home/activeeon/ #Retrieve the id of nimbus container (deployment relies on Docker) nimbus_container=$(docker ps -q -af name=nimbus) #Use the following link to download the storm-starter.jar. It contains a topology called 'exclamation' to be submitted to the deployed Storm cluster: https://repo1.maven.org/maven2/org/apache/storm/storm-starter/1.2.2/storm-starter-1.2.2.jar #Copy the topology to nimbus container docker cp storm-starter-1.2.2.jar $nimbus_container:storm-starter.jar
You need to add a second bash task which depends on the first one
#retrieve the id of nimbus container,for this you can reuse nimbus_container=$(docker ps -q -af name=nimbus) #execute the topology which has been copied docker exec $nimbus_container /bin/sh -c 'storm jar /storm-starter.jar org.apache.storm.starter.ExclamationTopology stormTutorial'Now, you can execute the workflow. As container_name, put the same thing as you put in instance_name when deploying Storm. When workflow executed, you can go the scheduler to verify that there is no faulty task, after this verificaton, you can access the StormUI and see that there is a topology running.
To delete the instance, you simply need to click on the finish button at
the end of the line of your running instance in the ProActive
Service Automation.
Then you can check on the StormUI to see that it is not running anymore.