關於Zookeeper一鍵啓動/關閉腳本所產生的烏龍事件

        大家都知道在Hadoop集羣開啓/關閉Zookeeper集羣的時候,需要到不同的節點ZK的bin目錄下執行對應的啓動/關閉腳本,十分的麻煩。所以就有了以下腳本的產生~

        

一鍵開啓Zookeeper

vim /export/servers/zookeeper-3.4.5-cdh5.14.0/bin/zk_startall.sh

for host in node01 node02 node03
do
        ssh $host "source /etc/profile;nohup /export/servers/zookeeper-3.4.5-cdh5.14.0/bin/zkServer.sh start >/dev/null 2>&1 
&"
        echo "$host zk is running"
done

        

一鍵關閉Zookeeper

vim /export/servers/zookeeper-3.4.5-cdh5.14.0/bin/zk_stopall.sh

for host in node01 node02 node03
do
        ssh $host "source /etc/profile;jps |grep QuorumPeerMain |cut -c 1-4 |xargs kill -s 9"
        echo "$host zk is stopping"
done

正常情況下,大家只要在一臺主節點上添加上述的腳本文件即可~

如果配置了ZK的環境變量,

開啓集羣的ZK服務只要在命令行輸入zk_startall.sh即可

關閉集羣的ZK服務只要在命令行輸入zk_stopall.sh即可

但博主在進行日常維護集羣的時候,發現執行zk_stopall.sh的時候,命令行顯示如下問題:
在這裏插入圖片描述
最初的我以爲又是跟之前解決關閉集羣顯示no datanode to stop(詳情請見《完美解決Hadoop集羣無法正常關閉的問題!》)的情況一樣,但當我檢查了ZK的配置文件之後發現貌似不是這個問題…

vim /export/servers/zookeeper-3.4.5-cdh5.14.0/conf/zoo.cfg
在這裏插入圖片描述
後面待我仔細檢查之前命令行的打印結果,終於發現了本次事故的端倪!
在這裏插入圖片描述
先用jps查看當前進程
在這裏插入圖片描述
發現zk的進程號66241怎麼與腳本需要kill的進程號6621的不一致?還正好差了1位?難道是腳本的shell書寫出了點問題?

後面當我把zk_stopall.sh腳本重新打開了,檢查了一遍,終於看出來了~
在這裏插入圖片描述
這個腳本獲取的是ZK進程號的前四位,而我ZK的端口號又恰好是5位的,所以一直kill不掉對應的進程,所以只需要把腳本中的4改成5,再重新執行腳本就生效了~

總結

        經過這樣的一次"烏龍事件",我給自己的建議就是: 長點心吧(T▽T)

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章