随着处理器提升速度下降和数据量的不断增长,很多公司和组织(既有互联网公司也有传统的企业还有一些研究机构)都要求他们的应用能够Scale out到更大的分布式系统上(比如整个数据中心)。这些应用又分为以下几种类型:
- 机器学习类型的应用(machine learning algorithms)
- 查询类型应用 (simple queries)
- 图处理类型应用 (graph analysis)
- 批处理应用 (batch processing)
- 实时流分析应用 (real-time streaming analysis)
新的计算平台不仅要能够支持传统的计算负载,还能支撑未来的新兴的各种复杂的应用。
本文为集群计算系统提出一种架构,既能解决传统的批处理应用,还能再保证可扩展性和容错的前提下处理交互式查询和流式应用。当前大部分系统仅仅支持简单的单趟计算(one-pass computations),我们的系统可以支持多趟计算(如机器学习算法中的迭代计算)。最后,我们的架构支持多种计算组合,这使得大量的的新应用可以混合。
我们主要是通过对MapReduce增加一个共享数据的原语(primitive),称之为RDD,实现以上的效果。我们将说明RDD足以解决大量不同的工作负载。Spark系统是RDD的具体实现,我们使用大量的Benchmark和真实用户应用对其进行评估。对于大量的应用,Spark的性能都超过了运行它们的专有系统,同时还能支持这些负载之间相互组合,同时还能保证容错。接下来,我们将从理论和实践两个角度来探讨为什么RDD可以有效的支持大量的应用。
【系列】Matei Zaharia博士论文-1 摘要
时间: 2024-11-20 03:14:58