即使在图形上调用检查点,GraphX中也会发生内存泄漏

时间:2017-01-03 14:58:17

标签: apache-spark memory-leaks spark-graphx

我在使用GraphX的火花流应用程序中面对OOM。

在尝试在一个简单的应用程序中隔离和重现问题时,我能够识别出似乎是两种内存泄漏的内容。
这些泄漏的细节以及如何重现可以在这里找到:
https://issues.apache.org/jira/browse/SPARK-19023 (不确定创建问题是提出此问题并要求输入的最佳方法吗?)

关于这2个泄漏,我目前的状态如下:

  • 对于第一次泄漏,我认为在https://github.com/apache/spark/pull/3545中描述的ZippedPartitionsRDDx中完成的同样修复也应该在MapPartitionsRDD中完成(即在clearDependencies方法中将f的引用设置为null)
  • 对于第二次泄漏,问题是即使在执行了图表上的检查点之后,对分区数组的一些引用仍保留在EdgeRDD中的局部变量“partitions_”内
    • 这是因为检查点被委托给EdgeRDD中嵌入的“partitionsRDD”(因此在partitionsRDD上的检查点期间,partitions_变量被正确地重置为null,而不是在EdgeRDD上)
    • 在我创建的JIRA问题的评论中,我描述了我是如何解决这个问题的(在EdgeRDDImpl中定义分区时不调用分区而是getPartitions),但我不认为此修复是有效的因为它似乎不是一个“强大的”。

你们有些人可以确认我对我所描述的2次泄漏的分析,并对拟议的修正案发表意见吗?

0 个答案:

没有答案