SparkStreaming實時流處理系統(tǒng)需要長時間接受并處理數(shù)據(jù),對于SparkStreaming的容錯性主要通過以下三種方式:

第一、利用Spark自身的容錯設計、存儲級別和RDD抽象設計能夠處理集群中任何worker節(jié)點的故障。
第二、由于Spark運行的多種模式,其Driver端可能運行在Master節(jié)點或者在集群中的任意節(jié)點,讓Driver端具備容錯能力是一個很大挑戰(zhàn),但是由于SparkStreaming接收的數(shù)據(jù)是按照批處理形式進行存儲和處理,這些批次數(shù)據(jù)的元數(shù)據(jù)可以通過執(zhí)行檢查點的方式定期寫入可靠的存儲中,在Driver端重啟中恢復這些狀態(tài),即checkpoint機制。
第三、對于接收的數(shù)據(jù)存在于內(nèi)存中存在丟失的風險,由于接收到的數(shù)據(jù)還存在于Executor的內(nèi)存中,當Executor出現(xiàn)異常時會丟失這些數(shù)據(jù),為了避免這種數(shù)據(jù)損失,在Spark1.2中引進了預寫日志的形式(WriteAheadLogs)的形式。