首页 > 代码库 > RDD与DSM的区别

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上执行关键字查找。

RDD与DSM的区别