结构化 Spark Streaming 抛出 OOM 异常

ven*_*ata 5 apache-spark spark-streaming spark-structured-streaming

我的结构化 Spark Streaming 作业在运行超过 24 小时后失败,并出现以下异常。

Exception in thread "spark-listener-group-eventLog" java.lang.OutOfMemoryError: GC overhead limit exceeded
        at java.math.BigInteger.<init>(BigInteger.java:1114)
        at java.math.BigInteger.valueOf(BigInteger.java:1098)
        at scala.math.BigInt$.apply(BigInt.scala:49)
        at scala.math.BigInt$.long2bigInt(BigInt.scala:101)
        at org.json4s.Implicits$class.long2jvalue(JsonDSL.scala:45)
        at org.json4s.JsonDSL$.long2jvalue(JsonDSL.scala:61)
Run Code Online (Sandbox Code Playgroud)

快速背景:我的结构化 Spark 流工作是将作为新文件(镶木地板)接收的事件提取到 Solr 集合中。因此,源是 8 个不同的 Hive 表(8 个不同的 hdfs 位置)接收事件,而接收器是一个 solr 集合。

配置:

Number Executors: 30
Executor Memory: 20 G
Driver memory: 20 G
cores - 5
Run Code Online (Sandbox Code Playgroud)

生成 hprof 转储文件并加载到 MAT 中以了解原因。转储文件看起来像。这是一个测试环境,数据流TPS(每分钟交易数)非常低,有时根本没有交易。

关于造成此问题的任何线索。不幸的是,我无法分享代码片段。对于那个很抱歉。

在此输入图像描述

在此输入图像描述