如果数据大小超过可用内存,是什么让spark变快?

9q78igpj  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(443)

我试着去理解spark,它说它很快,因为它把数据保存在内存中,而不是map reduce。举个例子-
我有一个5节点的spark集群,每个集群有100gbram。假设我有500 tb的数据来运行spark作业。现在spark可以保存的总数据是100*5=500GB。如果它在任何时候都只能在内存中保存最多500 gb的数据,是什么让它 lightning 般的快??

0s7z1bwu

0s7z1bwu1#

spark并不神奇,也不能改变计算的基本原理。spark使用内存作为渐进式增强,对于无法保存在内存中的大型数据集,它将退回到磁盘i/o。在必须从磁盘扫描表的场景中,spark的性能应该与其他涉及从磁盘扫描表的并行解决方案相当。
假设500 tb中只有0.1%是“有趣的”。例如,在一个营销漏斗里有很多广告印象,更少的点击,更少的销售,更少的重复销售。一个程序可以过滤一个巨大的数据集,并告诉spark在内存中缓存一个更小的、经过过滤和校正的数据集,以便进一步处理。较小的过滤数据集的spark缓存显然比重复磁盘表扫描和重复处理较大的原始数据快得多。

相关问题