一、通用腳本
當運行streaming任務時,可能會因為某些原因比如代碼的bug,以及其他的因素導致streaming程序停止(FINISHED,KILLED,FAILED),雖然我們可以再手動重啟一次程序,
但是這樣還是比較麻煩的,接下來要做的就是讓linux自動監控streaming程序是否停止,如果停止就自動重啟,話不多說下面寫重啟腳本:
#!/bin/bash myapp_status=$(yarn application -list| awk '{print $2}' | grep WBStreamingClusterDriver | wc -l) if [ $myapp_status = 0 ];then echo 'adx_show is stop' nohup /usr/java/checkpoint/wb2/wb_run.sh & echo "restart WBStreamingClusterDriver success !!!" else echo 'WBStreamingClusterDriver is running !!' fi
下面解釋下,腳本的內容:
yarn application -list| awk '{print $2}' | grep WBStreamingClusterDriver | wc -l
這句話的意思在linux中查找你所運行的spark任務中 任務名稱為WBStreamingClusterDriver的任務有沒有,如果有則返回值是1,myapp_status=1,(如果你啟動多次則返回幾,其實就是這個任務的次數),如果沒有這個任務就返回0,myapp_status=0
接下來就是if else根據你的返回值來判斷任務是否在執行,如果沒有執行,則會啟動spark submit 任務,重啟你的streaming任務,我這里寫的自己寫的streaming腳本,你也可以直接寫你的submit命令,結果一樣,如果檢測到你的程序在運行,則不會有影響,
因為這個腳本是你用來監控streaming的,如果你想每隔幾分鍾,運行一下這個監控腳本,需要寫一個crontab,定時任務,比如
*/3 * * * * /usr/restart_wb.sh 這樣就可以每隔3分鍾檢測一下你的streaming是否在運行,如果停止了則會自動重啟了,沒有停止則不會有影響.
二、如果是standalone模式
spark submit -supervise