Spark GC 调优

2024-09-06 11:32
文章标签 gc spark 调优

本文主要是介绍Spark GC 调优,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我们的Spark环境目前主要问题是数据量大后一些task的GC Time 特别长,多则几分钟,少则几十秒,实在不能忍受。参考databricks的 Tuning Java Garbage Collection for Spark Applications对我们的环境优化后,效果比较明显。

选择垃圾收集器

如果分配给单个Executor的Heap足够大(我认为超过32G)时使用G1,否则使用Parallel。因为如果在Heap小于32G时使用G1,G1 region size默认小于16M,可能引发Humongous对象分配问题。
当然,使用G1可能也可能引起Executor异常退出,这时有两种解决方法:
1. 减少cores数量(就是减少当前Executor并行task的数量)
2. 增加老年代内存

测试验证

硬件环境:(64G+8cores+42T) * 4,用yarn管理,利用Spark SQL对124G,169个字段的数据用row_number函数除重,除重前1.6亿条,除重后1.5亿条:

executor-memoryexecutor-coresextraJavaOptionsMax GC TimeJob Duration
20g10-XX:+UseG1GC 60s32min
30g20-XX:+UseG1GC 2.0 min27min
36g20-XX:+UseG1GC 1.8 min26min
36g20-XX:+UseG1GC -XX:NewRatio=811 s23min
36g22-XX:+UseG1GC -XX:NewRatio=817 s25min
36g28-XX:+UseG1GC -XX:NewRatio=8 -XXConcGCThreads=2028 s22min
20g20-XX:+UseParallelGC -XX:+UseParallelOldGC50s25min
36g20-XX:+UseParallelGC -XX:+UseParallelOldGC17s25min
20g20-XX:+UseConcMarkSweepGC -XX:+UseParNewGC1.9min42min
36g20-XX:+UseConcMarkSweepGC -XX:+UseParNewGC1.7min34min

当内存比较小,在测试时也遇到了databricks遇到的两个问题。我们之前使用CMS的,现在改为G1,由之前的34min降为23min,性能提升还是比较明显的。

参考文档:
http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/G1GettingStarted/index.html

这篇关于Spark GC 调优的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1141879

相关文章

JVisualVM之Java性能监控与调优利器详解

《JVisualVM之Java性能监控与调优利器详解》本文将详细介绍JVisualVM的使用方法,并结合实际案例展示如何利用它进行性能调优,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1. JVisualVM简介2. JVisualVM的安装与启动2.1 启动JVisualVM2

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

JVM垃圾回收机制之GC解读

《JVM垃圾回收机制之GC解读》:本文主要介绍JVM垃圾回收机制之GC,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、死亡对象的判断算法1.1 引用计数算法1.2 可达性分析算法二、垃圾回收算法2.1 标记-清除算法2.2 复制算法2.3 标记-整理算法2.4

SpringBoot应用中出现的Full GC问题的场景与解决

《SpringBoot应用中出现的FullGC问题的场景与解决》这篇文章主要为大家详细介绍了SpringBoot应用中出现的FullGC问题的场景与解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录Full GC的原理与触发条件原理触发条件对Spring Boot应用的影响示例代码优化建议结论F

jvm调优常用命令行工具详解

《jvm调优常用命令行工具详解》:本文主要介绍jvm调优常用命令行工具的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一 jinfo命令查看参数1.1 查看jvm参数二 jstack命令2.1 查看现场堆栈信息三 jstat 实时查看堆内存,gc情况3.1

mysql线上查询之前要性能调优的技巧及示例

《mysql线上查询之前要性能调优的技巧及示例》文章介绍了查询优化的几种方法,包括使用索引、避免不必要的列和行、有效的JOIN策略、子查询和派生表的优化、查询提示和优化器提示等,这些方法可以帮助提高数... 目录避免不必要的列和行使用有效的JOIN策略使用子查询和派生表时要小心使用查询提示和优化器提示其他常

SpringBoot操作spark处理hdfs文件的操作方法

《SpringBoot操作spark处理hdfs文件的操作方法》本文介绍了如何使用SpringBoot操作Spark处理HDFS文件,包括导入依赖、配置Spark信息、编写Controller和Ser... 目录SpringBoot操作spark处理hdfs文件1、导入依赖2、配置spark信息3、cont

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

JVM内存调优原则及几种JVM内存调优方法

JVM内存调优原则及几种JVM内存调优方法 1、堆大小设置。 2、回收器选择。   1、在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因为GC过后这个值是不会变化的,因此内存调优的时候要更多地使用JDK提供的内存查看工具,比如JConsole和Java VisualVM。   2、对JVM内存的系统级的调优主要的目的是减少