You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "Dongjoon Hyun (Jira)" <ji...@apache.org> on 2022/01/25 11:02:00 UTC

[jira] [Resolved] (SPARK-38019) ExecutorMonitor.timedOutExecutors should be deterministic

     [ https://issues.apache.org/jira/browse/SPARK-38019?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dongjoon Hyun resolved SPARK-38019.
-----------------------------------
    Fix Version/s: 3.3.0
                   3.2.1
       Resolution: Fixed

Issue resolved by pull request 35315
[https://github.com/apache/spark/pull/35315]

> ExecutorMonitor.timedOutExecutors should be deterministic
> ---------------------------------------------------------
>
>                 Key: SPARK-38019
>                 URL: https://issues.apache.org/jira/browse/SPARK-38019
>             Project: Spark
>          Issue Type: Sub-task
>          Components: Spark Core
>    Affects Versions: 3.2.0, 3.2.1, 3.3.0
>            Reporter: Dongjoon Hyun
>            Assignee: Dongjoon Hyun
>            Priority: Major
>             Fix For: 3.3.0, 3.2.1
>
>
> Since the AS-IS timedOutExecutors returns the result indeterministic, it kills the executors in a random order at Dynamic Allocation setting.
> spark/core/src/main/scala/org/apache/spark/scheduler/dynalloc/ExecutorMonitor.scala
> {code}
>  private val executors = new ConcurrentHashMap[String, Tracker]() 
> ...
>  timedOutExecs = executors.asScala 
> {code}
> This random behavior not only makes the users confusing but also causes a K8s decommission tests flaky like the following case in Java 17 on Apple Silicon environment. The K8s test expects the decommission of executor 1 while the executor 2 is chosen at this time.
> {code}
> 22/01/25 06:11:16 DEBUG ExecutorMonitor: Executors 1,2 do not have active shuffle data after job 0 finished.
> 22/01/25 06:11:16 DEBUG ExecutorAllocationManager: max needed for rpId: 0 numpending: 0, tasksperexecutor: 1
> 22/01/25 06:11:16 DEBUG ExecutorAllocationManager: No change in number of executors
> 22/01/25 06:11:16 DEBUG ExecutorAllocationManager: Request to remove executorIds: (2,0), (1,0)
> 22/01/25 06:11:16 DEBUG ExecutorAllocationManager: Not removing idle executor 1 because there are only 1 executor(s) left (minimum number of executor limit 1)
> 22/01/25 06:11:16 INFO KubernetesClusterSchedulerBackend: Decommission executors: 2
> {code}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

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