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