1. 程式人生 > 實用技巧 >SparkStreaming之 任務失敗後,自動重啟

SparkStreaming之 任務失敗後,自動重啟

一、通用指令碼

當執行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