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的内存占用量。

 

posted @ 2022-04-13 14:31  所向披靡zz  阅读(937)  评论(0编辑  收藏  举报