[ 
https://issues.apache.org/jira/browse/SPARK-20286?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15965408#comment-15965408
 ] 

Miguel Pérez commented on SPARK-20286:
--------------------------------------

Yes. I suppose this is only checked when an executors passes from active to 
idle status (maybe when the last action has finished), and it's not changed 
when unpersist is called. But this is problematic, for example, if the job is 
interactive. Imagine you have a Zeppelin notebook or a Spark shell. The same 
driver could have different purposes and the session could be opened a long 
time. Once you have called a single persist, all these executors will have to 
wait {{dynamicAllocation.cachedExecutorIdleTimeout}} (which is Infinity by 
default) or the user executing another action (executors will become active 
again and then idle, but this time without cached data).

I don't know the solution. Maybe the best approach is to change from 
cachedExecutorIdleTimeout to executorIdleTimeout on all cached executors when 
the last RDD has been unpersisted, and then restart the time counter (unpersist 
will then count as an action).

> dynamicAllocation.executorIdleTimeout is ignored after unpersist
> ----------------------------------------------------------------
>
>                 Key: SPARK-20286
>                 URL: https://issues.apache.org/jira/browse/SPARK-20286
>             Project: Spark
>          Issue Type: Bug
>          Components: Spark Core
>    Affects Versions: 2.0.1
>            Reporter: Miguel Pérez
>
> With dynamic allocation enabled, it seems that executors with cached data 
> which are unpersisted are still being killed using the 
> {{dynamicAllocation.cachedExecutorIdleTimeout}} configuration, instead of 
> {{dynamicAllocation.executorIdleTimeout}}. Assuming the default configuration 
> ({{dynamicAllocation.cachedExecutorIdleTimeout = Infinity}}), an executor 
> with unpersisted data won't be released until the job ends.
> *How to reproduce*
> - Set different values for {{dynamicAllocation.executorIdleTimeout}} and 
> {{dynamicAllocation.cachedExecutorIdleTimeout}}
> - Load a file into a RDD and persist it
> - Execute an action on the RDD (like a count) so some executors are activated.
> - When the action has finished, unpersist the RDD
> - The application UI removes correctly the persisted data from the *Storage* 
> tab, but if you look in the *Executors* tab, you will find that the executors 
> remain *active* until ({{dynamicAllocation.cachedExecutorIdleTimeout}} is 
> reached.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org
For additional commands, e-mail: issues-h...@spark.apache.org

Reply via email to