RDD与DSM的区别

RDD(Resilient Distributed DataSet)弹性分布式数据集,是Spark的核心数据结构。

DSM(Distributed Shared Memory)分布式共享内存,它是一种通用的内存数据抽象。在DSM中,应用可以向全局地址空间的任意位置进行读写操作。

RDD与DSM主要区别在于,不仅可以通过批量转换创建(即“写”)RDD,还可以对任意内存位置对写。RDD限制应用执行批量写操作,这样有利于实现有效的容错。特别是,由于RDD可以使用Lineage(血统)来恢复分区,基本没有检查点开销。失效时只需要重新计算丢失的那些RDD分区,就可以在不同节点上并行执行,而不需要回滚整个程序。

与DSM相比,RDD模型有两个优势。第一,对于RDD中的批量操作,运行时将根据数据存放的位置调度任务,从而提高性能。第二面对与扫描类型操作,如果内存不足以缓存整个RDD,就进行部分缓存,将内存容纳不下的分区存储到磁盘上。

另外RDD支持粗粒度和细粒度的读操作。RDD上的很多函数操作(如count和collect等)都是批量读操作,即扫描整个数据集,可以将任务分配到距离数据最近的节点上。同时,RDD也支持细粒度操作,即在哈希或范围分区的RDD上执行关键字查找。

时间: 2024-08-29 19:31:58

RDD与DSM的区别的相关文章

RDD与DSM的异同分析

RDD是一种分布式的内存抽象,下表列出了RDD与分布式共享内存(Distributed Shared Memory,DSM)的对比. 在DSM系统[1]中,应用可以向全局地址空间的任意位置进行读写操作. DSM是一种通用的内存数据抽象,但这种通用性同时也使其在商用集群上实现有效的容错性和一致性更加困难. RDD与DSM主要区别在于[2],不仅可以通过批量转换创建(即“写”)RDD,还可以对任意内存位置读写. RDD限制应用执行批量写操作,这样有利于实现有效的容错. 特别是,由于RDD可以使用Li

sparkSQL中RDD——DataFrame——DataSet的区别

spark中RDD.DataFrame.DataSet都是spark的数据集合抽象,RDD针对的是一个个对象,但是DF与DS中针对的是一个个Row RDD 优点: 编译时类型安全 编译时就能检查出类型错误 面向对象的编程风格 直接通过类名点的方式来操作数据 缺点: 序列化和反序列化的性能开销 无论是集群间的通信,还是IO操作都需要对对象的结构和数据进行序列化和反序列化 GC的性能开销,频繁的创建和销毁对象,势必会增加GC开销 DataFrameDataFrame引入了schema和off-hea

RDD、DF、DS的区别与联系

RDD.DataFrame.DataSet的区别和联系 共性: 1)都是spark中得弹性分布式数据集,轻量级 2)都是惰性机制,延迟计算 3)根据内存情况,自动缓存,加快计算速度 4)都有partition分区概念 5)众多相同得算子:map flatmap 等等 区别: 1)RDD不支持SQL 2)DF每一行都是Row类型,不能直接访问字段,必须解析才行 3)DS每一行是什么类型是不一定的,在自定义了case class之后可以很自由的获 得每一行的信息 4)DataFrame与Datase

浅谈Spark(2) - RDD

Spark依赖于一个很特别的数据抽象,叫做弹性分布式数据集(resilient distributed datasets),也就是RDD,它是一个被集群分区(partitioned)的in-memory read-only对象.每一个RDD都是根据range(partitioning of consecutive records),或者是每条记录的key的hash值来进行分区.当然这两种不同的分区方法在特定的use case上有它自己的优点.例如利用hash值来分区,当不同的dataset共享一

Spark和RDD模型研究

1背景介绍 现今分布式计算框架像MapReduce和Dryad都提供了高层次的原语,使用户不用操心任务分发和错误容忍,非常容易地编写出并行计算程序.然而这些框架都缺乏对分布式内存的抽象和支持,使其在某些应用场景下不够高效和强大.RDD(Resilient Distributed Datasets弹性分布式数据集)模型的产生动机主要来源于两种主流的应用场景: ?  迭代式算法:迭代式机器学习.图算法,包括PageRank.K-means聚类和逻辑回归(logistic regression) ? 

Spark分布式计算和RDD模型研究

1背景介绍 现今分布式计算框架像MapReduce和Dryad都提供了高层次的原语,使用户不用操心任务分发和错误容忍,非常容易地编写出并行计算程序.然而这些框架都缺乏对分布式内存的抽象和支持,使其在某些应用场景下不够高效和强大.RDD(Resilient Distributed Datasets弹性分布式数据集)模型的产生动机主要来源于两种主流的应用场景: Ø  迭代式算法:迭代式机器学习.图算法,包括PageRank.K-means聚类和逻辑回归(logistic regression) Ø 

[Berkeley]弹性分布式数据集RDD的介绍(RDD: A Fault-Tolerant Abstraction for In-Memory Cluster Computing 论文翻译)

摘要: 本文提出了分布式内存抽象的概念--弹性分布式数据集(RDD,Resilient Distributed Datasets).它同意开发者在大型集群上运行基于内存的计算.RDD适用于两种应用,而现有的数据流系统对这两种应用的处理并不高效:一是迭代式算法,这在图应用和机器学习领域非经常见.二是交互式数据挖掘工具.这两种情况下.将数据保存在内存中可以极大地提高性能.为了有效地实现容错,RDD提供了一种高度受限的共享内存,即RDD在共享状态的时候是基于粗粒度的转换而不是细粒度的更新(换句话说就是

spark rdd df dataset

RDD.DataFrame.DataSet的区别和联系 共性: 1)都是spark中得弹性分布式数据集,轻量级 2)都是惰性机制,延迟计算 3)根据内存情况,自动缓存,加快计算速度 4)都有partition分区概念 5)众多相同得算子:map flatmap 等等 区别: 1)RDD不支持SQL 2)DF每一行都是Row类型,不能直接访问字段,必须解析才行 3)DS每一行是什么类型是不一定的,在自定义了case class之后可以很自由的获 得每一行的信息 4)DataFrame与Datase

Spark中的RDD和DataFrame

什么是DataFrame 在Spark中,DataFrame是一种以RDD为基础的分布式数据集,类似于传统数据库中的二维表格. RDD和DataFrame的区别 DataFrame与RDD的主要区别在于,DataFrame带有schema元信息,即DataFrame所表示的二维表数据集的每一列都带有名称和类型.使得Spark SQL得以洞察更多的结构信息,从而对藏于DataFrame背后的数据源以及作用于DataFrame之上的变换进行了针对性的优化,最终达到大幅提升运行时效率的目标. RDD,