運(yùn)行一個(gè)Spark Streaming應(yīng)用程序,有下面一些步驟
TwitterUtils
,那么就需要將spark-streaming-twitter_2.10
以及它的所有依賴打包到應(yīng)用程序jar中。配置應(yīng)用程序driver的自動(dòng)重啟-為了自動(dòng)從driver故障中恢復(fù),運(yùn)行流應(yīng)用程序的部署設(shè)施必須能監(jiān)控driver進(jìn)程,如果失敗了能夠重啟它。不同的集群管理器,有不同的工具得到該功能
Mesos: Mesos可以用Marathon提供該功能
spark.streaming.receiver.writeAheadLogs.enable
為true來開啟。然而,這些較強(qiáng)的語義可能以receiver的接收吞吐量為代價(jià)。這可以通過并行運(yùn)行多個(gè)receiver增加吞吐量來解決。另外,當(dāng)預(yù)寫日志開啟時(shí),Spark中的復(fù)制數(shù)據(jù)的功能推薦不用,因?yàn)樵撊罩疽呀?jīng)存儲(chǔ)在了一個(gè)副本在存儲(chǔ)系統(tǒng)中。可以通過設(shè)置輸入DStream的存儲(chǔ)級(jí)別為StorageLevel.MEMORY_AND_DISK_SER
獲得該功能。如果運(yùn)行的Spark Streaming應(yīng)用程序需要升級(jí),有兩種可能的方法
StreamingContext.stop(...)
或JavaStreamingContext.stop(...)
)現(xiàn)有的應(yīng)用程序。在關(guān)閉之前,要保證已經(jīng)接收的數(shù)據(jù)完全處理完。然后,就可以啟動(dòng)升級(jí)的應(yīng)用程序,升級(jí)的應(yīng)用程序會(huì)接著舊應(yīng)用程序的點(diǎn)開始處理。這種方法僅支持具有源端緩存功能的輸入源(如flume,kafka),這是因?yàn)楫?dāng)舊的應(yīng)用程序已經(jīng)關(guān)閉,升級(jí)的應(yīng)用程序還沒有啟動(dòng)的時(shí)候,數(shù)據(jù)需要被緩存。
更多建議: