I would recommend to write a (bash) script.

Personally, I use the following assembly of scripts to start/stop a cluster:

The two main scripts are "start-storm.sh" and "stop-storm.sh". All other
are just helpers.


-Matthias

cat start-storm.sh
> #!/bin/bash
> 
> tools=/home/tools
> 
> # check if <storm.yaml> and <stormnodes> exist
> if [ ! -f $HOME/storm.yaml ]
> then
>   echo "ERROR: <storm.yaml> not found in HOME directroy"
>   exit -1
> fi
> 
> if [ ! -f $HOME/stormnodes ]
> then
>   echo "ERROR: <stormnodes> not found in HOME directroy"
>   exit -1
> fi
> 
> if [ $# -lt 1 ]
> then                                                                          
>                                                                               
>                                                                               
>                                      
>   echo "ERROR: missing parameter <version>"                                   
>                                                                               
>                                                                               
>                                      
>   exit -1                                                                     
>                                                                               
>                                                                               
>                                      
> fi                                                                            
>                                                                               
>                                                                               
>                                      
>                                                                               
>                                                                               
>                                                                               
>                                      
> if [ $1 -eq "7" ]                                                             
>                                                                               
>                                                                               
>                                      
> then                                                                          
>                                                                               
>                                                                               
>                                      
>   VERSION=0.7.0                                                               
>                                                                               
>                                                                               
>                                      
> elif [ $1 -eq "8" ]                                                           
>                                                                               
>                                                                               
>                                      
> then                                                                          
>                                                                               
>                                                                               
>                                      
>   VERSION=0.8.2                                                               
>                                                                               
>                                                                               
>                                      
> elif [ $1 -eq "9" ]                                                           
>                                                                               
>                                                                               
>                                      
> then                                                                          
>                                                                               
>                                                                               
>                                      
>   VERSION=0.9.3                                                               
>                                                                               
>                                                                               
>                                      
> else                                                                          
>                                                                               
>                                                                               
>                                      
>   echo "ERROR: unknow version number"                                         
>                                                                               
>                                                                               
>                                      
>   echo "valid parameter values: 7, 8, 9"                                      
>                                                                               
>                                                                               
>                                      
>   exit -1                                                                     
>                                                                               
>                                                                               
>                                      
> fi                                                                            
>                                                                               
>                                                                               
>                                      
>                                                                               
>                                                                               
>                                                                               
>                                      
> echo "Switching to Storm $VERSION"                                            
>                                                                               
>                                                                               
>                                      
> switch-storm.sh $1                                                            
>                                                                               
>                                                                               
>                                      
>                                                                               
>                                                                               
>                                                                               
>                                      
> echo "Starting Zookeeper..."                                                  
>                                                                               
>                                                                               
>                                      
> # step into zookeeper directory because <zookeeper.out> will be written 
> locally                                                                       
>                                                                               
>                                            
> cd /var/zookeeper/ && /opt/zookeeper/bin/zkServer.sh start                    
>                                                                               
>                                                                               
>                                      
>                                                                               
>                                                                               
>                                                                               
>                                      
> echo "Distributing storm.yaml"                                                
>                                                                               
>                                                                               
>                                      
> # need to step into $HOME, because remote target dir of cpAll is current 
> local dir                                                                     
>                                                                               
>                                           
> cd $HOME && $tools/cpAll storm.yaml $HOME/stormnodes                          
>                                                                               
>                                                                               
>                                      
> $tools/exeAll -l "rm -f /opt/storm/conf/storm.yaml; ln -s $HOME/storm.yaml 
> /opt/storm/conf/storm.yaml" $HOME/stormnodes                                  
>                                                                               
>                                         
>                                                                               
>                                                                               
>                                                                               
>                                      
> echo "Starting Nimbus..."                                                     
>                                                                               
>                                                                               
>                                      
> /opt/storm/bin/storm nimbus &                                                 
>                                                                               
>                                                                               
>                                      
>                                                                               
>                                                                               
>                                                                               
>                                      
> sleep 15                                                                      
>                                                                               
>                                                                               
>                                      
>                                                                               
>                                                                               
>                                                                               
>                                      
> echo "Starting Supervisors..."                                                
>                                                                               
>                                                                               
>                                      
> for node in `cat $HOME/stormnodes`
> do
>   echo "  at $node"
>   ssh $node "nohup /opt/storm/bin/storm supervisor &" &
> done
> 
> echo "Starting Storm UI..."
> /opt/storm/bin/storm ui &


cat stop-storm.sh
> #!/bin/bash
> 
> tools=/home/tools
> 
> # check if <stormnods> exists
> if [ ! -f $HOME/stormnodes ]
> then
>   echo "ERROR: <stormnodes> not found in HOME directroy"
>   exit -1
> fi
> 
> 
> 
> echo "Stopping Strom UI..."
> kill `ps -ef | grep backtype.storm.ui.core | grep -v grep | sed 's/  */ /g' | 
> cut -d' ' -f 2`
> 
> echo "Stopping Supervisors"
> for node in `cat $HOME/stormnodes`
> do
>   echo "  at $node"
>   ssh $node "kill \`ps -ef | grep backtype.storm.daemon.supervisor | grep -v 
> grep | sed 's/  */ /g' | cut -d' ' -f 2\`"
> done
> 
> echo "Stopping Nimbus..."
> kill `ps -ef | grep backtype.storm.daemon.nimbus | grep -v grep | sed 's/  */ 
> /g' | cut -d' ' -f 2`
> 
> echo "Stopping Zookeeper..."
> /opt/zookeeper/bin/zkServer.sh stop
> 
> echo "Cleaning working and logging directories..."
> $tools/exeAll -l "rm -rf /var/storm/*" $HOME/stormnodes
> $tools/exeAll -l "rm -rf /opt/storm/logs/*" $HOME/stormnodes
> rm -rf /var/zookeeper/*


cat exeAll
> #!/bin/bash
> 
> param=$1
> rc=0
> 
> if [ $# -lt 1 ]
> then
>   echo "ERROR: exeAll expects paremters"
>   param="-h"
>   rc=1
> fi
> 
> if [ "$param" = "-h" ]
> then
>   echo "usage: exeAll ([-l] <command> [<nodefile>]) | -h"
>   echo " -l: execute command locally"
>   echo " <command>: the command to be executed"
>   echo " <nodefile>: file containing name of nodes to run command"
>   echo " -h: displays this help"
>   exit $rc
> fi
> 
> command=$1
> nodefile=/home/tools/nodes
> 
> if [ $# -gt 1 ] # there are optinal parameters
> then
>   if [ "$1" = "-l" ] # parameters: -l <command> [<nodefile>]
>   then
>     command=$2
>     if [ $# -gt 2 ] # parameter <nodefile> present
>     then
>       nodefile=$3
>     fi
>     
>     echo "locally: $command"
>     # execute command locally
>     eval $command
>   else # parameters: <command> <nodefile>
>       nodefile=$2
>   fi
> fi
> 
> if [ ! -f $nodefile ]
> then
>   echo "ERROR: nodefile '$nodefile' not found."
>   exit 1
> fi
> 
> # execute command remotely
> path=`pwd`
> for node in `cat $nodefile`
> do
>   if [ $node = $HOSTNAME ]
>   then
>     continue
>   fi
> 
>   echo "$node: $command"
>   ssh $node "cd $path && $command"
> done


cat switch-storm.sh
> #!/bin/bash
> 
> tools=/home/tools
> 
> if [ ! -f $HOME/stormnodes ]
> then
>   echo "ERROR: <stormnodes> not found in HOME directroy"
>   exit -1
> fi
> 
> $tools/exeAll -l "sudo sst '$@'" $HOME/stormnodes


cat sst
> #!/bin/bash
> 
> if [ $# -lt 1 ]
> then
>   echo "ERROR: missing parameter <version>"
>   exit -1
> fi
> 
> if [ $1 -eq "7" ]
> then
>   VERSION=0.7.0
> elif [ $1 -eq "8" ]
> then
>   VERSION=0.8.2
> elif [ $1 -eq "9" ]
> then
>   VERSION=0.9.3
> else
>   echo "ERROR: unknow version number"
>   echo "valid parameter values: 7, 8, 9"
>   exit -1
> fi
> 
> cd /opt
> rm storm
> ln -s storm-$VERSION storm

cat cpAll
> #!/bin/bash
> 
> param=$1
> rc=0
> 
> if [ $# -lt 1 ]
> then
>   echo "ERROR: cpAll expects paremters"
>   param="-h"
>   rc=1
> fi
> 
> if [ "$param" = "-h" ]
> then
>   echo "usage: cpAll (<filelist> [<nodefile>]) | -h"
>   echo " <filelist>: list of files to be copied"
>   echo " <nodefile>: file containing name of nodes to run command"
>   echo " -h: displays this help"
>   exit $rc
> fi
> 
> files=$1
> nodefile=/home/tools/nodes
> 
> if [ $# -gt 1 ] # there are optinal parameters
> then
>   nodefile=$2
> fi
> 
> if [ ! -f $nodefile ]
> then
>   echo "ERROR: nodefile '$nodefile' not found."
>   exit 1
> fi
> 
> # copy files
> path=`pwd`
> for node in `cat $nodefile`
> do
>   if [ $node = $HOSTNAME ]
>   then
>     continue
>   fi
> 
>   echo "$node:"
>   scp $files "$node:$path"
> done



On 10/16/2015 10:10 AM, Ankur Garg wrote:
> Hi ,
> 
> I have a single node storm cluster set up . Currently to start storm
> nimbus and supervisors daemons , I use storm nimbus and storm supervisor
> commands.
> 
> 
> To Stop it , currently I am doing kill -9 to kill those processes
> manually . 
> 
> Is there something I can use to restart cluster with one single command.
> 
> Thanks
> Ankur

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to