@@ -19,7 +19,7 @@ package org.apache.spark.deploy.kubernetes.submit
19
19
import java .io .File
20
20
import java .util .Collections
21
21
22
- import io .fabric8 .kubernetes .api .model .{ContainerBuilder , EnvVarBuilder , OwnerReferenceBuilder , PodBuilder }
22
+ import io .fabric8 .kubernetes .api .model .{ContainerBuilder , EnvVarBuilder , OwnerReferenceBuilder , PodBuilder , QuantityBuilder }
23
23
import io .fabric8 .kubernetes .client .KubernetesClient
24
24
import scala .collection .JavaConverters ._
25
25
@@ -61,6 +61,11 @@ private[spark] class Client(
61
61
.getOrElse(kubernetesAppId)
62
62
private val driverDockerImage = sparkConf.get(DRIVER_DOCKER_IMAGE )
63
63
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
64
69
private val driverMemoryMb = sparkConf.get(org.apache.spark.internal.config.DRIVER_MEMORY )
65
70
private val memoryOverheadMb = sparkConf
66
71
.get(KUBERNETES_DRIVER_MEMORY_OVERHEAD )
@@ -97,6 +102,15 @@ private[spark] class Client(
97
102
.withValue(classPath)
98
103
.build()
99
104
}
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()
100
114
val driverContainer = new ContainerBuilder ()
101
115
.withName(DRIVER_CONTAINER_NAME )
102
116
.withImage(driverDockerImage)
@@ -114,6 +128,12 @@ private[spark] class Client(
114
128
.withName(ENV_DRIVER_ARGS )
115
129
.withValue(appArgs.mkString(" " ))
116
130
.endEnv()
131
+ .withNewResources()
132
+ .addToRequests(" cpu" , driverCpuQuantity)
133
+ .addToLimits(" cpu" , driverCpuQuantity)
134
+ .addToRequests(" memory" , driverMemoryQuantity)
135
+ .addToLimits(" memory" , driverMemoryLimitQuantity)
136
+ .endResources()
117
137
.build()
118
138
val basePod = new PodBuilder ()
119
139
.withNewMetadata()
0 commit comments