Skip to content
This repository was archived by the owner on Jan 9, 2020. It is now read-only.

Commit 0dd146c

Browse files
duyanghaofoxish
authored andcommitted
Support specify CPU cores and Memory restricts for driver (#340)
Signed-off-by: duyanghao <[email protected]>
1 parent ca4309f commit 0dd146c

File tree

1 file changed

+21
-1
lines changed
  • resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/kubernetes/submit

1 file changed

+21
-1
lines changed

resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/kubernetes/submit/Client.scala

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ package org.apache.spark.deploy.kubernetes.submit
1919
import java.io.File
2020
import java.util.Collections
2121

22-
import io.fabric8.kubernetes.api.model.{ContainerBuilder, EnvVarBuilder, OwnerReferenceBuilder, PodBuilder}
22+
import io.fabric8.kubernetes.api.model.{ContainerBuilder, EnvVarBuilder, OwnerReferenceBuilder, PodBuilder, QuantityBuilder}
2323
import io.fabric8.kubernetes.client.KubernetesClient
2424
import scala.collection.JavaConverters._
2525

@@ -61,6 +61,11 @@ private[spark] class Client(
6161
.getOrElse(kubernetesAppId)
6262
private val driverDockerImage = sparkConf.get(DRIVER_DOCKER_IMAGE)
6363
private val dockerImagePullPolicy = sparkConf.get(DOCKER_IMAGE_PULL_POLICY)
64+
65+
// CPU settings
66+
private val driverCpuCores = sparkConf.getOption("spark.driver.cores").getOrElse("1")
67+
68+
// Memory settings
6469
private val driverMemoryMb = sparkConf.get(org.apache.spark.internal.config.DRIVER_MEMORY)
6570
private val memoryOverheadMb = sparkConf
6671
.get(KUBERNETES_DRIVER_MEMORY_OVERHEAD)
@@ -97,6 +102,15 @@ private[spark] class Client(
97102
.withValue(classPath)
98103
.build()
99104
}
105+
val driverCpuQuantity = new QuantityBuilder(false)
106+
.withAmount(driverCpuCores)
107+
.build()
108+
val driverMemoryQuantity = new QuantityBuilder(false)
109+
.withAmount(s"${driverMemoryMb}M")
110+
.build()
111+
val driverMemoryLimitQuantity = new QuantityBuilder(false)
112+
.withAmount(s"${driverContainerMemoryWithOverhead}M")
113+
.build()
100114
val driverContainer = new ContainerBuilder()
101115
.withName(DRIVER_CONTAINER_NAME)
102116
.withImage(driverDockerImage)
@@ -114,6 +128,12 @@ private[spark] class Client(
114128
.withName(ENV_DRIVER_ARGS)
115129
.withValue(appArgs.mkString(" "))
116130
.endEnv()
131+
.withNewResources()
132+
.addToRequests("cpu", driverCpuQuantity)
133+
.addToLimits("cpu", driverCpuQuantity)
134+
.addToRequests("memory", driverMemoryQuantity)
135+
.addToLimits("memory", driverMemoryLimitQuantity)
136+
.endResources()
117137
.build()
118138
val basePod = new PodBuilder()
119139
.withNewMetadata()

0 commit comments

Comments
 (0)