`
wbj0110
  • 浏览: 1602801 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

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_EXECUTOR_MEMORY < SPARK_DRIVER_MEMORY< yarn集群中每个nodemanager内存大小

 

总结一下Spark中各个角色的JVM参数设置:    

(1)Driver的JVM参数:
    -Xmx,-Xms,如果是yarn- client模式,则默认读取spark-env文件中的SPARK_DRIVER_MEMORY值,-Xmx,-Xms值一样大小;如果是yarn- cluster模式,则读取的是spark-default.conf文件中的spark.driver.extraJavaOptions对应的JVM 参数值。
    PermSize,如果是yarn-client模式,则 是默认读取spark-class文件中的JAVA_OPTS="-XX:MaxPermSize=256m $OUR_JAVA_OPTS"值;如果是yarn-cluster模式,读取的是spark-default.conf文件中的 spark.driver.extraJavaOptions对应的JVM参数值。
    GC 方式,如果是yarn-client模式,默认读取的是spark-class文件中的JAVA_OPTS;如果是yarn-cluster模式,则读取 的是spark-default.conf文件中的spark.driver.extraJavaOptions对应的参数值。
以上值最后均可被spark-submit工具中的--driver-java-options参数覆盖。

(2)Executor的JVM参数:
    -Xmx,-Xms,如果是 yarn-client模式,则默认读取spark-env文件中的SPARK_EXECUTOR_MEMORY值,-Xmx,-Xms值一样大小;如果 是yarn-cluster模式,则读取的是spark-default.conf文件中的 spark.executor.extraJavaOptions对应的JVM参数值。
    PermSize,两种模式都是读取的是spark-default.conf文件中的spark.executor.extraJavaOptions对应的JVM参数值。
    GC方式,两种模式都是读取的是spark-default.conf文件中的spark.executor.extraJavaOptions对应的JVM参数值。

(3)Executor数目及所占CPU个数
    如果是yarn-client模式,Executor数目由spark-env中的SPARK_EXECUTOR_INSTANCES指定,每个实例的数目由SPARK_EXECUTOR_CORES指定;如果是yarn-cluster模式,Executor的数目由spark-submit工具的--num-executors参数指定,默认是2个实例,而每个Executor使用的CPU数目由--executor-cores指定,默认为1核。

http://my.oschina.net/mkh/blog/330386

分享到:
评论

相关推荐

    kettle内存溢出(Java heap space)以及解决方法.docx

    这种错误通常表现为"Java heap space",意味着Java虚拟机(JVM)分配的内存不足以执行任务。 **Java堆空间的原理** Java堆是Java虚拟机中最大的一块内存区域,用于存储对象实例。当程序创建新的对象并分配给堆时,...

    poi大量数据读取gc内存溢出解决方案

    poi读取大量数据会造成gc内存溢出的报错,由于垃圾回收机制无法将大量的对象及时的回收,而这些对象又会保存在内存中,会导致内存不够用的情况,这时候我们就需要使用新的方法,读取为cvs即可.此解决方案可支持千万数据的...

    hive on spark mr 数据开发常见问题解决

    `java.lang.OutOfMemoryError: Java heap space`和`GC overhead limit exceeded`错误通常与内存管理有关。对于ORC文件写入时的内存溢出,可以通过设置以下参数来优化: - `hive.exec.orc.default.compress.size=...

    OutOfMemoryError Handbook

    OutOfMemoryError的8种经典案例,Java heap space、GC overhead limit exceeded、Permgen space、Metaspace、Unable to create new native thread、Out of swap space?、Requested array size exceeds VM limit、...

    OutOfMemoryError_8种典型案例分享

    当垃圾收集器在执行GC时,所花费的时间超过98%的时间用于回收不到2%的堆内存,超过一定的阈值时就会抛出GC overhead limit exceeded错误。这通常表明应用生成了太多的垃圾,虽然堆内存未满,但垃圾太多导致垃圾回收...

    myeclipse 解决内存的问题

    - `-XX:PermSize` 和 `-XX:MaxPermSize` 分别设置最小和最大永久代大小,如 `-XX:PermSize=128M -XX:MaxPermSize=256M`。 #### 四、实践操作示例 假设当前`eclipse.ini`文件内容如下: ``` -clean -showsplash ...

    关于java堆内存溢出的几种情况

    【情况二】:`java.lang.OutOfMemoryError: GC overhead limit exceeded` 这个错误是JDK6引入的新类型,当垃圾收集器为了释放少量空间而花费过多时间时抛出。通常由于堆内存过小,导致频繁且效率低下的垃圾回收。...

    xmemcached-1.2.6.2

    xmemcached-1.2.6.2

    java内存溢出原因

    - **错误日志**:`java.lang.OutOfMemoryError: Java heap space` 和 `java.lang.OutOfMemoryError: GC overhead limit exceeded` - **原因**:创建大量对象或者内存泄露可能导致Java堆空间不足。例如,大数据加载...

    R语言导入导出数据方法介绍

    讲述如何在R语言中导入导出数据的PPT,一共28张

    高手总结的9种OOM常见原因及解决方案.docx

    高手总结了9种OOM常见原因及解决方案,涵盖Java heap space、GC overhead limit exceeded、Permgen space、Metaspace、Unable to create new native thread等多种情况。 1. Java heap space Java heap space错误...

    Eclipse下使用ANT编译提示OutOfMemory的解决方法

    默认情况下,ANT可能没有配置足够的内存来应对这种情况,因此会出现“OutOfMemory”错误。 解决这个问题的关键在于增加ANT运行时的Java虚拟机(JVM)内存分配。在命令行环境中,我们可以通过设置`ANT_OPTS`环境变量...

    系统稳定性——OutOfMemoryError常见原因及解决方法1

    当JVM执行垃圾收集的时间超过98%,但只能回收不到2%的内存,并且这种情况连续发生5次,就会触发`java.lang.OutOfMemoryError:GC overhead limit exceeded`。这表明应用几乎耗尽了所有内存,且GC无法有效回收。 - ...

    Java堆内存又溢出了!教你一招必杀技(推荐)

    Java的内存管理机制主要集中在堆内存(Heap Memory)和非堆内存(Non-Heap Memory),这两部分内存的合理配置和管理对于优化应用程序的性能至关重要。 堆内存是Java对象的主要存储区域,它被划分为几个不同的区域,...

    无私奉献-jvm面试备战

    OutOfMemoryError 异常有多种场景,包括 java.lang.OutOfMemoryError: Java heap space、java.lang.OutOfMemoryError: GC overhead limit exceeded 和 java.lang.OutOfMemoryError: Direct buffer memory 等。

    FTB-Presents-Stoneblock-2

    如果您的游戏在启动时崩溃,并且崩溃日志中的行类似于Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded或Caused by: java.lang.OutOfMemoryError: Java heap space ,这是因为游戏的RAM不足了。...

    理论:第十三章:堆溢出,栈溢出的出现场景以及解决方案.docx

    2. OutOfMemoryError: GC overhead limit exceeded:超过 98% 的时间用来做 GC 并且回收了不到 2% 的堆内存。 3. OutOfMemoryError: Direct buffer memory:堆外内存。 4. OutOfMemoryError: unable to create new ...

    java内存泄露、溢出检查方法和工具.doc

    如果程序在运行过程中无法正确地释放不再使用的内存,就会导致内存泄露,进而可能引发内存溢出错误,如"java.lang.OutOfMemoryError: GC overhead limit exceeded"或"java.lang.OutOfMemoryError: Java heap space...

    SmaliInjector20170719

    若在 jar 转加 dex 的过程中出现 java.lang.OutOfMemoryError: GC overhead limit exceeded 的错误,请调大 main.bat 中的 -Xmx 和 -Xss 其它: ============================================================...

    weblogic常见故障总结.docx

    1.3 故障编号:OutOfMemoryError: GC Overhead limit exceeded 日志报错:当垃圾收集花费的时间超过98%且CPU利用率低于2%,JVM会抛出此错误。 排查思路:分析垃圾收集器的性能,检查是否有内存泄漏或者长时间运行的...

Global site tag (gtag.js) - Google Analytics