问题描述: 在使用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
spark执行任务时出现java.lang.OutOfMemoryError: GC overhead limit exceeded和java.lang.OutOfMemoryError: java heap space 最直接的解决方式就是在spark-env.sh中将下面两个参数调节的尽量大 export SPARK_EXECUTOR_MEMORY=6000Mexport SPARK_DRIVER_MEMORY=7000M 注意,此两个参数设置需要注意大小顺序: SPARK_EXECUTOR_MEMORY < SPARK_DRIVER_MEMORY< yarn集群中每个nodemanager内存大小
总结一下Spark中各个角色的JVM参数设置: (1)Driver的JVM参数: (2)Executor的JVM参数: (3)Executor数目及所占CPU个数
|
- 浏览: 119143 次
- 性别:
- 来自: 成都
相关推荐
java解决nested exception is java.lang.OutOfMemoryError Java heap space 解决OOM
Android编译gradle.properties文件及说明, 解决Android gradle编译错误OOM:java heap space
2.数据不平衡导致内存溢出: 数据不平衡除了有可能导致内存溢出外,也有可能导致性能的问题,解决方法和上面说的类似,就是调用repartition重新分区
oom:https的镜像
Java解析、生成Excel比较有名的框架有Apache poi、jxl。
使用了俩种方式读excel文件,easyexcel和xlsx-Streamer ,性能接近,easyExcel快10来秒
EasyExcel 因为公司不方便用QQ,所以建议加钉钉群JAVA解析Excel工具EasyExcel 但他们都存在一个严重的问题就是非常的耗电量,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是Java解析,生成...
Exception in thread http-nio-8080-exec-1027 java.lang.OutOfMemoryError: Java heap space Exception in thread http-nio-8080-exec-1031 java.lang.OutOfMemoryError: Java heap space 看线程名称应该是tomcat的...
IBM开发的强大的内存dump分析工具,IBM heapAnalyzer是通过分析OOM后的Java heap dump文件的,通过对dump文件的分析找到可能泄露的点,这是IBM官方的工具,它对堆栈调用做了可视化的转换,可以更直观地看到调用关系...
icinga2_check_oom Icinga2 / Nagios检查内存不足问题。 ATM会检查所有dmesg输出。 如果要检查后再次使其变为绿色,则需要运行dmesg -c。 usage: check_oom.py [-h] [-m {warning,critical,default}] [-v]Check for ...
全面分析安卓内存OOM内存泄露问题,分析解决方法。安卓内核内核剖析 。
node-oom-heapdump 即将在发生“内存不足”错误之前创建V8堆快照的节点模块。 它还可以根据请求创建堆转储和CPU配置文件,例如“ v8-profiler”,但是这样做是在进程外进行的,因此不会干扰主进程的执行。 在Node.js...
内存不足OOM java.lang.OutOfMemoryError.
4. 运行时数据区 ...4.1 堆 (heap) 堆在虚拟机中是一块共享区域, ...java.lang.OutOfMemoryError: Java heap space 代码演示 /** * 演示堆溢出 * 设置堆 大小为:-Xms10m -Xmx10m */ public class HeapDemo { privat
IBMHeapAnalyzer是一个非常重要的JAVA程序bug分析工具。它可以帮助我们分析哪些原因可能导致了程序的内存溢出...IBM heapAnalyzer是通过分析OOM后的Java heap dump文件的,通过对dump文件的分析找到内存可能泄露的点。
Java内存溢出之PermGen_OOM
OOM “面向对象的建模”的存储库-2UIB
问题原因分析:使用ScriptEngine.eval每次都会对脚本进行编译,生成一个新的类,被GroovyClassLoader加载,大量执行计算后,将导致被加载的类数量不断增加,最终OOM。 解决办法:对计算的表达式expression进行预...
IBM开发的强大的内存dump分析工具,,IBM heapAnalyzer是通过分析OOM后的Java heap dump文件的,通过对dump文件的分析找到内存可能泄露的点
事件驱动解析是把文件转换成xml,然后一边读取一边解析,这样就对内存的占用就会很少,可以很好的处理poi出现OOM的问题。 maven添加需要的jar包 <groupId>org.apache.poi <artifactId>poi <version>3.15 ...