spark調優-GC


1、什么是GC

垃圾收集 Garbage Collection 通常被稱為“GC”,回收沒用的對象以釋放空間。

  GC 主要回收的是虛擬機堆內存的空間,因為new 的對象主要是在堆內存。

 

2、頻繁GC的影響及優化方法

(1)頻繁的GC影響

task運行期間動態創建的對象使用的Jvm堆內存的情況

當給spark任務分配的內存少了,會頻繁發生minor gc(年輕代gc),如果存活時間長的對象特別多,就會發生full gc(老年代gc)。

當頻繁的new對象時,導致很快進入老年代,這樣也可能發生full gc。

頻繁gc 會影響 工作任務線程的正常執行,從而降低spark 應用程序的性能。可以增加executor-memory內存數量。

(2)優化方案

a)優化代碼,避免頻繁new 同一個對象,導致的頻繁gc。

b)調節可用存儲內存和執行內存的比例,以減少gc 發生的頻率。

c)對應存儲內存,可以考慮存儲序列化后的對象,調節序列化級別為MEMORY_DISK_SER或MEMORY_ONLY_SER,這樣占用內存空間小。

d)還可以使用Kryo序列化類庫,進行序列化,因為kryo序列化方法可以進一步的降低RDD的parition的內存占用量。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM