问题描述:

在使用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 \
--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
spark.driver.memory 2g
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.sql.shuffle.partitions

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

  1. JVM--你常见的jvm 异常有哪些? 代码演示:StackOverflowError , utOfMemoryError: Java heap space , OutOfMemoryError: GC overhead limit exceeded, Direct buffer memory, Unable_to_create_new_native_Thread, Metaspace

    直接上代码: public class Test001 { public static void main(String[] args) { //java.lang.StackOverflowErro ...

  2. java.lang.OutOfMemoryError:GC overhead limit exceeded解决方法

    异常如下:Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded 一.解 ...

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

    这个仅仅是一点点经验,总结一下,当中前两个相应第一个Error.后两个相应第二个Error,假设heap space还不够.能够再改大些. <jvmarg value="-Xms512 ...

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

    Tomcat异常信息: Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit excee ...

  5. oozie: GC overhead limit exceeded 解决方法

    1.异常表现形式 1)  提示信息      Error java.lang.OutOfMemoryError: GC overhead limit exceeded 2)提示出错      Erro ...

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

    我遇到这样的问题,本地部署时抛出异常java.lang.OutOfMemoryError:GC overhead limit exceeded导致服务起不来,查看日志发现加载了太多资源到内存,本地的性 ...

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

    我遇到这样的问题,本地部署时抛出异常java.lang.OutOfMemoryError:GC overhead limit exceeded导致服务起不来,查看日志发现加载了太多资源到内存,本地的性 ...

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

    在调测程序时报java.lang.OutOfMemoryError:GC overhead limit exceeded 错误 错误原因:在用程序进行数据切割时报了该错误.由于在本地执行数据切割测试的 ...

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

    Android编译:java.lang.OutOfMemoryError:GC overhead limit exceeded 百度好多什么JVM啊之类的东西,新手简单粗暴的办法: 1.在的Model ...

随机推荐

  1. telnet命令

    详细资料 telnet命令使用方法详解-telnet命令怎么用-win7没有telent怎么办 2017年07月26日 15:37:36 阅读数:1010 什么是Telnet? 对于Telnet的认识 ...

  2. JAMon监控web工程方法的调用性能

    JAMon简介 JAMon的全名是:Java Application Monitor.它是一个小巧的,免费的,高性能的,线程安全的性能监测工具. 它可以用来测定系统的性能瓶颈,也可以用来监视用户和应用 ...

  3. Snapdragon profiler

    这个debugger似乎看不了constant buffer 看不了memory but有个很神奇的功能 改shader直接在手机上显示结果 注意 需要unity build的时候勾 Script D ...

  4. Yii添加验证码

    添加带验证码的登陆: 1.先在模型modules下的LoginForm.php定义一个存储验证码的变量:public $verfyCode: 2.然后在rules()方法里定义:array('veri ...

  5. Docker核心技术

    Docker核心技术 1.cgroup 即controller group,其重要概念是子系统,首先挂载子系统,然后才有control group.例如cpu子系统,挂载至系统之后,创建一个cgrou ...

  6. 终端内容输出的同时保存到文件 tee

    突然有这个需求,一查用tee就能实现 用法:tee [选项]... [文件]... 将标准输入复制到每个指定文件,并显示到标准输出. -a, --append 内容追加到给定的文件而非覆盖 -i, - ...

  7. 用table表格来调整控件的格式

    由于想自己写一个web,所以也在学习html语言的一些东西,让我回忆起了大学时代曾对网页设计产生过兴趣,无奈那时候还没有自己的电脑,还常去网吧买个软盘下载一些图片,然后用fontpage做一些网页.后 ...

  8. Android自己定义(三)实现圆盘的百分比设置

    近期一直在学习自己定义控件,昨天看到群里有人问怎样怎样实现圆盘样式的显示,学有所用,于是乎就有了这篇博客 先上图,一目了然 这里的显示颜色以及颜色块的大小你都能够自己设置 这里设置了三种颜色,相应三种 ...

  9. lucene 范围搜索表达式(range expression)

    实际测试 lucene范围符号,大于等于或小于等于符号[],大于或小于符号{}   newIntRange或newLongRange一样     代码:           // test lucen ...

  10. Spark学习(一) 基本操作

    先来一个简单的spark小程序,这是官网上的小样例,目的就是统计spark以下的README文档中包括字母a和字母b的个数,然后 打印,代码例如以下: object BasicStandaloneAp ...