Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“星火投球”;java.lang.OutOfMemoryError:超出GC开销限制;_Java_Garbage Collection_Apache Spark - Fatal编程技术网

“星火投球”;java.lang.OutOfMemoryError:超出GC开销限制;

“星火投球”;java.lang.OutOfMemoryError:超出GC开销限制;,java,garbage-collection,apache-spark,Java,Garbage Collection,Apache Spark,我有一个Spark作业抛出“java.lang.OutOfMemoryError:超出GC开销限制” 作业正在尝试处理文件大小为4.5G的文件 我尝试了以下spark配置: --num-executors 6 --executor-memory 6G --executor-cores 6 --driver-memory 3G 我试着增加更多的内核和执行器,这有时会起作用,但处理文件需要20多分钟 我能做点什么来提高性能吗?还是停止Java堆问题 您可以尝试增加驱动程序内存。如果您没有足够的

我有一个Spark作业抛出“java.lang.OutOfMemoryError:超出GC开销限制”

作业正在尝试处理文件大小为4.5G的文件

我尝试了以下spark配置:

--num-executors 6  --executor-memory 6G --executor-cores 6 --driver-memory 3G 
我试着增加更多的内核和执行器,这有时会起作用,但处理文件需要20多分钟

我能做点什么来提高性能吗?还是停止Java堆问题

  • 您可以尝试增加驱动程序内存。如果您没有足够的内存,您可以从执行器内存中减少它

  • 检查spark ui以查看调度程序延迟。您可以访问端口4040上的spark UI。如果调度程序延迟很高,通常,驱动程序可能会向执行器发送大量数据。这需要修正


  • 唯一的解决方案是微调配置

    根据我的经验,我可以对OOM说以下几点:

    • 仅当要多次使用RDD时才缓存它

    但是,如果需要缓存,那么考虑一下对资源和数据的分析和应用。

    • 如果集群有足够的内存,则将
      spark.executor.memory
      增加到最大值
    • 增加分区数以增加并行性
    • 增加用于缓存spark.storage.memoryFraction的专用内存。如果涉及大量的随机内存,那么请尽量避免或小心地分割分配
    • Spark的缓存功能Persist(内存和磁盘)是以额外处理(序列化、写入和读回数据)为代价提供的。在这种情况下,CPU使用率通常过高

    您是否尝试在运行时分配更多堆大小?请确定导致OOME的操作,并尝试以不同的方式执行。Post on SO for help.GC开销限制超出意味着JVM无法在GC暂停后回收任何可观的内存。这表明存在某种内存泄漏-通过调整堆大小参数
    spark.executor.memory
    ,您可能会很幸运。我不认为这是真正由您的--executor内存参数设置的。看看这篇文章:你也在缓存RDD吗???@Mark-尝试过了,但问题现在出现了,并且得到了解决。我已经尝试增加驱动程序内存,但没有任何乐趣。没有计划延误。作业在5-10秒内开始运行。