cxc*_*xco 3 hadoop-yarn apache-spark
我想知道:
在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)
这并未涵盖可以使用这些属性的所有用例,但它提供了有关如何使用它的一般概念.
| 归档时间: |
|
| 查看次数: |
3219 次 |
| 最近记录: |