One of my blogs
here, describes steps for manual installation of a Storm cluster. To intensify
the convenience factor for you, here's an installation script that you can use
for setting up a Storm cluster on Linux machines. Although the script should
work for older versions of Apache Storm, it has been tested for
storm-0.9.0-wip4. The script has embedded descriptive messages for each input
it expects from you. The installation would be done in the '/opt' folder of the
machines in a sub-directory of your choice. Make sure the user installing the
cluster has admin rights on the /opt folder. The script also takes care of
installing all the required dependencies. To use the script for versions other
than the supported one, you need to make changes to the script and replace the
"storm-0.9.0-wip4" occurrence with your storm version.
#!/bin/bash
# Local FS Setups
location
echo "Enter
the location of the setups folder. For example
'/home/abc/storminstallation/setups'"
read -e
setupsLocation
# Directory Name
echo "Enter
the directory name"
read -e
realTimePlatformDir
rtpLocalDir="\/opt\/$realTimePlatformDir\/storm\/storm_temp"
rtpLocalDirMake=/opt/$realTimePlatformDir/storm/storm_temp
echo
$rtpLocalDir;
echo "Enter
the IP of nimbus machine :"
read -e
stormNimbus;
array[0]=$stormNimbus
# Read supervisor
echo "Enter
the number of supervisor machines";
read -e n;
for (( i = 1 ;
i <= n; i++ ))
do
echo "Enter
the IP of storm supervisor machine $i:"
read -e
stormSupervisor;
array[i]=$stormSupervisor
done
# Read zookeeper
echo "Enter
the number of machines in the zookeeper cluster";
read -e m;
for (( i = 1 ;
i <= m; i++ ))
do
echo "Enter
the IP of zookeeper machine $i:"
read -e zkServer;
zkEntry="-
\""$zkServer"\""
zKArray=$zKArray","$zkEntry
done
# Copy the
required setups to all the storm machines
for (( i = 1 ;
i <= n+1; i++ ))
do
echo "Enter
the username of machine ${array[i-1]}"
read -e username
echo
"Username:"$username
if [ $username ==
'root' ]; then
echo 'root';
yamlFilePath="/root/.storm";
else
echo $username;
yamlFilePath="/home/$username/.storm";
fi
echo "the
storm.yaml file would be formed at : $yamlFilePath";
echo "Enter
the value for JAVA_HOME to be set on the machine ${array[i-1]}"
read -e javaHome;
echo 'JAVA_HOME
would be set to :'$javaHome;
ssh -t $username@${array[i-1]} "if
[ ! -d /opt/$realTimePlatformDir ]; then
sudo mkdir
/opt/$realTimePlatformDir;
sudo chown -R
$username: /opt/$realTimePlatformDir;
mkdir
/opt/$realTimePlatformDir/storm;
mkdir $rtpLocalDirMake;
mkdir $yamlFilePath;
fi"
scp -r -q $setupsLocation/storm-0.9.0-wip4 $username@${array[i-1]}:/opt/$realTimePlatformDir/storm/storm-0.9.0-wip4 ssh -t $username@${array[i-1]} "sed -i 's/ZOOKEEPER_IPS/$zKArray/g' /opt/$realTimePlatformDir/storm/storm-0.9.0-wip4/conf/storm.yaml;
sed -i 's/,/\n/g'
/opt/$realTimePlatformDir/storm/storm-0.9.0-wip4/conf/storm.yaml;
sed -i
's/NIMBUS_IP/$stormNimbus/g'
/opt/$realTimePlatformDir/storm/storm-0.9.0-wip4/conf/storm.yaml;
sed -i
's/LOCAL_DIR/$rtpLocalDir/g' /opt/$realTimePlatformDir/storm/storm-0.9.0-wip4/conf/storm.yaml;
cp
/opt/$realTimePlatformDir/storm/storm-0.9.0-wip4/conf/storm.yaml $yamlFilePath;
sudo apt-get install
git;
sudo apt-get install
uuid-dev;"
ssh -t $username@${array[i-1]} "cd
/opt/$realTimePlatformDir/storm;
wget
http://download.zeromq.org/zeromq-2.1.7.tar.gz;
tar -xzf
zeromq-2.1.7.tar.gz
cd zeromq-2.1.7
./configure
make
sudo make install
cd ..
export
JAVA_HOME=$javaHome;
echo $JAVA_HOME;
git clone
https://github.com/nathanmarz/jzmq.git
cd jzmq
./autogen.sh
./configure
make
sudo make install"
done
|
No comments:
Post a Comment