RDD与DSM的异同分析

  RDD是一种分布式的内存抽象,下表列出了RDD与分布式共享内存(Distributed Shared Memory,DSM)的对比。 在DSM系统[1]中,应用可以向全局地址空间的任意位置进行读写操作。 DSM是一种通用的内存数据抽象,但这种通用性同时也使其在商用集群上实现有效的容错性和一致性更加困难。
  RDD与DSM主要区别在于[2],不仅可以通过批量转换创建(即“写”)RDD,还可以对任意内存位置读写。 RDD限制应用执行批量写操作,这样有利于实现有效的容错。 特别是,由于RDD可以使用Lineage(血统)来恢复分区,基本没有检查点开销。 失效时只需要重新计算丢失的那些RDD分区,就可以在不同节点上并行执行,而不需要回滚(Roll Back)整个程序。
  

                  表  RDD与DSM的对比

  通过备份任务的复制,RDD还可以处理落后任务(即运行很慢的节点),这点与MapReduce类似,DSM则难以实现备份任务,因为任务及其副本均需读写同一个内存位置的
数据。
  与DSM相比,RDD模型有两个优势。 第一,对于RDD中的批量操作,运行时将根据数据存放的位置来调度任务,从而提高性能。 第二,对于扫描类型操作,如果内存不足以缓存整个RDD,就进行部分缓存,将内存容纳不下的分区存储到磁盘上。
  另外,RDD支持粗粒度和细粒度的读操作。 RDD上的很多函数操作(如count和collect等)都是批量读操作,即扫描整个数据集,可以将任务分配到距离数据最近的节点上。 同时,RDD也支持细粒度操作,即在哈希或范围分区的RDD上执行关键字查找。
  1)Transformations(变换)和Action(行动)算子维度。
  2)在Transformations算子中再将数据类型维度细分为:Value数据类型和Key-Value对数据类型的Transformations算子。 Value型数据的算子封装在RDD类中可以直接使用,KeyValue对数据类型的算子封装于PairRDDFunctions类中,用户需要引入importorg.apache.spark.SparkContext._才能够使用。 进行这样的细分是由于不同的数据类型处理思想不太一样,同时有些算子是不同的。
  

  

时间: 2024-10-08 10:27:47

RDD与DSM的异同分析的相关文章

RDD与DSM的区别

RDD(Resilient Distributed DataSet)弹性分布式数据集,是Spark的核心数据结构. DSM(Distributed Shared Memory)分布式共享内存,它是一种通用的内存数据抽象.在DSM中,应用可以向全局地址空间的任意位置进行读写操作. RDD与DSM主要区别在于,不仅可以通过批量转换创建(即"写")RDD,还可以对任意内存位置对写.RDD限制应用执行批量写操作,这样有利于实现有效的容错.特别是,由于RDD可以使用Lineage(血统)来恢复分

PHP中new static()与new self()的区别异同分析

本文实例讲述了PHP中new static()与new self()的区别异同,相信对于大家学习PHP程序设计能够带来一定的帮助. 问题的起因是本地搭建一个站.发现用PHP 5.2 搭建不起来,站PHP代码里面有很多5.3以上的部分,要求更改在5.2下能运行. 改着改着发现了一个地方 return new static($val); 这尼玛是神马,只见过 return new self($val); class A { public static function get_self() { re

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

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

浅谈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) ? 

Shell 编程基础之 [ 与 [[ 的异同

一.简介 [ 与 test 等价,是 bash 的内部命令,GNU/linux 系统的 coreutils 软件包通常带 /usr/bin/test 和 /usr/bin/[ 命令.如果我们不用绝对路径指 明,通常我们用的都是bash 自带的命令. [[ 是 bash 关键字(据说从2.02起引入对[[的支持) 二.异同分析 相同点 都支持算术比较 ("gt"."ge"."eq"."ne"."lt".&qu

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

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

spark基础知识

1.Spark是什么? UCBerkeley AMPlab所开源的类HadoopMapReduce的通用的并行计算框架. dfsSpark基于mapreduce算法实现的分布式计算,拥有HadoopMapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法. 2.Spark与Hadoop的对比(Spark的优势) 1.Spark的中间数据放到内存

最全的Spark基础知识解答

最全的Spark基础知识解答 时间:2016-12-12 12:00:50      阅读:19      评论:0      收藏:0      [点我收藏] 原文:http://www.cnblogs.com/sanyuanempire/p/6163732.html 一. Spark基础知识 1.Spark是什么? UCBerkeley AMPlab所开源的类HadoopMapReduce的通用的并行计算框架. dfsSpark基于mapreduce算法实现的分布式计算,拥有HadoopMa