CentOS and Ubuntu
and two famous Linux distribution used pretty widely. My last post shares an
installation script for Storm cluster over Ubuntu machines and this one is for
CentOS. The few usage rules are just the same as for Ubuntu. I'll recite here.
Although the script should work for older versions of Apache Storm, it has been
tested for storm-0.9.0-wip7. 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-wip7" 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-wip7
$username@${array[i-1]}:/opt/$realTimePlatformDir/storm/storm-0.9.0-wip7
ssh -t $username@${array[i-1]} "sed
-i 's/ZOOKEEPER_IPS/$zKArray/g' /opt/$realTimePlatformDir/storm/storm-0.9.0-wip7/conf/storm.yaml;
sed -i 's/,/\n/g'
/opt/$realTimePlatformDir/storm/storm-0.9.0-wip7/conf/storm.yaml;
sed -i
's/NIMBUS_IP/$stormNimbus/g'
/opt/$realTimePlatformDir/storm/storm-0.9.0-wip7/conf/storm.yaml;
sed -i 's/LOCAL_DIR/$rtpLocalDir/g'
/opt/$realTimePlatformDir/storm/storm-0.9.0-wip7/conf/storm.yaml;
cp
/opt/$realTimePlatformDir/storm/storm-0.9.0-wip7/conf/storm.yaml $yamlFilePath;
sudo yum install git;
sudo yum install
libuuid-devel;"
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
|
Hope this helps.
My next post shares small start-up script for the installed Storm cluster.
No comments:
Post a Comment