一般来讲,对于陌生的名词,大家的第一个反应都是“What is it?”。
RDD是Spark的核心内容,在Spark的官方文档中解释如下:RDD is a fault-tolerant collection of elements that can be operated on in parallel。由此可见,其中有两个关键词:fault-tolerant & in parallel。首先,容错性是RDD的一个重要特性;其次,它是并行计算的数据。
RDD的中文解释为:弹性分布式数据集,全称Resilient Distributed Datasets,宾语是dataset,即内存中的数据库。RDD只读、可分区,这个数据集的全部或部分可以缓存在内存中,在多次计算间重用。所谓弹性,是指内存不够时可以与磁盘进行交换。这涉及到了RDD的另一特性:内存计算,就是将数据保存到内存中。同时,为解决内存容量限制问题,Spark为我们提供了最大的自由度,所有数据均可由我们来进行cache的设置,包括是否cache和如何cache。
(关于cache的设置以及Spark的一些基础概念,这里解释得很详细。)
如果看到这里,你的思维里对RDD还是没有任何概念的话,或许可以参照我的形象化理解:RDD,就是一个被武装起来的数据集。
主体:
a、由源数据分割而来,源码中对应splits变量;
武器有下:
b、数据集体内包含了它本身的“血统”信息,即dependencies变量,存储着它的父RDD及两者关系;
c、计算函数,即其与父RDD的转化方式,对应源码中的iterator(split) & compute函数;
d、一些关于如何分块以及如何存放位置的元信息,eg:partitioner & preferredLocations。
有了这些武器,RDD的容错机制也就显而易见了。容错,顾名思义就是在存在故障的情况下,计算机系统仍能正常工作。容错通常有两种方式:checkpoint(数据检查点) & logging update(记录更新),RDD采用的是logging update。
Checkpoint意味着要在各个机器间复制大数据,花费会很高,这种拷贝操作相当缓慢,而且会消耗大量的存储资源,因此deserted。Logging update,仅支持粗颗粒度变换。也就是说,仅记录在单个块上执行的单个操作,然后创建某个RDD的变换序列存储下来,数据丢失时,就可通过“血统”重新计算,恢复数据。
Nevertheless,血缘链(变换序列)变得很长时,建议用户此时建立一些数据检查点加快容错速度。(saveAstextFile方法手动设置)
其实相比Spark的架构,网上关于RDD的一些介绍,包括设计理念、容错、内存计算等都已经比较详细了,因此我在这里只是写写自己对RDD这个概念的理解,欢迎批评指正~
Ps:不喜望喷~
PPs:如果我解释得不够清楚,附上一些websites,希望可以帮到你们
RDD的原理:
https://github.com/jackfengji/test_pro/wiki/RDD%E7%9A%84%E5%8E%9F%E7%90%86
源码详解RDD:http://www.tuicool.com/articles/zQrume
RDD的依赖关系(源码):http://www.tuicool.com/articles/U7FVBfY
相关推荐
### Spark RDD 基础论文知识点解析 #### 一、引言与背景 - **Spark RDD 的起源**:本文档介绍的是 Spark 中的核心抽象概念——弹性分布式数据集(Resilient Distributed Datasets, RDD),这一概念由加州大学...
Spark 的RDD模型旨在平衡易用性、性能和容错性,使得开发者能够方便地编写大规模数据处理应用,同时确保在集群环境中运行的稳定性和可靠性。通过RDDs,Spark 成为了大数据处理领域的一个重要工具,被广泛应用于机器...
- **缓存**:如果数据经常被用到,可以考虑将 RDD 缓存到内存或磁盘,以减少重复的 I/O 操作。 - **批量操作**:批量写入和删除可以显著提高性能,避免频繁的小规模操作。 7. **错误处理与容错** Spark 和 HBase...
Spark分布式计算和RDD模型是大数据处理领域的重要技术,它针对MapReduce等传统框架在处理迭代式算法和数据重用方面的不足进行了创新。RDD(Resilient Distributed Datasets)是Spark的核心概念,它是一种弹性分布式...
Spark分布式计算和RDD模型是大数据处理领域的重要技术,它针对MapReduce等传统框架存在的不足,尤其是在数据重用和效率方面的问题进行了创新。RDD(Resilient Distributed Datasets)是Spark的核心概念,它是一种...
在Spark中,RDD(Resilient Distributed Datasets)是基本的数据抽象,它是不可变、分区的记录集合,可以在集群的不同节点上并行操作。本篇主要讲解RDD的行动算子,包括`reduce`、`collect`、`count`、`first`、`...
- **弹性分布式数据集(RDD)**:这是 Spark 的核心概念之一,RDD 是一种只读的数据分区集合,支持容错,并且能够通过转换操作和行动操作进行操作。 - **容错性**:Spark 通过维护 RDD 之间的依赖关系来实现自动的...
在Spark 2.2.0中,shuffle管理得到了优化,减少了网络传输和磁盘I/O,提高了性能。 7. **动态资源调度**:Spark 2.2.0引入了动态资源分配,允许作业根据可用资源自动调整执行器的数量,提高集群资源利用率。 8. **...
在Scala中使用Spark,可以通过DataFrame或RDD API处理大量时间序列数据,并利用Spark的并行计算能力加速模型训练和预测过程。 四、Spark ARIMA实现 在Spark上实现ARIMA模型,通常需要借助专门的库,如`sparkts`库,...
Spark的高效性能得益于其内存计算能力,它能够在内存中存储和处理数据,显著减少I/O操作,提高处理速度。 Spark-book压缩包可能包含了更深入的Spark教程或者示例代码,涵盖更多Spark的功能和使用场景,如数据加载、...
Spark的核心理念是基于内存计算,通过在内存中存储数据,减少磁盘I/O,从而提高数据处理速度。它引入了弹性分布式数据集(RDD,Resilient Distributed Dataset),这是一种不可变、分区的数据集合,可以在集群中并行...
RDD是Spark的核心概念,它是一个不可变、分区的记录集合,分布在集群的不同节点上。RDD提供了一种容错机制,当某部分数据丢失时,可以通过重新计算丢失的部分恢复。用户可以使用Spark API创建RDD,或者通过读取HDFS...
1. **Spark Core**:这是Spark的基础,提供了分布式任务调度、内存管理、故障恢复和基本的I/O功能。SparkContext是Spark程序的入口点,通过它连接到Spark集群并创建RDD(弹性分布式数据集)。 2. **RDD(Resilient ...
**弹性分布式数据集(Resilient Distributed Dataset, RDD)**是Spark的核心抽象之一。RDD是一个不可变的、分区的数据集合,可以在集群的不同节点上并行处理。它支持两种类型的操作:转换(Transformations)和动作...
Spark通过在内存中存储中间结果,减少了磁盘I/O,实现了快速迭代计算。 2. **Resilient Distributed Datasets (RDD)**:RDD是Spark的核心抽象,它是一个不可变、分区的数据集,可以在集群中进行并行操作。RDD具有...
1. Resilient Distributed Dataset (RDD):Spark的核心数据结构,是不可变、分区的元素集合,具有容错性。Java API提供了创建和操作RDD的方法。 2. DataFrame:基于DataFrame的API提供了更高级别的抽象,它是一个表...
Spark之所以与众不同,是因为它的许多核心理念源自学术研究论文,并在2013年成为Apache孵化器项目的一部分后获得了快速发展,现已成为Apache软件基金会中最主要的三大分布式计算系统开源项目之一,其它两个是Hadoop...
本实践使用的数据集是一个小规模的文本数据,包含多行文本,如"How nice I love Spark I love Hadoop How good Hadoop is good Spark is fast"。通过Spark进行词频统计,可以找出数据集中出现最频繁的词语。 总结来...
#### 一、Spark 是什么? Spark 是一款开源的大规模数据处理框架,它能够提供高效、快速的数据处理能力。相较于传统的 MapReduce 架构,Spark 的最大特点是能够将中间计算结果存储在内存中,极大地提高了数据处理的...