我试着去理解spark,它说它很快,因为它把数据保存在内存中,而不是map reduce。举个例子-我有一个5节点的spark集群,每个集群有100gbram。假设我有500 tb的数据来运行spark作业。现在spark可以保存的总数据是100*5=500GB。如果它在任何时候都只能在内存中保存最多500 gb的数据,是什么让它 lightning 般的快??
0s7z1bwu1#
spark并不神奇,也不能改变计算的基本原理。spark使用内存作为渐进式增强,对于无法保存在内存中的大型数据集,它将退回到磁盘i/o。在必须从磁盘扫描表的场景中,spark的性能应该与其他涉及从磁盘扫描表的并行解决方案相当。假设500 tb中只有0.1%是“有趣的”。例如,在一个营销漏斗里有很多广告印象,更少的点击,更少的销售,更少的重复销售。一个程序可以过滤一个巨大的数据集,并告诉spark在内存中缓存一个更小的、经过过滤和校正的数据集,以便进一步处理。较小的过滤数据集的spark缓存显然比重复磁盘表扫描和重复处理较大的原始数据快得多。
1条答案
按热度按时间0s7z1bwu1#
spark并不神奇,也不能改变计算的基本原理。spark使用内存作为渐进式增强,对于无法保存在内存中的大型数据集,它将退回到磁盘i/o。在必须从磁盘扫描表的场景中,spark的性能应该与其他涉及从磁盘扫描表的并行解决方案相当。
假设500 tb中只有0.1%是“有趣的”。例如,在一个营销漏斗里有很多广告印象,更少的点击,更少的销售,更少的重复销售。一个程序可以过滤一个巨大的数据集,并告诉spark在内存中缓存一个更小的、经过过滤和校正的数据集,以便进一步处理。较小的过滤数据集的spark缓存显然比重复磁盘表扫描和重复处理较大的原始数据快得多。