1. 程式人生 > 其它 >Java 編寫sparkstreaming檢查點機制(checkpoint)

Java 編寫sparkstreaming檢查點機制(checkpoint)

因為sparkStreaming流程式是24小時不間斷的執行,所以為了防止出現故障導致程式停止,sparkStreaming需要將足夠的資訊儲存到容錯儲存系統中,以便於可以從故障中恢復。

一、檢查點有兩種:

1、元資料檢查點

將定義流失計算的資訊儲存到容錯儲存系統中,如HDFS等。這可用於從執行流應用程式的節點的故障中恢復。

元資料包括:用於建立流應用程式的配置,定義流應用程式的Dstream操作集(就是一些運算,運算元等),不完整的批次(在佇列中而尚未完成的批次)

2、資料檢查點

將生成的RDD儲存到可靠的儲存系統中。特別是對於一些跨批次組合資料,且有狀態轉換時。

注:在這種轉換中,生成的RDD依賴於先前批次的RDD,這導致依賴關係鏈的長度隨著時間而增加。為了避免恢復時間的這種無限增加【與依賴鏈成正比】,有狀態變換的中間RDD週期性地檢查以儲存到可靠的儲存系統中,以切斷依賴鏈。

所以一般需要設定檢查點的情況:

1、有狀態轉換的使用,比如使用了updateStateByKey或reduceByKeyAndWindow,那麼就必須提供一個檢查點來快取之前批次的中間結果,狀態結果。

二、配置檢查點

可以通過在容錯,可靠的檔案系統【例如:HDFS、S3或Windows檔案系統】中設定目錄來啟用檢查點,檢查點資訊將儲存到該檔案系統中。使用:streamingContext.checkpoint(checkpointDirectory)來設定的。這將允許使用上述狀態轉換。