问题描述:
在使用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 http://blog.csdn.net/gaokao2011/article/details/51707163
相关推荐
java.lang.OutOfMemoryError: Java heap space 解决方法
搜集整理关于java错误处理:java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMemoryError: Java heap space 资料整理
Caused by: java.lang.OutOfMemoryError: PermGen space解决方案, avax.servlet.ServletException: java.lang.OutOfMemoryError: PermGen space at org.apache.jasper.servlet.JspServlet.service(JspServlet.java...
java.lang.OutOfMemoryError: PermGen space 解决方案
报错 java.lang.OutOfMemoryError: PermGen space 报错 java.lang.OutOfMemoryError: Java heap 启动报错java.lang.ClassNotFoundException: 1catalina.org.apache.juli.FileHandler JAVA_OPTS="-server -Xms800m ...
java解决nested exception is java.lang.OutOfMemoryError Java heap space 解决OOM
Tomcat内存溢出的解决方法(java.util.concurrent.ExecutionException:java.lang.OutOfMemoryError),内附解决方案!
记录java.lang.OutOfMemoryError:Java heap space的情况 文章内容: 一.问题描述+原因分析+解决方案 二.JVM调优说明 三.Tomcat添加到jvisualvm监控
NULL 博文链接:https://geyubin.iteye.com/blog/779330
Myeclipse下java.lang.OutOfMemoryError Java heap space的解决
Tomcat给我的java.lang.OutOfMemoryError: PermGenTomcat给我的java.lang.OutOfMemoryError: PermGenTomcat给我的java.lang.OutOfMemoryError: PermGenTomcat给我的java.lang.OutOfMemoryError: PermGenTomcat给我的...
java.lang.OutOfMemoryError: PermGen space及其解决方法,解决项目太大tomcat内存溢出
java.lang.OutOfMemoryError处理错误
内存不足OOM java.lang.OutOfMemoryError.
java.lang.OutOfMemoryError: Java heap space 解决方法
编译时出现java.lang.OutOfMemoryError Java heap space异常.
若在 jar 转加 dex 的过程中出现 java.lang.OutOfMemoryError: GC overhead limit exceeded 的错误,请调大 main.bat 中的 -Xmx 和 -Xss 其它: ============================================================...
tomcat内存溢出解决办法,错误信息:java.lang.OutOfMemoryError:PermGen space 参考该文档可快速解决内存溢出的问题,服务器:tomcat
讲述如何在R语言中导入导出数据的PPT,一共28张