微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spark 如何处理比 Spark 存储大得多的数据?

如何解决Spark 如何处理比 Spark 存储大得多的数据?

目前正在学习 Spark 的课程,并了解了 executor 的定义:

每个 executor 都会保存一块要处理的数据。这 块称为 Spark 分区。它是行的集合 位于集群中的一台物理机器上。执行者有责任 用于执行司机分配的工作。每个执行者是 负责两件事:(1)执行驱动程序分配的代码, (2) 将计算状态报告给驱动程序

我想知道如果spark集群的存储量少于需要处理的数据会怎样?执行器如何获取数据到集群中的物理机上?

enter image description here

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

解决方法

Apache Spark FAQ 简要提到了 Spark 可能采用的两种策略:

我的数据是否需要适合内存才能使用 Spark?

没有。如果数据不适合内存,Spark 的操作符会将数据溢出到磁盘, 允许它在任何大小的数据上运行良好。同样,缓存数据集 不适合内存的数据要么溢出到磁盘,要么重新计算 飞在需要时,由 RDD 的 storage level 决定。

尽管 Spark 默认使用所有可用内存,但它可以配置为仅使用磁盘运行作业。

在 Matei 的 Spark 博士论文 (An Architecture for Fast and General Data Processing on Large Clusters) 的 2.6.4 Behavior with Insufficient Memory 部分中,对由于可用内存量减少而导致的性能影响进行了基准测试。

Behavior with Insufficient Memory

在实践中,您通常不会保留 100TB 的源数据帧,而只会保留重用的聚合或中间计算。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。