您好,登錄后才能下訂單哦!
如何進行Spark的Failover機制全解析 ,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
所謂容錯是指一個系統的部分出現錯誤的情況還能夠持續地提供服務,不會因為一些細微的錯誤導致系統性能嚴重下降或者出現系統癱瘓。
在一個集群出現機器故障、網絡問題等是常 態,尤其集群達到較大規模后,很可能較頻繁出現機器故障不能進行提供服務,因此對于分布式集群需要進行容錯設計。
Spark在設計之初考慮到這種情況,所以它能夠實現高容錯,以下將從ExecutorWorker和Master的異常處理來介紹。
checkForWorkerTimeOutTask = forwardMessageThread. scheduleAtFixedRate (new Runnable { override def run (): Unit = Utils.tryLogNonFatalError ( //非自身發送消息CheckForWorkerTimeOut,調用timeOutDeadWorkers方法進行檢測 self.send(CheckForWorkerTimeOut) } }, 0, WORKER_TIMEOUT_MS, TimeUnit.MILLISECONDS)
如果是 Executor, Master 先把該 Worker 上運行的 Executor 發送消息 ExecutorUpdated 給對應的 Driver,告知 Executor 已經丟失,同時把這些 Executor 從其應用程序運行列表中刪除。另外,相關Executor的異常也需要按照前一小節進行處理。
如果是Driver,則判斷是否設置重新啟動。如果需要,則調用Master.schedule方法進行調度,分配合適節點重啟Driver;如果不需要重啟,則刪除該應用程序。
ZOOKEEPER:集群的元數據持久化到ZooKeeper中,當Master出現異常時.ZooKeeper 會通過選舉機制選舉出新的Master,新的Master接管時需要從ZooKeeper獲取持久化 信息并根據這些信息恢復集群狀態。具體結構如圖4-13所示。
FILESYSTEM:集群的元數據持久化到本地文件系統中,當Master出現異常時,只要 在該機器上重新啟動Master,啟動后新的Master獲取持久化信息并根據這些信息恢復 集群狀態。
CUSTOM:自定義恢復方式,對StandaloneRecoveryModeFactory抽象類進行實現并把 該類配置到系統中,當Master出現異常時,會根據用戶自定義的方式進行恢復集群狀 態。
NONE:不持久化集群的元數據,當Master出現異常時,新啟動的Master不進行恢復 集群狀態,而是直接接管集群。
關于如何進行Spark的Failover機制全解析 問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。