spark Streaming中的容錯機制

2021-08-25 08:22:31 字數 756 閱讀 5109

spark操作通常是容錯檔案系統中的資料,比如hdfs.因此,所有通過容錯資料生成的rdd也是容錯的,然而,對於spark streaming來說,這卻是行不通的,因為在大多數情況下,資料都是通過網路接收的,要讓spark streaming程式中,所有生成的rdd,都達到與普通spark程式的rdd相同的容錯性,接收到的資料必須被複製到多個worker節點的executor記憶體中,預設複製因子是2

接收資料的容錯語義

1. 基於檔案的資料來源

如果所有的輸入資料都在乙個容錯的檔案系統中,比如hdfs,spark streaming一定可以從失敗進行恢復,並且處理所有的資料。這就提供了一次且僅一次的語義,意味著所有的資料只能處理一次

2. 基於receiver的資料來源

可靠的receiver:這種receiver會在接收到了資料,並且將資料複製後,對資料來源執行確認操作,如果receiver在資料接收和複製完成前就失敗了,那麼資料來源對於快取的資料會接收不到確認,此時,當receiver重啟後,資料來源會重新傳送資料,沒有資料丟失。

不可靠的receiver,這種receiver不會傳送確認操作,因此當worker或者driver節點失敗的時候,可能會導致資料丟失。

3. 基於kafka direct api,可以保證,所有從kafka接收到的資料

輸出容錯

使用事務更新:所有的操作都應該做成事務的,從而讓寫入操作執行一次且僅一次,給每個batch的資料賦予唯一的標識,然後更新的時候判定,如果資料庫中還沒有該唯一標識,那麼就更新,如果有唯一標識,那麼就不更新

spark streaming中遇到的問題

task資料分配不均 由於我這個日誌分析系統是使用direct模式從kafka拉取資料的,在direct模式下,通過kafkautils.createdirectstream 獲取的dstream中的rdd的分割槽數是與kafka相對應的topic的分割槽數是一樣的,且分割槽中的資料分布情況也是一樣...

Spark Streaming入門詳解

背景 使用spark主要是使用spark streaming,spark streaming的魔力之所在於 1.流式處理,如今是乙個流處理時代,一切與流不相關的都是無效的資料。3.spark streaming本身是乙個程式,spark streaming在處理資料的時候會不斷感知資料。所以對構建複...

Spark Streaming 程式監控

官網中指出,spark中專門為sparkstreaming程式的監控設定了額外的途徑,當使用streamingcontext時,在web ui中會出現乙個 streaming 的選項卡,在此選項卡內,統計的內容展示如下 這其中包括接受的記錄數量,每乙個batch內處理的記錄數,處理時間,以及總共消耗...