gpt4 book ai didi

hadoop - 当中间输出不适合 Spark 中的 RAM 时会发生什么

转载 作者:可可西里 更新时间:2023-11-01 14:18:33 25 4
gpt4 key购买 nike

我刚开始学习 Spark。据我了解,Spark 将中间输出存储在 RAM 中,因此与 Hadoop 相比速度非常快。如果我错了,请纠正我。

我的问题是,如果我的中间输出是 2 GB 而我的空闲 RAM 是 1 GB,那么在这种情况下会发生什么?这可能是一个愚蠢的问题,但我还没有理解 Spark 的内存概念。谁能给我解释一下 Spark 的内存概念?

谢谢

最佳答案

这个问题问的是RDD persistence在 Spark 中。

You can mark an RDD to be persisted using the persist() or cache() methods on it. The first time it is computed in an action, it will be kept in memory on the nodes. Spark’s cache is fault-tolerant – if any partition of an RDD is lost, it will automatically be recomputed using the transformations that originally created it.

根据您为 RDD 设置存储级别的方式,可以配置不同的结果。例如,如果您将存储级别设置为 MEMORY_ONLY(这是默认存储级别),您的输出将尽可能多地存储在内存中,并即时重新计算 RDD 的其余部分。您可以像下面这样保留您的 RDD 并应用您的存储级别:rdd.persist(MEMORY_ONLY)

在您的示例中,将计算 1GB 的输出并将其存储在内存中,而另外 1GB 将在需要时计算以用于 future 的步骤。根据您的用例,还可以设置其他存储级别:

  1. MEMORY_AND_DISK -- 计算整个 RDD,但在必要时将一些内容溢出到磁盘
  2. MEMORY_ONLY_SER, MEMORY_AND_DISK_SER -- 与上面相同,但所有元素都是序列化的
  3. DISK_ONLY -- 将所有分区直接存储到磁盘
  4. MEMORY_ONLY_2, MEMORY_AND_DISK_2 -- 与上面相同,但分区被复制两次以获得更大的容忍度

同样,您必须查看您的用例以确定最佳存储级别。在某些情况下,RDD 的重新计算实际上可能比从磁盘加载所有内容更快。在其他情况下,快速序列化程序可以减少从磁盘中获取的数据,从而快速响应有问题的数据。

关于hadoop - 当中间输出不适合 Spark 中的 RAM 时会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33194626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com