Spark Streaming內(nèi)存調(diào)優(yōu)

2018-11-26 16:37 更新

內(nèi)存調(diào)優(yōu)

調(diào)整內(nèi)存的使用以及Spark應(yīng)用程序的垃圾回收行為已經(jīng)在Spark優(yōu)化指南中詳細介紹。在這一節(jié),我們重點介紹幾個強烈推薦的自定義選項,它們可以減少Spark Streaming應(yīng)用程序垃圾回收的相關(guān)暫停,獲得更穩(wěn)定的批處理時間。

  • Default persistence level of DStreams:和RDDs不同的是,默認的持久化級別是序列化數(shù)據(jù)到內(nèi)存中(DStream是StorageLevel.MEMORY_ONLY_SER,RDD是StorageLevel.MEMORY_ONLY)。即使保存數(shù)據(jù)為序列化形態(tài)會增加序列化/反序列化的開銷,但是可以明顯的減少垃圾回收的暫停。
  • Clearing persistent RDDs:默認情況下,通過Spark內(nèi)置策略(LUR),Spark Streaming生成的持久化RDD將會從內(nèi)存中清理掉。如果spark.cleaner.ttl已經(jīng)設(shè)置了,比這個時間存在更老的持久化RDD將會被定時的清理掉。正如前面提到的那樣,這個值需要根據(jù)Spark Streaming應(yīng)用程序的操作小心設(shè)置。然而,可以設(shè)置配置選項spark.streaming.unpersist為true來更智能的去持久化(unpersist)RDD。這個配置使系統(tǒng)找出那些不需要經(jīng)常保有的RDD,然后去持久化它們。這可以減少Spark RDD的內(nèi)存使用,也可能改善垃圾回收的行為。
  • Concurrent garbage collector:使用并發(fā)的標(biāo)記-清除垃圾回收可以進一步減少垃圾回收的暫停時間。盡管并發(fā)的垃圾回收會減少系統(tǒng)的整體吞吐量,但是仍然推薦使用它以獲得更穩(wěn)定的批處理時間。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號