美文网首页
Spark之GC问题调优

Spark之GC问题调优

作者: 多彩海洋 | 来源:发表于2020-04-11 16:07 被阅读0次

java垃圾回收器回顾

Serial GC:

优点:单线程精简的GC实现,无需维护复杂的数据结构,初始化简单,是client模式下JVM默认选项。最古老的GC。
缺点:会进入"Stop-The World"状态。

ParNew GC:

新生代GC实现,是SerialGC的多线程版本,最常见的应用场景是配合老年代的CMS GC 工作

CMS(Concurrent Mark Sweep)GC :

优点: 基于标记-清除(Mark-Sweep)算法,尽量减少停顿时间。
缺点: 存在碎片化问题,在长时间运行的情况下会发生full GC,导致恶劣停顿。会占用更多的CPU资源,和用户争抢线程。在JDK 9中被标记为废弃。

Parrallel GC:

在JDK8等版本中,是server模式JVM的默认GC选择,也被称为吞吐量优先的GC,算法和Serial GC相似,特点是老生代和新生代GC并行进行,更加高效。

使用java -XX:+PrintCommandLineFlags -version查看

G1 GC:

兼顾了吞吐量和停顿时间的GC实现,是Oracle JDK 9后默认的GC
可以直观的设值停顿时间,相对于CMS GC ,G1未必能做到CMS最好情况下的延时停顿,但比最差情况要好得多
G1 仍存在年代的概念,使用了Region棋盘算法,实际上是标记-整理(Mark-Compact)算法,可以避免内存碎片,尤其是堆非常大的时候,G1优势更明显。
G1 吞吐量和停顿表现都非常不错。

note: 虽然G1和CMS两种回收器性能不错,但是oracle官方有一段提醒:

If you are using CMS or ParallelOldGC and your application is not experiencing long garbage collection pauses, it is fine to stay with your current collector. Changing to the G1 collector is not a requirement for using the latest JDK.

意思是如果程序没有崩溃,没有经历长时间的垃圾收集暂停,那么可以继续使用当前的收集器。。。

所以在数据量大的情况下,spark程序出现过timeout现象,就要更改为G1回收器。

error: file not found/file lost/timeout
调节连接等待时长
spark.core.connection.ack.wait.timeout

error: executor lost,oom,shuffle output file cannot find
调节executor堆外内存
spark.yarn.executor.memoryOverhead

参考:
spark gc tuning 官方文档

相关文章

  • Spark之GC问题调优

    java垃圾回收器回顾 Serial GC: 优点:单线程精简的GC实现,无需维护复杂的数据结构,初始化简单,是c...

  • JVM-GC调优

    零、本文纲要 一、 GC调优基本思路二、 新生代内存调优三、 老年代内存调优四、 GC调优案例 官方GC调优指南[...

  • Spark性能调优

    《Spark性能优化:开发调优篇》《Spark性能优化:资源调优篇》《Spark性能优化:数据倾斜调优》《Spar...

  • Spark性能优化:数据倾斜调优(转)

    《Spark性能优化:开发调优篇》《Spark性能优化:资源调优篇》《Spark性能优化:数据倾斜调优》《Spar...

  • Spark性能优化:开发调优篇(转)

    《Spark性能优化:开发调优篇》《Spark性能优化:资源调优篇》《Spark性能优化:数据倾斜调优》《Spar...

  • Spark性能优化:资源调优篇(转)

    《Spark性能优化:开发调优篇》《Spark性能优化:资源调优篇》《Spark性能优化:数据倾斜调优》《Spar...

  • 第二十九章、GC调优思路

    以G1 GC 为例,谈谈GC调优思路? 谈到调优,这一定是针对特定场景、特定目的的事情,对于GC调优来说,首先...

  • JVM性能调优的6大步骤,及关键调优参数详解

    JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。 1.Full GC ...

  • Java架构师面试题——JVM性能调优

    JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。 1.Full GC ...

  • java-GC分析

    主要关注点: GC日志分析 调优命令 调优工具 GC日志分析 摘录GC日志一部分(前段为年轻代gc回收;后段为fu...

网友评论

      本文标题:Spark之GC问题调优

      本文链接:https://www.haomeiwen.com/subject/iztumhtx.html