日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Spark详解(八):Spark 容错以及高可用性HA

發布時間:2025/4/16 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spark详解(八):Spark 容错以及高可用性HA 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

所謂容錯就是一個系統的部分出現錯誤的情況還能夠持續地提供服務,不會因為一些錯誤而導致系統性能嚴重下降或出現系統癱瘓。在一個集群中出現機器故障、網絡問題等常態,尤其集群達到較大規模后,很可能較頻繁的出現機器故障等不能進行提供服務,因此分布性集群需要進行容錯設計。

1. Executor容錯

Spark支持多種運行模式,這些運行模型中的集群管理器會為任務分配運行資源,在運行資源中啟動Executor,由Executor執行任務的運行,最終把任務運行狀態發送給Driver。

(1)首先看Exeucutord的啟動過程:在集群中由Master給應用程序分配運行資源后,然后再Worker中啟動ExecutorRunner,而ExecutorRunner根據當前的運行模式啟動CoarseGrainedExecutorBackend進程,當該進程會向Driver發送注冊Executor信息,如果注冊成功,則CoarseGrainedExecutorBackend在其內部啟動Executor。Executor由ExecutorRunner進行管理,當Executor出現異常的時候(如所運行容器CoarseGrainedExecutorBackend進程異常退出等)由ExecutorRunner捕獲當前異常并且發送ExecutorStateChanged消息給Worker進程。
(2)Worker進程接受到ExecutorStateChanged消息時,在Worker的handleExecutorStateChanged方法中,根據Executor狀態消息更新,同時把Executor狀態發送給Master。
(3)Master接收到Executor狀態變化消息后,如果發現Executor出現異常退出,則調用Master.schedule方法,嘗試獲取可用的Worker節點并啟動Executor,而這個Worker很可能不是失敗之前運行的Executor的Worker節點。該嘗試系統會進行10次,如果超過10次,則標記該應用運行失敗并移除集群中該應用。

2. Worker異常

Spark獨立運行模式采用的是Master/Slave的結構,其中Slave是由Worker來擔任的,在運行的時候會發送心跳信息給Master,讓Master知道Worker的實時狀態,另一方面也會檢測注冊的Worker是否超時,因為在集群運行過程中,可能由于機器宕機或者進程被殺死等原因造成Worker進程異常退出

當Worker出現超時時,Master調用timeOutDeadWorker方法進行處理,在處理時根據Worker運行的是Executor和Driver進行分別處理。

  • 如果是Executor,Master先把該Worker上運行的Executor發送消息ExecutorUpdate給對應的Driver,告知Exeucotr已經丟失,同時把這些Executor從其應用程序中刪除。
  • 如果是Drvier,則判斷是否要重新啟動。如果需要,則調用Master.schedule方法進行調度,分配合適節點重啟Driver。

3. Master異常

Master作為Spark獨立運行模式的核心,如果Master出現異常,則整個集群的運行資源將無法進行管理,整個集群將處于“群龍無首”的狀態。很幸運的是,Spark在設計的時候考慮這個情況,在集群運行的時候,Master將啟動一個或者多個StandBy Mster,當Master異常的時候,StandBy Mster將根據一定的規則確定其中一個為Master接管。

總結

以上是生活随笔為你收集整理的Spark详解(八):Spark 容错以及高可用性HA的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。