合適啟用checkpoint機制
1.使用了有狀態的transformation操作—比如updateStateByKey,或者reduceByKeyAndWindow操作被使用了,
那么checkpoint目錄要求是必須提供的,也就必須開啟checkpoint機制,從而進行周期性的RDD checkpoint
2.要保證可以從Driver失敗中進行恢復—元數據checkpoint需要啟用,來進行這種情況的恢復,
要注意的是,并不是說所有的Spark-Streaming應用程序,都要啟用checkpoint機制,如果不強制要求從Driver
失敗中自動進行恢復,有沒有使用有狀態的transformation操作,那么就不需要啟用checkpoint,事實上
這么做反而是用利于提升性能的。
啟動預寫日志機制
預寫日志機制,簡寫為WAL,全稱為Write Ahead Log,從Spark 1.2版本開始,就引入了基于容錯的文件系統的WAL機制,如果啟用該機制,Receiver接收到的所有數據都會被寫入配置的checkpoint目錄中的預寫日志這種機制可以讓driver在恢復的時候,避免數據丟失,并且可以確保整個實時計算過程中,零數據丟失
要配置該機制,首先要調用StreamingContext的checkpoint()方法設置一個checkpoint目錄,然后需要將spark.streaming.receiver.writeAheadLog.enable參數設置為true
然而這種極強的可靠性機制,會導致Receiver的吞吐量大幅度下降,因為單位時間內有相當一部分時間需要將數據寫入預寫日志,如果又希望開啟預寫日志機制,確保數據零損失,又不希望影響系統的吞吐量,那么可以創建多個輸入DStream啟動多個Reciver,然后將這些receiver接收到的數據使用ssc.union()方法將這些dstream中的數據進行合并
此外在啟用了預寫日志機制之后,推薦將復制持久化機制禁用掉,因為所有數據已經保存在容錯的文件系統中了,不需要再用復制機制進行持久化,保存一份副本了,只要將輸入的DStream的持久化機制設置一下即可。
更多關于“云計算培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學,課程大綱緊跟企業需求,更科學更嚴謹,每年培養泛IT人才近2萬人。不論你是零基礎還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽。