Spark 研究

Apache Spark 最初是加州大学伯克利分校 AMPLab 的一个研究项目,该实验室专注于大数据分析。

我们的目标是设计一种编程模型,它能支持比 MapReduce 更广泛的应用类型,同时保持其自动容错能力。特别是,MapReduce 对于需要跨多个并行操作进行低延迟数据共享的多遍应用程序效率低下。这些应用程序在分析中很常见,包括:

  • 迭代算法,包括许多机器学习算法和 PageRank 等图算法。
  • 交互式数据挖掘,用户希望将数据加载到集群的内存中并重复查询。
  • 流式应用程序,随时间保持聚合状态。

传统的 MapReduce 和 DAG 引擎对于这些应用程序来说是次优的,因为它们基于非循环数据流:一个应用程序必须作为一系列独立的作业运行,每个作业从稳定存储(例如分布式文件系统)读取数据并将其写回稳定存储。它们在每一步加载数据和写回复制存储时都会产生显著的开销。

Spark 提供了一种名为 弹性分布式数据集 (RDD) 的抽象,以高效支持这些应用程序。RDD 可以在查询之间存储在内存中,无需复制。相反,它们通过血缘关系在故障时重建丢失的数据:每个 RDD 都记住它是如何从其他数据集构建的(通过 mapjoingroupBy 等转换)以重建自身。RDD 允许 Spark 在多遍分析中表现优于现有模型高达 100 倍。我们展示了 RDD 可以支持多种迭代算法,以及交互式数据挖掘和高效的 SQL 引擎(Shark)。

您可以在以下论文中找到更多关于 Spark 背后研究的信息:

最新消息

存档