Spark OOM:java heap space,OOM:GC overhead limit exceeded解决方法

问题描述:

在使用spark过程中,有时会因为数据增大,而出现下面两种错误:

java.lang.OutOfMemoryError: Java heap space

java.lang.OutOfMemoryError:GC overhead limit exceeded

这两种错误之前我一直认为是executor的内存给的不够,但是仔细分析发现其实并不是executor内存给的不足,而是driver的内存给的不足。在standalone client模式下用spark-submit提交任务时(standalone模式部署时,默认使用的就是standalone client模式提交任务),我们自己写的程序(main)被称为driver,在不指定给driver分配内存时,默认分配的是512M。在这种情况下,如果处理的数据或者加载的数据很大(我是从hive中加载数据),driver就可能会爆内存,出现上面的OOM错误。

解决方法:

参考:http://spark.apache.org/docs/latest/configuration.html

方法一:在spark-submit中指定 --driver-memory memSize参数来设定driver的jvm内存大小,可以通过spark-submit --help查看其他可以设置的参数。

eg:

./spark-submit   --master spark://7070 \
  --class $MAIN_CLASS   --executor-memory 3G   --total-executor-cores 10   --driver-memory 2g   --name $APP_NAME   --conf "spark.executor.extraJavaOptions=-XX:+PrintGCDetails -XX:+PrintGCTimeStamps"   "$SPARK_APP_JAR" 

方法二:在spark_home/conf/目录中,将spark-defaults.conf.template模板文件拷贝一份到/spark_home/conf目录下,命名为spark-defaults.conf,然后在里面设置spark.driver.memory  memSize属性来改变driver内存大小。

eg:

 spark.master                       spark://master:7077
 spark.default.parallelism          10
 spark.driver.memory                2g
 spark.serializer                   org.apache.spark.serializer.KryoSerializer
 spark.sql.shuffle.partitions       50
时间: 2024-12-29 23:14:06

Spark OOM:java heap space,OOM:GC overhead limit exceeded解决方法的相关文章

OutOfMemoryError: Java heap space和GC overhead limit exceeded在Ant的Build.xml中的通用解决方案

这个只是一点点经验,总结一下,其中前两个对应第一个Error,后两个对应第二个Error,如果heap space还不够,可以再改大些. <jvmarg value="-Xms512m"/> <jvmarg value="-Xmx512m"/> <jvmarg value="-XX:-UseGCOverheadLimit"/> <jvmarg value="-XX:+UseConcMarkSwe

oozie: GC overhead limit exceeded 解决方法

1.异常表现形式 1)  提示信息 Error java.lang.OutOfMemoryError: GC overhead limit exceeded 2)提示出错 Error: Java heap space 问题产生原因: "if too much time is being spent in garbage collection: if more than 98% of the total time is spent in garbage collection and less th

java.lang.OutOfMemoryError:GC overhead limit exceeded填坑心得

我遇到这样的问题,本地部署时抛出异常java.lang.OutOfMemoryError:GC overhead limit exceeded导致服务起不来,查看日志发现加载了太多资源到内存,本地的性能也不好,gc时间消耗的较多.解决这种问题两种方法是,增加参数,-XX:-UseGCOverheadLimit,关闭这个特性,同时增加heap大小,-Xmx1024m.坑填了,but why? OOM大家都知道,就是JVM内存溢出了,那GC overhead limit exceed呢? GC ov

[转]java.lang.OutOfMemoryError:GC overhead limit exceeded

我遇到这样的问题,本地部署时抛出异常java.lang.OutOfMemoryError:GC overhead limit exceeded导致服务起不来,查看日志发现加载了太多资源到内存,本地的性能也不好,gc时间消耗的较多.解决这种问题两种方法是,增加参数,-XX:-UseGCOverheadLimit,关闭这个特性,同时增加heap大小,-Xmx1024m.坑填了,but why? OOM大家都知道,就是JVM内存溢出了,那GC overhead limit exceed呢? GC ov

java.lang.OutOfMemoryError:GC overhead limit exceeded

之所以写下来,是因为不想在下次遇到事有到处找,很多时候错误信息一样,但是导致的原因却有很多. 我试驾了一个虚拟机启动采纳数:-XX:-UseGCOverheadLimit 把原文链接写上,标示感谢: http://www.cnblogs.com/hucn/p/3572384.html 我遇到这样的问题,本地部署时抛出异常java.lang.OutOfMemoryError:GC overhead limit exceeded导致服务起不来,查看日志发现加载了太多资源到内存,本地的性能也不好,gc

Android:java.lang.OutOfMemoryError:GC overhead limit exceeded

Android编译:java.lang.OutOfMemoryError:GC overhead limit exceeded 百度好多什么JVM啊之类的东西,新手简单粗暴的办法: 1.在的Model的build.gradle中配置 android{ -- dexOptions { incremental true javaMaxHeapSize "4g" } -- } 2.在项目的gradle.properties中: org.gradle.daemon=true org.gradl

GC overhead limit exceeded解决

java.lang.OutOfMemoryError: GC overhead limit exceeded解决 一.异常如下:Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded 二.解释:JDK6新增错误类型.当GC为释放很小空间占用大量时间时抛出.一般是因为堆太小.导致异常的原因:没有足够的内存. 三.解决方案: 1.查看系统是否有使用大内存的代码或死循环.2.可以添加J

java.lang.OutOfMemoryError: GC overhead limit exceeded解决

异常表现 Exception in thread “main” java.lang.OutOfMemoryError: GC overhead limit exceeded 异常原因 JDK6新增错误类型.当GC为释放很小空间占用大量时间时抛出. 一般是因为堆太小.导致异常的原因:没有足够的内存. 解决方法 1.查看系统是否有使用大内存的代码或死循环. 2.可以添加JVM的启动参数来限制使用内存:-XX:-UseGCOverheadLimit

java 异常 java.lang.OutOfMemoryError: GC overhead limit exceeded 解决

一.异常如下: Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded 二.解释: JDK6新增错误类型.当GC为释放很小空间占用大量时间时抛出. 一般是因为堆太小.导致异常的原因:没有足够的内存. 三.解决方案: 1.查看系统是否有使用大内存的代码或死循环. 2.可以添加JVM的启动参数来限制使用内存:-XX:-UseGCOverheadLimit cnblogs - 问题处理