使用动态资源分配:
当执行程序空闲超过 spark.dynamicAllocation.executorIdleTimeout 秒时,Spark 应用程序会删除执行程序。
当我按如下方式设置执行程序空闲超时属性时spark.dynamicAllocation.executorIdleTimeout= 300
,它会抛出以下警告:
spark.ExecutorAllocationManager: Removing executor 0 because it has been idle for 300 seconds (new desired total will be 2)
Run Code Online (Sandbox Code Playgroud)
“空闲”是什么意思?这是否意味着工人不使用 CPU?对数据库的阻塞调用算作空闲吗?
“空闲”是什么意思?
要回答这个问题,我想回到官方文档。因此,就像您引用的文档中提到的那样,动态分配机制使 Spark 能够根据工作负载动态调整应用程序占用的资源。
这意味着您的应用程序可能:
稍后在需要时再次请求它们。
如果不再使用资源,则将资源还给集群:执行程序状态被视为idle,这是指定它坐在那里什么也不做(并保留资源)的术语,即:在您的情况下,它生成了以下警告:
spark.ExecutorAllocationManager: Removing executor 0 because it has been idle for 300 seconds (new desired total will be 2)
Run Code Online (Sandbox Code Playgroud)这是否意味着工人不使用 CPU?
执行程序保留 CPU 和内存。如果其他应用程序需要使用它们,那么它是保留的。您的资源管理器无法为您的其他应用程序分配资源。因此,在多个应用程序共享同一个集群的情况下,释放它们可以是多产的。
对数据库的阻塞调用算作空闲吗?
对数据库的调用通常需要资源,因此,执行器在执行任何类型的任务(甚至是这个任务)时都不会空闲。
要了解有关 的更多信息ExecutorAllocationManager
,我建议您在此处查看它的代码 。
归档时间: |
|
查看次数: |
3581 次 |
最近记录: |