天天看點

叢集storm啟動腳本

#!/bin/sh
echo "#######################"
echo "###"
echo "## 這是storm的一鍵啟動腳本"
echo "##"
echo "########################"
##首先啟動目前機器,即master上的storm程序: nimbus 和 ui [core]

echo "啟動master上的nimbus"
nohup /opt/storm/bin/storm nimbus > /dev/null  >& &
echo "啟動master上的ui"
## master的ui
nohup /opt/storm/bin/storm ui > /dev/null >& &
##接下來就要啟動slave01和slave02上的程序
##  首先,需要知道storm叢集的其他節點,可以将其他節點的位址或者ip或者host配置到一個檔案中[storm-slaves],
##類似hadoop中的slaves檔案,hbase中的regionservers檔案
##  其次,需要周遊讀取storm-slaves中的host,一次來遠端ssh啟動其它機器上的程序
##  使用while循環對去到storm-slaves中的資料
##  cat storm-slaves | while read host
##  do
##      echo $host
##  拿到host之後,就可以通過ssh來遠端執行相關的啟動腳本
##     eg.ssh [email protected] nohup /opt/storm/bin/storm nimbus > /dev/null 2>&1
##     eg.ssh [email protected] nohup /opt/storm/bin/storm supervisor > /dev/null 2>&1
##     eg.ssh [email protected] nohup /opt/storm/bin/storm logviewer > /dev/null 2>&1
##     問題的關鍵在于slave01和slave02上面啟動的程序不一緻,是以需要使用if判斷來加以區分
##       是以我們可以通過目前的host是否為slave01來進行差別啟動,
##       如果是slave01,需要額外啟動nimbus程序
##      判斷host==> echo $host | grep -q "slave01",如果host包含slave01的話,這條指令的執行結果傳回碼為0,反之為非0
##      if [ $? -eq 0 ]
##      then
##         在slave01上啟動nimbus即可
##      fi
##     再來啟動其它程序即可
##  done
##  
##

cat /opt/storm/bin/storm-slaves | while  read host
do 
    echo $host | grep -q "slave01"
    if [$ -eq ]
    then 
    echo "啟動slave01上的nimbus"
    ssh "[email protected]"$host nohup /opt/storm/bin/storm nimbus >/dev/null >& &
    fi
    echo "啟動supervisor 和 logviewer"
    ssh "[email protected]"$host nohup /opt/storm/bin/storm  supervisor > /dev/null >& &
    ssh "[email protected]"$host nohup /opt/storm/bin/storm logviewer > /dev/null >& &
done