首頁技術文章正文

云計算大數據培訓之Spark-Streaming的基本原理以及預寫日志機制和checkpoint(3)

更新時間:2017-09-01 來源:黑馬程序員云計算大數據培訓學院 瀏覽量:

合適啟用checkpoint機制 
1.使用了有狀態(tài)的transformation操作—比如updateStateByKey,或者reduceByKeyAndWindow操作被使用了, 
那么checkpoint目錄要求是必須提供的,也就必須開啟checkpoint機制,從而進行周期性的RDD checkpoint 
2.要保證可以從Driver失敗中進行恢復—元數據checkpoint需要啟用,來進行這種情況的恢復, 
要注意的是,并不是說所有的Spark-Streaming應用程序,都要啟用checkpoint機制,如果不強制要求從Driver 
失敗中自動進行恢復,有沒有使用有狀態(tài)的transformation操作,那么就不需要啟用checkpoint,事實上 
這么做反而是用利于提升性能的。

啟動預寫日志機制 
預寫日志機制,簡寫為WAL,全稱為Write Ahead Log,從Spark 1.2版本開始,就引入了基于容錯的文件系統(tǒng)的WAL機制,如果啟用該機制,Receiver接收到的所有數據都會被寫入配置的checkpoint目錄中的預寫日志這種機制可以讓driver在恢復的時候,避免數據丟失,并且可以確保整個實時計算過程中,零數據丟失

要配置該機制,首先要調用StreamingContext的checkpoint()方法設置一個checkpoint目錄,然后需要將spark.streaming.receiver.writeAheadLog.enable參數設置為true

然而這種極強的可靠性機制,會導致Receiver的吞吐量大幅度下降,因為單位時間內有相當一部分時間需要將數據寫入預寫日志,如果又希望開啟預寫日志機制,確保數據零損失,又不希望影響系統(tǒng)的吞吐量,那么可以創(chuàng)建多個輸入DStream啟動多個Reciver,然后將這些receiver接收到的數據使用ssc.union()方法將這些dstream中的數據進行合并 
此外在啟用了預寫日志機制之后,推薦將復制持久化機制禁用掉,因為所有數據已經保存在容錯的文件系統(tǒng)中了,不需要再用復制機制進行持久化,保存一份副本了,只要將輸入的DStream的持久化機制設置一下即可



本文版權歸黑馬程序員云計算大數據培訓學院學院所有,歡迎轉載,轉載請注明作者出處。謝謝!
作者:黑馬程序員云計算大數據培訓學院
首發(fā):http://cloud.itheima.com/ 
分享到:
在線咨詢 我要報名
和我們在線交談!