【问题标题】:Apache Spark: User Memory vs Spark MemoryApache Spark:用户内存与 Spark 内存
【发布时间】:2017-10-01 01:55:45
【问题描述】:

我正在构建一个 Spark 应用程序,我必须在其中缓存大约 15 GB 的 CSV 文件。我在这里了解了 Spark 1.6 中引入的新 UnifiedMemoryManager

https://0x0fff.com/spark-memory-management/

它还显示了这张图片:

作者在User MemorySpark Memory 之间有所不同(又分为Storage and Execution Memory)。据我了解,Spark Memory 可以灵活地执行(随机播放、排序等)和存储(缓存)内容 - 如果需要更多内存,它可以从另一部分使用它(如果尚未完全使用)。这个假设正确吗?

用户内存是这样描述的:

用户内存。这是分配 Spark Memory 后剩余的内存池,完全取决于您以您喜欢的方式使用它。您可以在那里存储您自己的数据结构,用于 RDD 转换。例如,您可以通过使用 mapPartitions 转换维护哈希表来重写 Spark 聚合以运行此聚合,这将消耗所谓的用户内存。 [...] 再次,这是用户内存,它完全取决于您将在此 RAM 中存储什么以及如何存储,Spark 完全不考虑您在那里做什么以及您是否尊重此边界。在您的代码中不遵守此边界可能会导致 OOM 错误。

我如何访问这部分内存或 Spark 如何管理这部分内存?

为了我的目的,我只需要有足够的存储内存(因为我不做随机播放、加入等操作)?那么,我可以将spark.memory.storageFraction 属性设置为1.0 吗?

对我来说最重要的问题是,用户内存呢?为什么呢,特别是为了我上面描述的目的?

当我将程序更改为使用一些自己的类时,使用内存是否有区别,例如RDD<MyOwnRepresentationClass> 而不是 RDD<String>

这是我的代码 sn-p(在基准应用程序中从 Livy Client 多次调用它。我正在使用带有 Kryo 序列化的 Spark 1.6.2。

JavaRDD<String> inputRDD = sc.textFile(inputFile);

// Filter out invalid values
JavaRDD<String> cachedRDD = inputRDD.filter(new Function<String, Boolean>() {
    @Override
    public Boolean call(String row) throws Exception {
        String[] parts = row.split(";");

        // Some filtering stuff

        return hasFailure;
    }
}).persist(StorageLevel.MEMORY_ONLY_SER());

【问题讨论】:

    标签: caching apache-spark memory memory-management rdd


    【解决方案1】:

    统一内存管理器

    1) 在 HEAP 上:对象在 JVM 堆上分配并由 GC 绑定。

    2)OFF HEAP:对象通过序列化分配在JVM之外的内存中,由应用程序管理,不受GC约束。这种内存管理方式可以避免频繁的GC,但缺点是需要自己编写内存分配和内存释放的逻辑。

    在堆上:

    Storage Memory:主要用于存储Spark缓存数据,如RDD缓存、Broadcast变量、Unroll数据等。

    Execution Memory/shuffle memory:主要用于存储Shuffle、Join、Sort、Aggregation等计算过程中的临时数据。

    用户内存:主要用于存储RDD转换操作所需的数据,例如RDD依赖的信息。

    Reserved Memory:为系统保留的内存,用于存储Spark的内部对象。

    堆外内存:- 1)存储内存(洗牌内存) 2) 执行内存

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-09
      • 2014-12-21
      • 1970-01-01
      • 1970-01-01
      • 2018-09-10
      • 2015-07-08
      相关资源
      最近更新 更多