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