![](/img/trans.png)
[英]The value of “spark.yarn.executor.memoryOverhead” setting?
[英]the spark.yarn.driver.memoryOverhead or spark.yarn.executor.memoryOverhead is used to store what kind of data?
我想知道:
在YARN术语中,执行者和应用程序主人在“容器”内运行。 Spark提供纱线特定属性,因此您可以运行您的应用程序:
spark.yarn.executor.memoryOverhead
是每个执行程序要分配的堆外内存量(以兆字节为单位)。 这是一个内存,可以解决诸如VM开销,实习字符串,其他本机开销等问题。这往往会随着执行程序的大小而增加(通常为6-10%)。 spark.yarn.driver.memoryOverhead
是群集模式下每个驱动程序分配的堆外内存量(以兆字节为单位),内存属性为执行程序的memoryOverhead。 所以它不是关于存储数据,它只是YARN正常运行所需的资源。
在某些情况下,
例如,如果启用dynamicAllocation
您可能希望显式设置这些属性以及在此过程中可以创建的最大执行程序数( spark.dynamicAllocation.maxExecutors
),这可以通过请求数千个执行程序轻松压倒YARN,从而已经失去了运行执行程序。
spark.dynamicAllocation.maxExecutors默认设置为无穷大,如果启用了动态分配,则设置执行程序数的上限。 [参考文献。 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)
这并未涵盖可以使用这些属性的所有用例,但它提供了有关如何使用它的一般概念。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.