案例库 · 软件与 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公司。
资料来源
发现哪里写错了?告诉我们。