zeppelin java.lang.OutOfMemoryError: GC overhead limit exceeded

zeppelin java.lang.OutOfMemoryError: GC overhead limit exceeded

我在 zeppelin 中遇到错误 org.apache.spark.SparkException:作业中止。 描述 原因:java.lang.OutOfMemoryError:GC 开销超出限制.

Spark 监控显示 GC 几乎占用了任务的所有时间:

我开始调查,发现问题不是 zeppelin 中的低效任务,而是我们如何 运行 产生火花。 Zeppelin提供了内置spark外置spark的使用方式(可以在conf/zeppelin-env中设置SPARK_HOME。 sh 或在 zeppelin gui 中)。当我使用内置 spark 时,一切正常,但对于外部 spark,我得到 GC overhead limit exceeded 相同任务的异常。

这两种 运行ning spark 的区别是什么?我该如何修复 GC overhead limit exceeded exception?

区别在于驱动程序的可用内存。我是通过 zeppelin-interpreter-spark.log: memorystore started with capacity ... 找到的。当我使用内置火花时,它是 2004.6 MB,对于外部火花,它是 366.3 MB

因此,我通过在 zeppelin gui 中设置 spark.driver.memory 来增加驱动程序的可用内存。它解决了问题。