对RDD Spark的质疑



我想了解以下关于Spark Concept RDD的事情。

  1. RDD只是一个从HDFS存储中复制所需数据到某些节点的RAM以加速执行的概念吗?

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

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

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

如果文件在加载时跨集群分割,则在rdd所在的节点上进行计算。也就是说,计算在数据驻留的地方执行(尽可能地),以尽量减少执行洗牌的需要。有关Spark和Data局部性的更多信息,请参阅:https://databricks.gitbooks.io/databricks-spark-knowledge-base/content/performance_optimization/data_locality.html。

注意,有关Spark Research的更多信息,请参阅:http://spark.apache.org/research.html;更具体地说,请参考Zaharia等人的论文:弹性分布式数据集:一个容错的抽象

最新更新