RDD 的垃圾收集

Garbage Collection of RDDs

我有一个关于 spark 的基本问题。 Spark 维护 RDD 的沿袭以在少数 RDD 损坏的情况下重新计算。所以 JVM 无法将其作为孤立对象找到。那么 RDD 的垃圾回收是如何以及何时发生的?

可以使用

配置 RDD 存储的内存
"spark.storage.memoryFracion" property.

如果超过此限制,旧分区将从内存中删除。

我们可以将它设置为 0 到 1 之间的值,描述执行器 JVM 内存的哪一部分将专门用于缓存 RDD。默认值为 0.66

假设我们有 2 GB 内存,那么默认情况下我们将获得 0.4 * 2g 内存用于您的堆,0.66 * 2g 用于 RDD 存储。

我们可以配置 Spark 属性来打印有关 GC 行为的更多详细信息:

spark.executor.extraJavaOptions设置为包含

“-verbose:gc -XX:-PrintGCDetails -XX:+PrintGCTimeStamps”

万一您的任务变慢并且您发现您的 JVM 频繁收集垃圾或 运行 内存不足,降低“spark.storage.memoryFracion”值将有助于减少内存消耗。

更多详细信息,请查看以下参考资料:

http://spark.apache.org/docs/1.2.1/tuning.html#garbage-collection-tuning