【发布时间】:2017-03-13 18:00:59
【问题描述】:
我想了解以下关于 Spark Concept 的 RDD 的内容。
RDD 是否只是一个概念,需要从 HDFS 存储复制某些节点的 RAM 中的数据以加快执行速度?
如果一个文件在集群中被拆分,那么对于单个文件,RDD 会从其他节点带来所有需要的数据吗?
如果第二点是正确的,那么它如何决定它必须执行哪个节点的 JVM?数据局部性如何在这里工作?
【问题讨论】:
标签: hadoop apache-spark
我想了解以下关于 Spark Concept 的 RDD 的内容。
RDD 是否只是一个概念,需要从 HDFS 存储复制某些节点的 RAM 中的数据以加快执行速度?
如果一个文件在集群中被拆分,那么对于单个文件,RDD 会从其他节点带来所有需要的数据吗?
如果第二点是正确的,那么它如何决定它必须执行哪个节点的 JVM?数据局部性如何在这里工作?
【问题讨论】:
标签: hadoop apache-spark
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)。
【讨论】: