Spark调优 JVM调优

#1. 为什么要进行JVM调优?为什么要进行垃圾回收?

Spark调优 JVM调优_第1张图片

Spark是由Scala写的,而Java和Scala都是运行在JVM上的。而一个executor就是一个JVM进程。

我们会把executor分成两份,老年代和新生代,比例可能会不一样。新生代会分成三份。

Spark调优 JVM调优_第2张图片

Spark作业开始运行,会不断的产生对象,对象会首先进入Eden区,然后如果Eden区存储满了,对象就会进入survivor1区,如果Eden和survivor1区都满了,就会发生minor GC,h会在新生代里面发生垃圾回收,,把不需要的对象回收。假设4,7,8都是无用的对象会被清除,而5,6是没被GC掉的,就会被放到9中。如果左边都不够用了,就会把survivor中的放入老年代里。如果一个对象,在新生代,多次minor GC 还是没有被回收,那么说明这个对象是长时间存活的对象,那么就会把这些对象移动到老年代里。如果一直这么移动,如果老年代也存不下对象,那么就会发生full GC,full GC非常耗费资源。

不正常的情况。如果Eden区不够大,那么很可能出现大量的数据频繁进入survivor区,那么会平凡的进入老年代,full GC就会很频繁的发生,会导致Spark工作现场停止,直接影响Spark作业的运行。

如果Eden区比较小,会很快满,然后survivo

你可能感兴趣的:(大数据-spark)