Spark RDD 的外围原理
1、Spark 的外围概念是 RDD (resilientdistributed dataset),指的是一个只读的,可分区的分布式数据集,这个数据集的全副或局部能够缓存在内存中,在屡次计算间重用。
2、RDD 在形象上来说是一种元素汇合,蕴含了数据。它是被分区的,分为多个分区,每个分区散布在集群中的不同 Work 节点上,从而让 RDD 中的数据能够被并行操作。(分布式数据集)
3、RDD 通常通过 Hadoop 上的文件,即 HDFS 文件或者 Hive 表,来进行创立; 有时也能够通过 RDD 的本地创立转换而来。
4、传统的 MapReduce 尽管具备主动容错、均衡负载和可拓展性的长处,然而其最大毛病是采纳非循环式的数据流模型,使得在迭代计算式要进行大量的磁盘 IO 操作。RDD 正是解决这一毛病的形象办法。
RDD 最重要的个性就是,提供了容错性,能够主动从节点失败中恢复过来。即如果某个节点上的 RDD partition,因为节点故障,导致数据丢了,那么 RDD 会主动通过本人的数据起源从新计算该 partition。这所有对使用者是通明的。RDD 的 lineage 个性。
5、RDD 的数据默认状况下寄存在内存中的,然而在内存资源有余时,Spark 会主动将 RDD 数据写入磁盘。(弹性)
e8af68b7115e48207a63c74ac06cb7c3.png
一、为什么会有 Spark?
因为传统的并行计算模型无奈无效的解决迭代计算 (iterative) 和交互式计算 (interactive) 而 Spark 的使命便是解决这两个问题,这也是他存在的价值和理由.
二、Spark 如何解决迭代计算?
其次要实现思维就是 RDD, 把所有计算的数据保留在分布式的内存中. 迭代计算通常状况下都是对同一个 www.sangpi.com 数据集做重复的迭代计算,数据在内存中将大大晋升 IO 操作. 这也是 Spark 波及的外围: 内存计算.
三、Spark 如何实现交互式计算?
因为 Spark 是用 scala 语言实现的,Spark 和 scala 可能严密的集成, 所以 Spark 能够完满的使用 scala 的解释器, 使得其中的 scala 能够向操作本地汇合对象一样轻松操作分布式数据集.
四、Spark 和 RDD 的关系?
能够了解为:RDD 是一种具备容错性基于内存的集群计算形象办法,Spark 则是这个形象办法的实现.