[
https://issues.apache.org/jira/browse/SPARK-23285?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16357500#comment-16357500
]
Yinan Li commented on SPARK-23285:
----------------------------------
Given the complexity and significant impact of the changes proposed in
[https://github.com/apache/spark/pull/20460] to the way Spark handles task
scheduling, task parallelism, and dynamic resource allocation, etc., I'm
thinking if we should instead introduce a K8s specific configuration property
for specifying the executor cores that follows the Kubernetes
[convention|https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-cpu].
It seems Mesos fine-grained mode does this with
{{spark.mesos.mesosExecutor.cores}}. We can have something like
{{spark.kubernetes.executor.cores}} that is only used for specifying the CPU
core request for the executor pods. Existing configuration properties
{{spark.executor.cores}} and {{spark.task.cpus}} still play their roles in task
parallelism, task scheduling, etc. That is, {{spark.kubernetes.executor.cores}}
only determines the physical CPU cores available to an executor. An executor
can still run multiple tasks simultaneously if {{spark.executor.cores}} is a
multiple of {{spark.task.cpus}}. If not set,
{{spark.kubernetes.executor.cores}} falls back to {{spark.executor.cores}}.
WDYT?
> Allow spark.executor.cores to be fractional
> -------------------------------------------
>
> Key: SPARK-23285
> URL: https://issues.apache.org/jira/browse/SPARK-23285
> Project: Spark
> Issue Type: Improvement
> Components: Kubernetes, Scheduler, Spark Submit
> Affects Versions: 2.4.0
> Reporter: Anirudh Ramanathan
> Priority: Minor
>
> There is a strong check for an integral number of cores per executor in
> [SparkSubmitArguments.scala#L270-L272|https://github.com/apache/spark/blob/3f4060c340d6bac412e8819c4388ccba226efcf3/core/src/main/scala/org/apache/spark/deploy/SparkSubmitArguments.scala#L270-L272].
> Given we're reusing that property in K8s, does it make sense to relax it?
>
> K8s treats CPU as a "compressible resource" and can actually assign millicpus
> to individual containers. Also to be noted - spark.driver.cores has no such
> check in place.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]