随着处理器提升速度下降和数据量的不断增长,非常多公司和组织(既有互联网公司也有传统的企业另一些研究机构)都要求他们的应用可以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能够有效的支持大量的应用。