【问题标题】:spark streaming driver process goes out-of-memory火花流驱动程序进程内存不足
【发布时间】:2015-09-07 13:57:24
【问题描述】:

我在 spark 流应用程序中遇到了驱动程序进程的问题。问题是驱动程序进程内存不足。主节点和工作节点都没有问题(它们连续几天都运行良好)。但即使提要非常有限(每 5 分钟两条消息,处理 1 条消息所需的时间不到 100 毫秒)一段时间后(例如周末),我在驱动程序进程中遇到 oom 错误。

这里有更多细节:

我有一个简单的 spark-streaming 应用程序,它使用来自 mqtt 数据源的事件并将这些事件存储在数据库中。我正在使用一个带有 1 个主节点和 2 个工作节点的小型 spark 集群。我有 1 个驱动程序进程(使用带有部署模式客户端的 spark-submit 开始)为集群提供服务。我正在使用 Java8 (Oracle VM) 在 Ubuntu 上运行 spark-1.4.1-bin-hadoop2.6。

我的驱动程序基本如下:

JavaReceiverInputDStream<String> messages = createInputDStream(ssc);
messages.mapPartitions(...).mapToPair(...).updateStateByKey(...).
  foreachRDD(rdd -> {
    rdd.foreach(ne -> {
    });
    return null;
  });

我已经进行了初步调查。如果我对驱动程序进程进行堆转储以收集实例的直方图 (jmap -histo),我通常会看到如下内容:

   1:         36388       81204168  [B
   2:        407486       32826432  [C
   3:         40849       25067224  [I
   4:        367245        8813880  scala.collection.immutable.$colon$colon
   5:        311000        7464000  java.lang.String
   6:        114294        7314816  org.apache.spark.storage.RDDInfo

我注意到,随着时间的推移,RDDInfo 对象的数量正在增加。堆转储显示大部分 RDDINInfo 对象保存在 JobProgressListener 的 stageIdToData 映射中。查看该类的代码,它似乎应该处理丢弃旧数据。因此,我已经设置了

spark.ui.retainedJobs      50
spark.ui.retainedStages    50

在 conf/spark-defaults.conf 中。但这没有帮助。从我的转储中,我看到这个 stageIdToData 映射包含 1897 个条目。鉴于上述配置设置,这对我来说看起来很奇怪。

我在这里做错了什么还是火花问题?

【问题讨论】:

  • 你解决了这个问题吗?我在检查点到 S3 时遇到了同样的问题。
  • 我不这么认为。那是很久以前的事了,我早就换工作了。

标签: apache-spark spark-streaming


【解决方案1】:

由于您使用的是updateStateByKey,因此您的信息流必须是checkpointing。尝试减少检查点间隔。

在您的内存快照中,您有一堆数组。谁在坚持这些?

【讨论】:

  • 是的,我正在检查点。减少间隔会不会只是推迟oom? [B 来自最终来自 netty 缓冲区的 ThreadLocal(来自 shuffle-server-0 线程)。 [C 来自 SparkContext 中的 JobProgressListener。 [我也来自 JobProgressListener。
【解决方案2】:

您是否在应用程序的驱动程序端做任何事情?比如获取数据并处理它,将其保存在内存中?

【讨论】:

  • 不,我不是。这是我的驱动程序循环。 asEvents(messages).foreachRDD(rdd -> { rdd.foreach(ne -> { }); return null; });
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多