RDD:A Fault-Tolerant Abstraction for In-Memory Cluster Computing

Abstract

       RDD是一个能让程序员以容错的方式在集群上运行内存计算任务的分布式内存的抽象概念。RDD主要被两种应用驱动所产生:迭代算法和交互式数据挖掘工具。在这两种情况下,将数据保存在内存中可以将性能提升一个数量级。为了有效地实现容错,RDDs基于对共享状态的粗粒度转换(transformations)而不是细粒度更新,提供了一种受限的共享内存形式。但是,我们展示了RDDs具有足够的表达能力来适用广泛的计算,包括用于迭代作业的最新专门编程模型(如Pregel),以及这些模型没有使用的新应用程序。我们在一个名为Spark的系统中实现了RDDs,我们通过各种用户应用程序和基准测试对其进行评估。

Introduction

现有的集群计算框架,如Hadoop、Dryad,缺乏对分布式内存的抽象和利用,因此它们对于在多次计算中重复使用中间结果的一类应用性能表现不佳。大多数现有框架使用中间结果的方式是将中间结果写入到可靠的外置存储系统中,这导致了如数据复制、磁盘IO、序列化等大量开销,严重影响作业计算时间。

Pregel和HaLoop针对重复使用的数据进行了优化,但它们只是针对特定的计算模式,并不适用于通用模式,如对于把临时性查询的数据加载到内存以方便对这些数据进行查询。

本文提出了resilient distributed datasets (RDDs)这一抽象概念,它为广泛应用的数据重复使用提供了方便。RDD是一个容错的、可并行的数据结构(弹性指的是RDD的容错能力),它让用户可以轻松的将中间结果保存在内存中、控制RDD的分区来优化数据放置和使用丰富的操作操纵RDD。

如何能够提供高效的容错是设计RDD的过程中面临的一个主要挑战。RDD提供粗粒度的transformations,通过血统图(lineage)可以重建RDD。虽然基于粗粒度转换的接口乍一看可能很有限,但是RDDs非常适合许多并行应用程序,因为这些应用程序自然地将相同的操作应用于多个数据项。我们认为,RDDs适应以前仅通过引入新框架才能满足的计算需求的能力是RDD抽象威力的最可靠证据。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值