spark-OutOfMemory:GC overhead limit exceeded 解决

今天准备跑自己的spark程序,但是运行过程中遇到了OutOfMemory:GC overhead limit exceeded的错误。

原以为是数据集太大,google了一番,以为是内存不够了,但是在webui一看其实数据集好像也不是很大,但是还是尝试提高了内存配置,通过提高spark.executor.memoryspark.shuffle.memoryFraction,降低spark.storage.memoryFraction,来提高机器可用的堆空间。

再次运行发现,问题依旧。在苦恼中找到Spark User Mailing List的一个问答帖,有人和我遇到了同样的问题。在帖子里发现了一个新的解释:executor core数量太多,导致了多个core之间争夺gc时间以及资源(应该主要是内存资源),最后导致大部分的时间都花在了gc上。

根据他的建议,我把core数量从4调到了1(也是挺极端的,真是为了成功运行,我拼了),方法是:由于我是spark standalone集群模式,所以直接编辑conf/spark-env.sh中的SPARK_EXECUTOR_CORES

运行,成功了。

真是不可思议,本来并行是为了提高速度和效率,但是这里却反而导致了运行失败。具体原因其实还不清楚,关于jvm的gc我也不甚了解,甚至也是今天我才尝试设置spark的其他环境参数,还是要多加学习啊!

时间: 2024-10-09 09:42:19

spark-OutOfMemory:GC overhead limit exceeded 解决的相关文章

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

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提交任务时(

spark出现GC overhead limit exceeded和java heap space

spark执行任务时出现java.lang.OutOfMemoryError: GC overhead limit exceeded和java.lang.OutOfMemoryError: java heap space 最直接的解决方式就是在spark-env.sh中将下面两个参数调节的尽量大 export SPARK_EXECUTOR_MEMORY=6000M    export SPARK_DRIVER_MEMORY=7000M 注意,此两个参数设置需要注意大小顺序: SPARK_EXEC

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 - 问题处理

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

eclipse   Unable to execute dex: GC overhead limit exceeded GC overhead limit exceeded解决办法

有个老APP在eclipse上,以前打包都很顺利,今天好几次就是打不出来包,总是报错,而且eclipse还经常未响应,非常恶心这软件. 后来仔细看了下英文报错内容,大概意思是:无法执行dex,GC空间不足,超额 网上查了些资料找到了解决办法,需要对eclipse做相关配置,增加空间,如下: 1.关闭Eclipse 打开D:\eclipse\eclipse.ini -startup plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.

Unable to execute dex: GC overhead limit exceeded

Android打包时下面的错误: Unable to execute dex: GC overhead limit exceeded GC overhead limit exceeded 解决的方法: 1.关闭Eclipse 打开D:\eclipse\eclipse.ini -startup plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar --launcher.library plugins/org.eclipse.eq

Spark 1.4.1中Beeline使用的gc overhead limit exceeded

最近使用SparkSQL做数据的打平操作,就是把多个表的数据经过关联操作导入到一个表中,这样数据查询的过程中就不需要在多个表中查询了,在数据量大的情况下,这样大大提高了查询效率. 我启动了thriftserver,然后通过beeline去连接thriftserver, 打平操作进行的很顺利,但是在执行groupby操作的时候beeline报了一个错误:gc overhead limit exceeded 我分析可能是thriftserver报的错误.但是查看了thriftserver的日志没有任