2014-10-28 106 views
5

我瞭解工作節點是如何容錯的,但如果您的驅動程序出於某種意外原因而崩潰,會發生什麼情況? (掉電/內存問題等)。如果驅動程序崩潰會發生什麼?

我想你會失去所有的工作,因爲讀取結果的代碼不再運行,或者Spark是否知道如何重新啓動它?如果是這樣如何?

+3

取決於你如何運行你的驅動程序。例如,如果以紗線簇模式運行,紗線將重試您的驅動程序。但是,這意味着重新運行您的所有工作。 – zsxwing 2014-10-29 01:14:27

+0

謝謝。所以我需要設計它,以便驅動程序可以在某處保存子計算的進度,並在某些日誌中更新計算的「階段」,並在內部處理容錯問題。我猜 – 2014-10-29 01:41:56

+0

正確。您需要自行恢復驅動程序。 – zsxwing 2014-10-29 01:50:17

回答

4

由於@zsxwing指出這取決於你如何運行你的驅動程序。除了使用紗線運行外,還可以使用集羣部署模式運行作業(這是一個spark-submit參數)。在Spark Streaming中,您指定--supervise並且Spark將爲您重新開始工作。詳情請見Spark Streaming Guide

+0

使用--supervise時是否需要檢查點? – okwap 2018-01-04 07:28:01

2

是的,你可以重新啓動火花應用程序。 有幾個特定於正在使用的集羣管理器的選項。例如,對於具有羣集部署模式的Spark獨立羣集,您還可以指定- 監督以確保驅動程序在發生非零退出代碼失敗時自動重新啓動。要列舉可用的火花提交所有這樣的選擇,與--help運行:

在羣集中部署模式星火獨立的集羣上運行監督

./bin/spark-submit \ 
    --class org.apache.spark.examples.SparkPi \ 
    --master spark://207.184.161.138:7077 \ 
    --deploy-mode cluster \ 
    --supervise \ 
    /path/to/examples.jar \ 
    1000 
0

按星火文檔: -

Spark Standalone - Spark應用程序驅動程序可以提交在Spark Standalone集羣中運行(請參閱集羣部署模式),也就是說,應用程序驅動程序本身在其中一個工作節點上運行。此外,獨立羣集管理器可以被指示監督驅動程序,並且如果驅動程序由於非零退出代碼或者由於運行驅動程序的節點的故障而失敗,則重新啓動它。有關更多詳細信息,請參閱Spark Standalone指南中的集羣模式和監督。

所以-​​-supervise將只與獨立集羣模式配置mapreduce.am.max-嘗試財產mapred現場工作,如果你的應用程序在紗線集羣模式,然後提交紗將處理驅動程序的重新啓動.xml,所以你的代碼應該是這樣的,它刪除輸出目錄並從頭開始,否則將會失敗,並且輸出目錄的錯誤已經存在。

相關問題