【问题标题】:Doubts on RDD Spark对 RDD Spark 的质疑
【发布时间】:2017-03-13 18:00:59
【问题描述】:

我想了解以下关于 Spark Concept 的 RDD 的内容。

  1. RDD 是否只是一个概念,需要从 HDFS 存储复制某些节点的 RAM 中的数据以加快执行速度?

  2. 如果一个文件在集群中被拆分,那么对于单个文件,RDD 会从其他节点带来所有需要的数据吗?

  3. 如果第二点是正确的,那么它如何决定它必须执行哪个节点的 JVM?数据局部性如何在这里工作?

【问题讨论】:

    标签: hadoop apache-spark


    【解决方案1】:

    RDD 是 Apache Spark 的核心,它是分布式对象集合的数据抽象。它们是数据元素的不可变分布式集合,可以跨机器集群存储在内存或磁盘中。数据在集群中的机器上进行分区,这些机器可以与提供转换和操作的低级 API 并行操作。 RDD 具有容错性,因为它们跟踪数据沿袭信息以在发生故障时自动重建丢失的数据。参考:https://databricks.com/blog/2016/06/22/apache-spark-key-terms-explained.html

    如果文件在加载时跨集群拆分,则计算将在 RDD 所在的节点上完成。也就是说,在数据所在的位置(尽可能地)执行计算,以最大限度地减少执行洗牌的需要。有关 Spark 和 Data locality 的更多信息,请参考:https://databricks.gitbooks.io/databricks-spark-knowledge-base/content/performance_optimization/data_locality.html

    注意,关于Spark Research的更多信息,请参考:http://spark.apache.org/research.html;更具体地说,请参阅 Zaharia 等。 al. 的论文:弹性分布式数据集:容错抽象 内存中集群计算 (http://people.csail.mit.edu/matei/papers/2012/nsdi_spark.pdf)。

    【讨论】:

    • 谢谢@Denny,现在您已经说过“如果文件在集群中拆分,则在文件所在的节点上进行计算”......所以对于单个文件,RDD 的数量将是为文件的拆分所在的位置生成?
    • 我对我的回答做了一个小的编辑,指出在集群加载文件时,会生成许多 RDD,它们可以驻留在多个位置(例如,跨多个节点)。然后在数据驻留在内存中的位置执行计算。 HTH!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    • 2015-01-01
    • 1970-01-01
    • 2014-02-03
    • 2016-11-28
    • 2023-03-29
    • 2014-10-10
    相关资源
    最近更新 更多