Spark参数调节之-GC【降低OOM概率】

Spark参数调节之-GC【降低OOM概率】

​ Spark SQL用于数据处理中经常会用参数调节来提升数据的执行效率,降低数据处理所需要的时间,基于

当前Spark 3.0的优越性,我们默认大部分公司已经将Spark的版本升级为3.0以上的版本

​ Spark3.0版本兼容的java版本包括java8和java11,集群中配置的java环境基于java8还是java11会对Spark运行时动的JVM的垃圾回收方式造成影响,这是因为在java9之后将GC的默认方式由Parallel GC切换为G1GC,但是实际上java8便已经开始了对G1GC的支持,如果我们集群的java环境为Java8,可以通过一个参数可以实现对于java的

GC模式的调节,来提升当数据量较大时GC的处理效率,降低任务发生OOM的概率

​ 由GC导致的OOM表现为:java.lang.OutOfMemoryError: GC overhead limit exceeded

参数:–conf spark.executor.extraJavaOptions

​ 这个参数只能在提交Spark作业时通过 spark-submit 命令的 --conf 选项来配置,或者在Spark应用程序的代码中通过 SparkConf 对象来设置。这是因为该参数用于控制Spark Executor的JVM行为,需要在Executor进程启动之前就确定好,不能通过SET 命令在Spark SQL中设置,SET 是用来处理SQL执行时的配置参数。

使用方式:

spark-submit方式

spark-submit \
  --class YourMainClass \
  --conf "spark.executor.extraJavaOptions=-XX:+UseG1GC" \
  your-spark-app.jar

SparkConf方式

from pyspark.sql import SparkSession

spark = SparkSession.builder \
    .appName("MyApp") \
    .config("spark.executor.extraJavaOptions", "-XX:+UseG1GC") \
    .getOrCreate()

​ G1GC和Parallel GC本身都适用于需要较大内存的场景,但是G1GC的优势在于通过策略提升了内存回收的效率,进而降低了内存溢出的风险,同时也减少了任务运行的耗时,如果在Spark UI中发现GC时间比较长,通过Spark UI确认JAVA version,如果是JAVA8,可以尝试通过修改GC方式来解决这个问题。

​ 如何确定依赖的JAVA版本
确定依赖的JAVA版本
​ 在哪里看到GC的时长
查看GC时长

​ Parallel GC和G1GC都是针对大吞吐的场景,也是大数据场景下的常用GC方式,如果没有特别的优化需求,使用默认的GC方式就可以适配大多数的数据处理场景

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值