spark如何处理比spark storage大得多的数据?

dgtucam1  于 2021-07-12  发布在  Spark
关注(0)|答案(1)|浏览(324)

目前正在学习spark课程,遇到了执行人的定义:
每个执行器将保存一块要处理的数据。这个块叫做Spark分割。它是位于集群中一台物理计算机上的行集合。执行人负责执行司机交办的工作。每个执行器负责两件事:(1)执行驱动程序分配的代码,(2)向驱动程序报告计算状态
我想知道如果spark星团的存储少于需要处理的数据会发生什么?执行者将如何获取数据以放置在集群中的物理机器上?

同样的问题也适用于流数据,即未绑定的数据。spark是否将所有传入的数据保存在磁盘上?

j9per5c4

j9per5c41#

apache spark faq简要介绍了spark可能采用的两种策略:
我的数据需要存储在内存中才能使用spark吗?
不可以。spark的操作人员会在数据不适合内存的情况下将数据溢出到磁盘,从而允许它在任何大小的数据上运行良好。同样地,不适合内存的缓存数据集要么溢出到磁盘,要么在需要时动态重新计算,这取决于rdd的存储级别。
尽管spark默认使用所有可用内存,但它可以配置为仅使用磁盘运行作业。
在matei博士论文spark(一种用于大型集群上快速通用数据处理的体系结构)的第2.6.4节中,内存不足的行为测试了可用内存量减少对性能的影响。

在实践中,通常不会持久化100tb的源Dataframe,而只持久化重用的聚合或中间计算。

相关问题