gpt4 book ai didi

apache-spark - Spark 溢出独立于分配的执行程序内存

转载 作者:行者123 更新时间:2023-12-02 01:18:52 25 4
gpt4 key购买 nike

在使用 spark 2.0 运行 pyspark 应用程序时,我注意到了奇怪的行为。在我的脚本中涉及 reduceByKey(因此是 shuffle)操作的第一步中,我观察到 shuffle 写入的数量大致符合我的预期,但是发生的溢出比我预期的要多得多。我试图通过将每个执行程序分配的内存量增加到原始内存量的 8 倍来避免这些溢出,但在溢出量上基本上没有区别。奇怪的是,我还看到,在此阶段运行时,几乎没有使用任何分配的存储内存(如 spark Web UI 中的 executors 选项卡所报告的那样)。

我看到了这个较早的问题,这让我相信增加执行程序内存可能有助于避免溢出:How to optimize shuffle spill in Apache Spark application
.这让我相信一些硬限制导致了溢出,而不是 spark.shuffle.memoryFraction 参数。是否存在这样的硬限制,可能在 HDFS 参数中?否则,除了增加执行程序内存之外,还可以做些什么来避免溢出?

非常感谢,R

Tasks view inside reduce job showing spills
Executors tab showing low memory use
job DAG

最佳答案

PySpark 中的溢出行为使用 spark.python.worker.memory 控制:

Amount of memory to use per python worker process during aggregation, in the same format as JVM memory strings (e.g. 512m, 2g). If the memory used during aggregation goes above this amount, it will spill the data into disks.



这是 by default set to 512MB .此外,PySpark 使用自己的减少机制与 External(GroupBy|Sorter|Merger)并表现出与其原生对应物略有不同的行为。

关于apache-spark - Spark 溢出独立于分配的执行程序内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41343302/

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