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)化指南中詳細(xì)介紹。在這一節(jié),我們重點(diǎn)介紹幾個(gè)強(qiáng)烈推薦的自定義選項(xiàng),它們可以減少Spark Streaming應(yīng)用程序垃圾回收的相關(guān)暫停,獲得更穩(wěn)定的批處理時(shí)間。

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)