EN
返回档案库

案例库 · 软件与 IT · 技术决策 · 2009–2010

Spark在作业间将数据保存在内存中,在迭代任务上比Hadoop快10倍

加州大学伯克利分校的Spark引入了RDD,将工作集缓存在内存中;在迭代机器学习作业上比Hadoop快10倍,并在亚秒内查询39GB数据。

UC Berkeley AMPLab · Apache Spark

解法

MapReduce在大规模批处理作业上很成功,但其无环模型迫使每个作业从磁盘重新加载数据——这对迭代机器学习和交互式查询来说非常痛苦。

Spark的RDD允许用户将工作集缓存在内存中,并在操作间复用,同时通过基于血缘的重建实现容错。

论文报告,在迭代机器学习作业上比Hadoop快10倍,并在39GB数据集上实现亚秒级交互式查询。

生效的原因

  • 内存复用消除了迭代工作负载中占主导的I/O成本。
  • 血缘机制在无复制开销的情况下实现容错。
  • 一个抽象同时覆盖批处理和交互式使用。
  • 缓存决策保持显式,因此用户可以控制权衡。
取得的成效复用数据,而不是重新加载聪明

可借鉴之处

当相同数据被反复使用时,瓶颈不是计算,而是重新读取已加载的数据;缓存热点数据,只重建出问题的部分。

后续进展

Spark成为Apache广泛使用的集群计算引擎,RDD抽象塑造了一代数据系统和围绕它发展起来的Databricks公司。

资料来源

发现哪里写错了?告诉我们。

相关案例