spark.yarn.driver.memoryOverhead或spark.yarn.executor.memoryOverhead是用来存储什么样的数据的?
the spark.yarn.driver.memoryOverhead or spark.yarn.executor.memoryOverhead is used to store what kind of data?
我想知道:
- spark使用spark.yarn.driver.memoryOverhead或spark.yarn.executor.memoryOverhead来存储什么样的数据?
- 在这种情况下,我应该提高 spark.yarn.driver.memoryOverhead 或 spark.yarn.executor.memoryOverhead 的值?
在 YARN 术语中,执行器和应用程序主机 运行 在“容器”中。 Spark 提供纱线特定属性,因此您可以 运行 您的应用程序 :
spark.yarn.executor.memoryOverhead
是要为每个执行程序分配的堆外内存量(以兆字节为单位)。这是内存,用于解释 VM 开销、驻留字符串、其他本机开销等。这往往会随着执行程序的大小(通常为 6-10%)而增长。
spark.yarn.driver.memoryOverhead
是集群模式下每个驱动程序分配的堆外内存量(以兆字节为单位),内存属性作为执行程序的 memoryOverhead。
所以这与存储数据无关,它只是 YARN 正常 运行 所需的资源。
在某些情况下,
e.g 如果启用 dynamicAllocation
,您可能希望明确设置这些属性以及可以创建的最大执行程序数 (spark.dynamicAllocation.maxExecutors
)在此过程中,YARN 很容易通过请求数以千计的执行程序而使 YARN 不堪重负,从而失去已经 运行ning 的执行程序。
spark.dynamicAllocation.maxExecutors is set to infinity by default which set the upper bound for the number of executors if dynamic allocation is enabled. [ref.http://spark.apache.org/docs/latest/configuration.html#dynamic-allocation]
增加执行器的目标数量是为了响应等待安排的积压任务。如果调度程序队列在 N 秒内没有被清空,则添加新的执行程序。如果队列再持续 M 秒,则添加更多执行程序,依此类推。每轮添加的数字从上一轮开始呈指数增长,直到达到上限。如上所述,上限基于配置的 属性 和当前的 运行 宁和未决任务数量。
在某些情况下,这可能会导致执行程序数量呈指数增长,从而破坏 YARN 资源管理器。就我而言:
16/03/31 07:15:44 INFO ExecutorAllocationManager: Requesting 8000 new executors because tasks are backlogged (new desired total will be 40000)
这并未涵盖可以使用这些 属性 的所有用例,但它给出了有关如何使用它们的一般概念。
我想知道:
- spark使用spark.yarn.driver.memoryOverhead或spark.yarn.executor.memoryOverhead来存储什么样的数据?
- 在这种情况下,我应该提高 spark.yarn.driver.memoryOverhead 或 spark.yarn.executor.memoryOverhead 的值?
在 YARN 术语中,执行器和应用程序主机 运行 在“容器”中。 Spark 提供纱线特定属性,因此您可以 运行 您的应用程序 :
spark.yarn.executor.memoryOverhead
是要为每个执行程序分配的堆外内存量(以兆字节为单位)。这是内存,用于解释 VM 开销、驻留字符串、其他本机开销等。这往往会随着执行程序的大小(通常为 6-10%)而增长。spark.yarn.driver.memoryOverhead
是集群模式下每个驱动程序分配的堆外内存量(以兆字节为单位),内存属性作为执行程序的 memoryOverhead。
所以这与存储数据无关,它只是 YARN 正常 运行 所需的资源。
在某些情况下,
e.g 如果启用 dynamicAllocation
,您可能希望明确设置这些属性以及可以创建的最大执行程序数 (spark.dynamicAllocation.maxExecutors
)在此过程中,YARN 很容易通过请求数以千计的执行程序而使 YARN 不堪重负,从而失去已经 运行ning 的执行程序。
spark.dynamicAllocation.maxExecutors is set to infinity by default which set the upper bound for the number of executors if dynamic allocation is enabled. [ref.http://spark.apache.org/docs/latest/configuration.html#dynamic-allocation]
增加执行器的目标数量是为了响应等待安排的积压任务。如果调度程序队列在 N 秒内没有被清空,则添加新的执行程序。如果队列再持续 M 秒,则添加更多执行程序,依此类推。每轮添加的数字从上一轮开始呈指数增长,直到达到上限。如上所述,上限基于配置的 属性 和当前的 运行 宁和未决任务数量。
在某些情况下,这可能会导致执行程序数量呈指数增长,从而破坏 YARN 资源管理器。就我而言:
16/03/31 07:15:44 INFO ExecutorAllocationManager: Requesting 8000 new executors because tasks are backlogged (new desired total will be 40000)
这并未涵盖可以使用这些 属性 的所有用例,但它给出了有关如何使用它们的一般概念。