gpt4 book ai didi

apache-spark - spark.yarn.driver.memoryOverhead 或者spark.yarn.executor.memoryOverhead 是用来存储什么样的数据的?

转载 作者:行者123 更新时间:2023-12-04 05:03:39 25 4
gpt4 key购买 nike

我想知道:

  • spark 使用spark.yarn.driver.memoryOverhead 或spark.yarn.executor.memoryOverhead 来存储什么样的数据?
  • 在哪种情况下我应该提高 spark.yarn.driver.memoryOverhead 或 spark.yarn.executor.memoryOverhead 的值?

最佳答案

在 YARN 术语中,执行器和应用程序主机在“容器”中运行。 Spark 提供 yarn 特定属性,因此您可以运行您的应用程序:

  • spark.yarn.executor.memoryOverhead 是要为每个执行程序分配的堆外内存量(以兆字节为单位)。这是内存,用于解释 VM 开销、驻留字符串、其他 native 开销等。这往往会随着执行程序的大小(通常为 6-10%)而增长。
  • spark.yarn.driver.memoryOverhead 是集群模式下每个驱动程序分配的堆外内存量(以兆字节为单位),内存属性作为执行程序的 memoryOverhead。

所以这不是关于存储数据,它只是 YARN 正常运行所需的资源。

在某些情况下,


例如,如果您启用dynamicAllocation,您可能希望明确设置这些属性以及执行器的最大数量(spark.dynamicAllocation.maxExecutors ) 可以在这个过程中创建,这很容易通过请求数千个执行器而使 YARN 不堪重负,从而失去已经在运行的执行器。

增加执行器的目标数量是为了响应等待调度的积压任务。如果调度程序队列在 N 秒内没有被清空,则添加新的执行程序。如果队列再持续 M 秒,则添加更多执行程序,依此类推。每轮添加的数字从上一轮开始呈指数增长,直到达到上限。如上所述,上限基于配置的属性以及当前正在运行和挂起的任务数。

在某些情况下,这可能会导致执行程序数量呈指数增长,从而破坏 YARN 资源管理器。就我而言:

16/03/31 07:15:44 信息 ExecutorAllocationManager:请求 8000 个新的执行器,因为任务积压(新的期望总数将为 40000)


这并未涵盖可以使用这些属性的所有用例,但它给出了有关如何使用这些属性的一般概念。

关于apache-spark - spark.yarn.driver.memoryOverhead 或者spark.yarn.executor.memoryOverhead 是用来存储什么样的数据的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36474112/

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