gpt4 book ai didi

apache-spark - 溢出到磁盘并随机写入 Spark

转载 作者:行者123 更新时间:2023-12-03 07:18:48 29 4
gpt4 key购买 nike

我对溢出到磁盘随机写入感到困惑。使用默认的 Sort shuffle 管理器,我们使用 appendOnlyMap 来聚合和组合分区记录,对吧?然后,当执行内存填满时,我们开始对映射进行排序,将其溢出到磁盘,然后清理映射以进行下一次溢出(如果发生),我的问题是:

  • 溢出到磁盘和随机写入之间有什么区别?它们基本上包括在本地文件系统上创建文件并进行记录。

  • 承认是不同的,因此 Spill 记录会被排序,因为它们是通过映射传递的,而不是随机排列写入记录,因为它们不是从映射传递的。

  • 我认为溢出文件的总大小应该等于随机写入的大小,也许我遗漏了一些东西,请帮助理解该阶段。

谢谢。

乔治

最佳答案

溢出到磁盘随机写入是两个不同的事情

溢出到磁盘 - 数据从主机 RAM 移动到主机磁盘 - 当计算机上没有足够的 RAM 时使用,并将部分 RAM 放入磁盘

http://spark.apache.org/faq.html

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

No. Spark's operators spill data to disk if it does not fit in memory, allowing it to run well on any sized data. Likewise, cached datasets that do not fit in memory are either spilled to disk or recomputed on the fly when needed, as determined by the RDD's storage level.

shuffle write - 数据从执行器移动到另一个执行器 - 当数据需要在执行器之间移动时使用(例如由于 JOIN、groupBy)等)

更多数据可以在这里找到:

一个可能有助于解决此问题的边缘案例示例:

  • 您有 10 名执行人
  • 每个执行器具有 100GB RAM
  • 数据大小为1280MB,分为10个分区
  • 每个执行器保存 128MB 的数据。

假设数据有一个key,执行groupByKey会将所有数据放入一个分区。 Shuffle 大小 将为 9*128MB(9 个执行器会将数据传输到最后一个执行器),并且不会有任何溢出到磁盘,因为执行器有 100GB 的内存RAM 和仅 1GB 数据

关于AppendOnlyMap :

As written in the AppendOnlyMap code (see above) - this function is a low level implementation of a simple open hash table optimized for the append-only use case, where keys are never removed, but the value for each key may be changed.

两个不同的模块使用相同的低级函数这一事实并不意味着这些函数在高级中是相关的。

关于apache-spark - 溢出到磁盘并随机写入 Spark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41661849/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com