2017-07-05 35 views
3

随着Dynamic Resource AllocationApache Spark - 为什么执行程序被删除? '空闲'是什么意思?

火花应用程序将删除时,它已经空闲了比spark.dynamicAllocation.executorIdleTimeout秒 更多的执行器。

当我设定的执行空闲超时属性 为随后spark.dynamicAllocation.executorIdleTimeout= 300,它抛出以下警告

spark.ExecutorAllocationManager: Removing executor 0 because it has been idle for 300 seconds (new desired total will be 2) 

是什么意思是“闲置”?这是否意味着工作人员不使用CPU?阻止对数据库的调用是否计为空闲?

回答

2

是什么意思是 “空闲” 的数据?

要回答这个问题,我想回到官方文档。因此,正如您在引用的文档中提到的那样,动态分配机制使Spark能够根据工作负载动态调整应用程序占用的资源。

这意味着你的应用程序可以:

  • 以后再次请求他们需要的时候。

  • 给资源回群集,如果他们不再使用:执行人状态被认为空闲这是指定,它的设置,术语什么都不做(和预留资源)。即:

    在你的情况下,产生以下警告:

    spark.ExecutorAllocationManager: Removing executor 0 because it has been idle for 300 seconds (new desired total will be 2) 
    

是否意味着工人不使用CPU?

执行程序保留CPU和内存。如果其他应用程序需要使用它们,那么它是保留的。您的资源管理器无法为其他应用程序分配资源。因此,在多个应用程序共享相同群集的情况下,释放它们可能是多产的。

阻止对数据库的调用是否计为空闲?

对数据库的调用通常会要求资源,因此执行程序在执行任何类型的任务(即使是这一个)时都不是空闲的。

要了解有关ExecutorAllocationManager的更多信息,我建议您查看它的代码here

+1

很好的解释! –

1

空闲意味着两件事情:

  • 没有有效的阶段,在此执行
  • 没有(明确)坚持在此执行