如果数据大小超过可用内存,是啥让 Spark 快速?

Posted

技术标签:

【中文标题】如果数据大小超过可用内存,是啥让 Spark 快速?【英文标题】:What makes Spark fast if data size exceeds available memory?如果数据大小超过可用内存,是什么让 Spark 快速? 【发布时间】:2015-09-03 22:25:35 【问题描述】:

在我尝试理解 spark 的任何地方,它都说它很快,因为它将数据保存在内存中,而不是 map reduce。让我们举个例子 -

我有一个 5 节点 spark 集群,每个集群有 100 GB RAM。假设我有 500 TB 的数据可以运行 spark 作业。现在 spark 可以保留的总数据是 100*5=500 GB。如果它可以在任何时间点仅在内存中保留最多 500 GB 的数据,是什么让它闪电般快速?

【问题讨论】:

【参考方案1】:

Spark 并不神奇,也无法改变计算的基本原理。Spark 使用内存作为渐进式增强功能,对于无法保存在其中的庞大数据集将回退到磁盘 I/O记忆。在必须从磁盘扫描表的场景中,Spark 性能应该与其他涉及从磁盘扫描表的并行解决方案相媲美。

假设 500 TB 中只有 0.1% 是“有趣的”。例如,在营销漏斗中,广告展示次数较多,点击次数较少,销售额甚至更少,重复销售次数也较少。程序可以过滤一个巨大的数据集,并告诉 Spark 在内存中缓存一个更小的、过滤和更正的数据集,以供进一步处理。 较小的过滤数据集的 Spark 缓存显然比重复磁盘表扫描和重复处理较大的原始数据要快得多。

【讨论】:

以上是关于如果数据大小超过可用内存,是啥让 Spark 快速?的主要内容,如果未能解决你的问题,请参考以下文章

在 PyTorch 中,是啥让张量具有非连续内存?

是啥让 Qt 小部件及其布局正常运行(就其大小而言)?

Spark RDD - 分区总是在RAM中吗?

找出是啥让我在 torch7 中记忆犹新

是啥让 PHP 的 mail() 函数这么慢?

是啥让内核/操作系统实时?