2016-08-10 75 views
1

我正在創建一個shell腳本,該腳本將從Jenkins中執行,因爲我們有很多流式作業,並且似乎更容易從Jenkins管理。所以我創建了下面的腳本。如何知道應用程序是否處於RUNNING狀態以殺死spark-submit過程?

#!/bin/bash 
spark-submit "spark parameters here" > /dev/null 2>&1 & 
processId=$! 
echo $processId 
sleep 5m 
kill $processId 

如果我沒有睡眠,spark-submit進程立即被終止並且沒有提交spark應用程序。如果有睡眠,火花提交過程有足夠的時間提交火花應用程序。

我的問題是,有沒有更好的方法來知道火花應用程序是否處於RUNNING狀態,以便火花提交過程可以被殺死?

星火1.6.0紗

回答

1

你應該​​你的星火應用程序並使用yarn application -status <ApplicationId>作爲application節中描述:

打印應用程序的狀態。

你可以得到的​​日誌(在client部署模式)<ApplicationId>或使用yarn application -list -appType SPARK -appStates RUNNING

+1

我正在使用紗線,因此我使用紗線應用程序-list&grep應用程序名稱來獲取應用程序ID,同時使用睡眠來檢查更新狀態。 –

0

我不知道你使用的是什麼版本的Spark,或者如果您在獨立模式下運行,但無論如何,你可以使用the REST API提交/殺死你的應用程序。我最後一次檢查它幾乎沒有記錄,但它工作正常。

當您提交應用程序時,您將得到一個submissionId,您可以稍後使用它獲取當前狀態或將其消滅。可能的狀態都記錄here

// SUBMITTED: Submitted but not yet scheduled on a worker 
    // RUNNING: Has been allocated to a worker to run 
    // FINISHED: Previously ran and exited cleanly 
    // RELAUNCHING: Exited non-zero or due to worker failure, but has not yet started running again 
    // UNKNOWN: The state of the driver is temporarily not known due to master failure recovery 
    // KILLED: A user manually killed this driver 
    // FAILED: The driver exited non-zero and was not supervised 
    // ERROR: Unable to run or restart due to an unrecoverable error (e.g. missing jar file) 

這對於長時間運行的應用程序(如流媒體)特別有用,因爲你不必照看shell腳本。

+0

我使用Spark 1.6.0與YARN,我認爲REST接口僅適用於獨立模式。我沒有看到任何在端口6066上運行的東西,正如所提供的鏈接中所提到的。 –

相關問題