弹性分布式数据集-introduction.to.stochastic.processes.with.r
第二章 弹性分布式数据集 2.1 简介 在本章中,我们提出了弹性分布式数据集(RDD)的抽象概念,论文其余部分基于此建 立了一个通用的集群计算栈。RDD 对 MapReduce [36] 和 Dryad [61]提出的数据流编程模型 进行了扩展,这些模型是目前大数据分析使用最为广泛的编程模型。数据流系统取得了成功, 很重要的因素是用户通过使用比较高级的操作进行计算而无需担心任务分布和系统的容错 问题。然而,随着集群负载的增加,数据流系统在很多重要的应用场景出现了低效率问题, 比如迭代算法,交互式查询和流式处理。这引发了大量针对这些应用而定制的计算框架的发 展[72, 22, 71,95, 60,14, 2]。 我们的工作源于观察到很多数据流模型不适用的应用场景所共有的一个特征: 在计算 过程中都需要高效率的数据共享。例如,迭代算法,如 PageRank, K-means 聚类,或逻辑 回归,都需要进行多次访问相同的数据集;交互数据挖掘经常需要对于同一数据子集进行多 个特定的查询;而流式应用下则需要随时间对状态信息进行维护和共享。不幸的是,尽管数 据流框架支持大量的计算操作运算,但是它们缺乏针对数据共享的高效原语。在这些框架中, 实现计算之间(例如,两个的 MapReduce作业之间)数据共享只有一个办法,就是将其写到一 个稳定的外部存储系统,如分布式文件系统。这会引入数据备份、磁盘 I/O以及序列化,这 些都会引起大量的开销,从而占据大部分的应用执行时间。 事实上,在针对这些新应用而定制的框架进行研究的过程中,我们的确有发现它们会对 数据共享进行优化。例如,Pregel[72]是一种针对图迭代计算的系统,它会将中间状态保存 在内存中。而 HaLoop[22]是一种迭代 MapReduce 的系统,它会在各步骤中都以一种高效率 的方式对数据进行分区。不幸的是,这些框架只能支持特定的计算模式(例如 ,循环一系 列的 MapReduce 的步骤),并对用户屏蔽了数据共享的方式。它们不能提供一种更为通用的 抽象模式,例如,允许一个用户可以加载几个数据集到内存中并进行一些跨数据集的即时查 询。 相反,我们所提出的弹性分布式数据集(RDDs),这种全新的抽象模式令用户可以直接 控制数据的共享。RDD具有可容错和并行数据结构特征,这使得用户可以指定数据存储到硬 盘还是内存、控制数据的分区方法并在数据集上进行种类丰富的操作。他们提供了一个简单
- 粉丝: 12
- 资源: 4239
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助