Spark java.lang.outofmemoryerror gc overhead limit exceeded 与 spark OOM:java hea

阅读: 评论:0

Spark java.lang.outofmemoryerror gc overhead limit exceeded 与 spark OOM:java hea

Spark java.lang.outofmemoryerror gc overhead limit exceeded 与 spark OOM:java hea

2019独角兽企业重金招聘Python工程师标准>>>

Spark java.lang.outofmemoryerror gc overhead limit exceeded 与 spark OOM:java hea 博客分类: spark

问题描述:

在使用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错误。

解决方法:

参考:.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 &#aJavaOptions=-XX:+PrintGCDetails -XX:+PrintGCTimeStamps" "$SPARK_APP_JAR" 
 

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

eg:

 spark.master spark://master:7077 spark.default.parallelism                 2g spark.serializer org.apache.spark.serializer.KryoSerializer spark.sql.shuffle.partitions 50 

转载于:

本文发布于:2024-01-29 12:11:33,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170650149715192.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:outofmemoryerror   gc   lang   Spark   java
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23