This is an automated email from the ASF dual-hosted git repository.
gurwls223 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/master by this push:
new 1254c88 [SPARK-31118][K8S][DOC] Add version information to the
configuration of K8S
1254c88 is described below
commit 1254c8803454ec855bd66de5f763188f81e7ea66
Author: beliefer <[email protected]>
AuthorDate: Thu Mar 12 09:54:08 2020 +0900
[SPARK-31118][K8S][DOC] Add version information to the configuration of K8S
### What changes were proposed in this pull request?
Add version information to the configuration of `K8S`.
I sorted out some information show below.
Item name | Since version | JIRA ID | Commit ID | Note
-- | -- | -- | -- | --
spark.kubernetes.context | 3.0.0 | SPARK-25887 |
c542c247bbfe1214c0bf81076451718a9e8931dc#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.driver.master | 3.0.0 | SPARK-30371 |
f14061c6a4729ad419902193aa23575d8f17f597#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.namespace | 2.3.0 | SPARK-18278 |
e9b2070ab2d04993b1c0c1d6c6aba249e6664c8d#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.container.image | 2.3.0 | SPARK-22994 |
b94debd2b01b87ef1d2a34d48877e38ade0969e6#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.driver.container.image | 2.3.0 | SPARK-22807 |
fb3636b482be3d0940345b1528c1d5090bbc25e6#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.executor.container.image | 2.3.0 | SPARK-22807 |
fb3636b482be3d0940345b1528c1d5090bbc25e6#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.container.image.pullPolicy | 2.3.0 | SPARK-22807 |
fb3636b482be3d0940345b1528c1d5090bbc25e6#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.container.image.pullSecrets | 2.4.0 | SPARK-23668 |
cccaaa14ad775fb981e501452ba2cc06ff5c0f0a#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.submission.requestTimeout | 3.0.0 | SPARK-27023 |
e9e8bb33ef9ad785473ded168bc85867dad4ee70#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.submission.connectionTimeout | 3.0.0 | SPARK-27023 |
e9e8bb33ef9ad785473ded168bc85867dad4ee70#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.driver.requestTimeout | 3.0.0 | SPARK-27023 |
e9e8bb33ef9ad785473ded168bc85867dad4ee70#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.driver.connectionTimeout | 3.0.0 | SPARK-27023 |
e9e8bb33ef9ad785473ded168bc85867dad4ee70#diff-6e882d5561424e7e6651eb46f10104b8
|
KUBERNETES_AUTH_DRIVER_CONF_PREFIX.serviceAccountName | 2.3.0 | SPARK-18278
|
e9b2070ab2d04993b1c0c1d6c6aba249e6664c8d#diff-6e882d5561424e7e6651eb46f10104b8
| spark.kubernetes.authenticate.driver
KUBERNETES_AUTH_EXECUTOR_CONF_PREFIX.serviceAccountName | 3.1.0 |
SPARK-30122 |
f9f06eee9853ad4b6458ac9d31233e729a1ca226#diff-6e882d5561424e7e6651eb46f10104b8
| spark.kubernetes.authenticate.executor
spark.kubernetes.driver.limit.cores | 2.3.0 | SPARK-22646 |
3f4060c340d6bac412e8819c4388ccba226efcf3#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.driver.request.cores | 3.0.0 | SPARK-27754 |
1a8c09334db87b0e938c38cd6b59d326bdcab3c3#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.submitInDriver | 2.4.0 | SPARK-22839 |
f15906da153f139b698e192ec6f82f078f896f1e#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.executor.limit.cores | 2.3.0 | SPARK-18278 |
e9b2070ab2d04993b1c0c1d6c6aba249e6664c8d#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.executor.scheduler.name | 3.0.0 | SPARK-29436 |
f800fa383131559c4e841bf062c9775d09190935#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.executor.request.cores | 2.4.0 | SPARK-23285 |
fe2b7a4568d65a62da6e6eb00fff05f248b4332c#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.driver.pod.name | 2.3.0 | SPARK-18278 |
e9b2070ab2d04993b1c0c1d6c6aba249e6664c8d#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.driver.resourceNamePrefix | 3.0.0 | SPARK-25876 |
6be272b75b4ae3149869e19df193675cc4117763#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.executor.podNamePrefix | 2.3.0 | SPARK-18278 |
e9b2070ab2d04993b1c0c1d6c6aba249e6664c8d#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.allocation.batch.size | 2.3.0 | SPARK-18278 |
e9b2070ab2d04993b1c0c1d6c6aba249e6664c8d#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.allocation.batch.delay | 2.3.0 | SPARK-18278 |
e9b2070ab2d04993b1c0c1d6c6aba249e6664c8d#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.executor.lostCheck.maxAttempts | 2.3.0 | SPARK-18278 |
e9b2070ab2d04993b1c0c1d6c6aba249e6664c8d#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.submission.waitAppCompletion | 2.3.0 | SPARK-22646 |
3f4060c340d6bac412e8819c4388ccba226efcf3#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.report.interval | 2.3.0 | SPARK-22646 |
3f4060c340d6bac412e8819c4388ccba226efcf3#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.executor.apiPollingInterval | 2.4.0 | SPARK-24248 |
270a9a3cac25f3e799460320d0fc94ccd7ecfaea#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.executor.eventProcessingInterval | 2.4.0 | SPARK-24248 |
270a9a3cac25f3e799460320d0fc94ccd7ecfaea#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.memoryOverheadFactor | 2.4.0 | SPARK-23984 |
1a644afbac35c204f9ad55f86999319a9ab458c6#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.pyspark.pythonVersion | 2.4.0 | SPARK-23984 |
a791c29bd824adadfb2d85594bc8dad4424df936#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.kerberos.krb5.path | 3.0.0 | SPARK-23257 |
6c9c84ffb9c8d98ee2ece7ba4b010856591d383d#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.kerberos.krb5.configMapName | 3.0.0 | SPARK-23257 |
6c9c84ffb9c8d98ee2ece7ba4b010856591d383d#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.hadoop.configMapName | 3.0.0 | SPARK-23257 |
6c9c84ffb9c8d98ee2ece7ba4b010856591d383d#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.kerberos.tokenSecret.name | 3.0.0 | SPARK-23257 |
6c9c84ffb9c8d98ee2ece7ba4b010856591d383d#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.kerberos.tokenSecret.itemKey | 3.0.0 | SPARK-23257 |
6c9c84ffb9c8d98ee2ece7ba4b010856591d383d#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.resource.type | 2.4.1 | SPARK-25021 |
9031c784847353051bc0978f63ef4146ae9095ff#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.local.dirs.tmpfs | 3.0.0 | SPARK-25262 |
da6fa3828bb824b65f50122a8a0a0d4741551257#diff-6e882d5561424e7e6651eb46f10104b8
| It exists in branch-3.0, but in pom.xml it is 2.4.0-snapshot
spark.kubernetes.driver.podTemplateFile | 3.0.0 | SPARK-24434 |
f6cc354d83c2c9a757f9b507aadd4dbdc5825cca#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.executor.podTemplateFile | 3.0.0 | SPARK-24434 |
f6cc354d83c2c9a757f9b507aadd4dbdc5825cca#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.driver.podTemplateContainerName | 3.0.0 | SPARK-24434 |
f6cc354d83c2c9a757f9b507aadd4dbdc5825cca#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.executor.podTemplateContainerName | 3.0.0 | SPARK-24434 |
f6cc354d83c2c9a757f9b507aadd4dbdc5825cca#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.executor.deleteOnTermination | 3.0.0 | SPARK-25515 |
0c2935b01def8a5f631851999d9c2d57b63763e6#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.dynamicAllocation.deleteGracePeriod | 3.0.0 | SPARK-28487
|
0343854f54b48b206ca434accec99355011560c2#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.appKillPodDeletionGracePeriod | 3.0.0 | SPARK-24793 |
05168e725d2a17c4164ee5f9aa068801ec2454f4#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.file.upload.path | 3.0.0 | SPARK-23153 |
5e74570c8f5e7dfc1ca1c53c177827c5cea57bf1#diff-6e882d5561424e7e6651eb46f10104b8
|
The following appears in the document | | | |
spark.kubernetes.authenticate.submission.caCertFile | 2.3.0 | SPARK-22646 |
3f4060c340d6bac412e8819c4388ccba226efcf3#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.authenticate.submission.clientKeyFile | 2.3.0 |
SPARK-22646 |
3f4060c340d6bac412e8819c4388ccba226efcf3#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.authenticate.submission.clientCertFile | 2.3.0 |
SPARK-22646 |
3f4060c340d6bac412e8819c4388ccba226efcf3#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.authenticate.submission.oauthToken | 2.3.0 | SPARK-22646 |
3f4060c340d6bac412e8819c4388ccba226efcf3#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.authenticate.submission.oauthTokenFile | 2.3.0 |
SPARK-22646 |
3f4060c340d6bac412e8819c4388ccba226efcf3#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.authenticate.driver.caCertFile | 2.3.0 | SPARK-18278 |
e9b2070ab2d04993b1c0c1d6c6aba249e6664c8d#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.authenticate.driver.clientKeyFile | 2.3.0 | SPARK-18278 |
e9b2070ab2d04993b1c0c1d6c6aba249e6664c8d#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.authenticate.driver.clientCertFile | 2.3.0 | SPARK-18278 |
e9b2070ab2d04993b1c0c1d6c6aba249e6664c8d#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.authenticate.driver.oauthToken | 2.3.0 | SPARK-18278 |
e9b2070ab2d04993b1c0c1d6c6aba249e6664c8d#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.authenticate.driver.oauthTokenFile | 2.3.0 | SPARK-18278 |
e9b2070ab2d04993b1c0c1d6c6aba249e6664c8d#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.authenticate.driver.mounted.caCertFile | 2.3.0 |
SPARK-18278 |
e9b2070ab2d04993b1c0c1d6c6aba249e6664c8d#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.authenticate.driver.mounted.clientKeyFile | 2.3.0 |
SPARK-18278 |
e9b2070ab2d04993b1c0c1d6c6aba249e6664c8d#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.authenticate.driver.mounted.clientCertFile | 2.3.0 |
SPARK-18278 |
e9b2070ab2d04993b1c0c1d6c6aba249e6664c8d#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.authenticate.driver.mounted.oauthTokenFile | 2.3.0 |
SPARK-18278 |
e9b2070ab2d04993b1c0c1d6c6aba249e6664c8d#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.authenticate.caCertFile | 2.4.0 | SPARK-23146 |
571a6f0574e50e53cea403624ec3795cd03aa204#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.authenticate.clientKeyFile | 2.4.0 | SPARK-23146 |
571a6f0574e50e53cea403624ec3795cd03aa204#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.authenticate.clientCertFile | 2.4.0 | SPARK-23146 |
571a6f0574e50e53cea403624ec3795cd03aa204#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.authenticate.oauthToken | 2.4.0 | SPARK-23146 |
571a6f0574e50e53cea403624ec3795cd03aa204#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.authenticate.oauthTokenFile | 2.4.0 | SPARK-23146 |
571a6f0574e50e53cea403624ec3795cd03aa204#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.driver.label.[LabelName] | 2.3.0 | SPARK-22646 |
3f4060c340d6bac412e8819c4388ccba226efcf3#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.driver.annotation.[AnnotationName] | 2.3.0 | SPARK-22646 |
3f4060c340d6bac412e8819c4388ccba226efcf3#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.executor.label.[LabelName] | 2.3.0 | SPARK-22646 |
3f4060c340d6bac412e8819c4388ccba226efcf3#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.executor.annotation.[AnnotationName] | 2.3.0 | SPARK-22646
|
3f4060c340d6bac412e8819c4388ccba226efcf3#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.node.selector.[labelKey] | 2.3.0 | SPARK-18278 |
e9b2070ab2d04993b1c0c1d6c6aba249e6664c8d#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.driverEnv.[EnvironmentVariableName] | 2.3.0 | SPARK-22646
|
3f4060c340d6bac412e8819c4388ccba226efcf3#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.driver.secrets.[SecretName] | 2.3.0 | SPARK-22757 |
171f6ddadc6185ffcc6ad82e5f48952fb49095b2#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.executor.secrets.[SecretName] | 2.3.0 | SPARK-22757 |
171f6ddadc6185ffcc6ad82e5f48952fb49095b2#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.driver.secretKeyRef.[EnvName] | 2.4.0 | SPARK-24232 |
21e1fc7d4aed688d7b685be6ce93f76752159c98#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.executor.secretKeyRef.[EnvName] | 2.4.0 | SPARK-24232 |
21e1fc7d4aed688d7b685be6ce93f76752159c98#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.driver.volumes.[VolumeType].[VolumeName].mount.path |
2.4.0 | SPARK-23529 |
5ff1b9ba1983d5601add62aef64a3e87d07050eb#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.driver.volumes.[VolumeType].[VolumeName].mount.subPath |
3.0.0 | SPARK-25960 |
3df307aa515b3564686e75d1b71754bbcaaf2dec#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.driver.volumes.[VolumeType].[VolumeName].mount.readOnly |
2.4.0 | SPARK-23529 |
5ff1b9ba1983d5601add62aef64a3e87d07050eb#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.driver.volumes.[VolumeType].[VolumeName].options.[OptionName]
| 2.4.0 | SPARK-23529 |
5ff1b9ba1983d5601add62aef64a3e87d07050eb#diff-b5527f236b253e0d9f5db5164bdb43e9
|
spark.kubernetes.executor.volumes.[VolumeType].[VolumeName].mount.path |
2.4.0 | SPARK-23529 |
5ff1b9ba1983d5601add62aef64a3e87d07050eb#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.executor.volumes.[VolumeType].[VolumeName].mount.subPath |
3.0.0 | SPARK-25960 |
3df307aa515b3564686e75d1b71754bbcaaf2dec#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.executor.volumes.[VolumeType].[VolumeName].mount.readOnly
| 2.4.0 | SPARK-23529 |
5ff1b9ba1983d5601add62aef64a3e87d07050eb#diff-6e882d5561424e7e6651eb46f10104b8
|
spark.kubernetes.executor.volumes.[VolumeType].[VolumeName].options.[OptionName]
| 2.4.0 | SPARK-23529 |
5ff1b9ba1983d5601add62aef64a3e87d07050eb#diff-b5527f236b253e0d9f5db5164bdb43e9
|
### Why are the changes needed?
Supplemental configuration version information.
### Does this PR introduce any user-facing change?
'No'
### How was this patch tested?
Exists UT
Closes #27875 from beliefer/add-version-to-k8s-config.
Authored-by: beliefer <[email protected]>
Signed-off-by: HyukjinKwon <[email protected]>
---
docs/running-on-kubernetes.md | 77 +++++++++++++++++++++-
.../scala/org/apache/spark/deploy/k8s/Config.scala | 49 +++++++++++++-
2 files changed, 124 insertions(+), 2 deletions(-)
diff --git a/docs/running-on-kubernetes.md b/docs/running-on-kubernetes.md
index a941b8c..4f228a5 100644
--- a/docs/running-on-kubernetes.md
+++ b/docs/running-on-kubernetes.md
@@ -494,7 +494,7 @@ See the [configuration page](configuration.html) for
information on Spark config
#### Spark Properties
<table class="table">
-<tr><th>Property Name</th><th>Default</th><th>Meaning</th></tr>
+<tr><th>Property Name</th><th>Default</th><th>Meaning</th><th>Since
Version</th></tr>
<tr>
<td><code>spark.kubernetes.context</code></td>
<td><code>(none)</code></td>
@@ -505,6 +505,7 @@ See the [configuration page](configuration.html) for
information on Spark config
auto-configured settings can be overridden by the use of other Spark
configuration properties e.g. <code>spark.kubernetes.namespace</code>.
</td>
+ <td>3.0.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.driver.master</code></td>
@@ -512,6 +513,7 @@ See the [configuration page](configuration.html) for
information on Spark config
<td>
The internal Kubernetes master (API server) address to be used for driver
to request executors.
</td>
+ <td>3.0.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.namespace</code></td>
@@ -519,6 +521,7 @@ See the [configuration page](configuration.html) for
information on Spark config
<td>
The namespace that will be used for running the driver and executor pods.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.container.image</code></td>
@@ -529,6 +532,7 @@ See the [configuration page](configuration.html) for
information on Spark config
This configuration is required and must be provided by the user, unless
explicit
images are provided for each different container type.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.driver.container.image</code></td>
@@ -536,6 +540,7 @@ See the [configuration page](configuration.html) for
information on Spark config
<td>
Custom container image to use for the driver.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.executor.container.image</code></td>
@@ -543,6 +548,7 @@ See the [configuration page](configuration.html) for
information on Spark config
<td>
Custom container image to use for executors.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.container.image.pullPolicy</code></td>
@@ -550,6 +556,7 @@ See the [configuration page](configuration.html) for
information on Spark config
<td>
Container image pull policy used when pulling images within Kubernetes.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.container.image.pullSecrets</code></td>
@@ -557,6 +564,7 @@ See the [configuration page](configuration.html) for
information on Spark config
<td>
Comma separated list of Kubernetes secrets used to pull images from
private image registries.
</td>
+ <td>2.4.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.allocation.batch.size</code></td>
@@ -564,6 +572,7 @@ See the [configuration page](configuration.html) for
information on Spark config
<td>
Number of pods to launch at once in each round of executor pod allocation.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.allocation.batch.delay</code></td>
@@ -572,6 +581,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Time to wait between each round of executor pod allocation. Specifying
values less than 1 second may lead to
excessive CPU usage on the spark driver.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.authenticate.submission.caCertFile</code></td>
@@ -581,6 +591,7 @@ See the [configuration page](configuration.html) for
information on Spark config
must be located on the submitting machine's disk. Specify this as a path
as opposed to a URI (i.e. do not provide
a scheme). In client mode, use
<code>spark.kubernetes.authenticate.caCertFile</code> instead.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.authenticate.submission.clientKeyFile</code></td>
@@ -590,6 +601,7 @@ See the [configuration page](configuration.html) for
information on Spark config
must be located on the submitting machine's disk. Specify this as a path
as opposed to a URI (i.e. do not provide
a scheme). In client mode, use
<code>spark.kubernetes.authenticate.clientKeyFile</code> instead.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.authenticate.submission.clientCertFile</code></td>
@@ -599,6 +611,7 @@ See the [configuration page](configuration.html) for
information on Spark config
file must be located on the submitting machine's disk. Specify this as a
path as opposed to a URI (i.e. do not
provide a scheme). In client mode, use
<code>spark.kubernetes.authenticate.clientCertFile</code> instead.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.authenticate.submission.oauthToken</code></td>
@@ -608,6 +621,7 @@ See the [configuration page](configuration.html) for
information on Spark config
that unlike the other authentication options, this is expected to be the
exact string value of the token to use for
the authentication. In client mode, use
<code>spark.kubernetes.authenticate.oauthToken</code> instead.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.authenticate.submission.oauthTokenFile</code></td>
@@ -617,6 +631,7 @@ See the [configuration page](configuration.html) for
information on Spark config
This file must be located on the submitting machine's disk. Specify this
as a path as opposed to a URI (i.e. do not
provide a scheme). In client mode, use
<code>spark.kubernetes.authenticate.oauthTokenFile</code> instead.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.authenticate.driver.caCertFile</code></td>
@@ -627,6 +642,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Specify this as a path as opposed to a URI (i.e. do not provide a scheme).
In client mode, use
<code>spark.kubernetes.authenticate.caCertFile</code> instead.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.authenticate.driver.clientKeyFile</code></td>
@@ -637,6 +653,7 @@ See the [configuration page](configuration.html) for
information on Spark config
a Kubernetes secret. Specify this as a path as opposed to a URI (i.e. do
not provide a scheme).
In client mode, use
<code>spark.kubernetes.authenticate.clientKeyFile</code> instead.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.authenticate.driver.clientCertFile</code></td>
@@ -647,6 +664,7 @@ See the [configuration page](configuration.html) for
information on Spark config
driver pod as a Kubernetes secret. Specify this as a path as opposed to a
URI (i.e. do not provide a scheme).
In client mode, use
<code>spark.kubernetes.authenticate.clientCertFile</code> instead.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.authenticate.driver.oauthToken</code></td>
@@ -657,6 +675,7 @@ See the [configuration page](configuration.html) for
information on Spark config
the token to use for the authentication. This token value is uploaded to
the driver pod as a Kubernetes secret.
In client mode, use <code>spark.kubernetes.authenticate.oauthToken</code>
instead.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.authenticate.driver.oauthTokenFile</code></td>
@@ -667,6 +686,7 @@ See the [configuration page](configuration.html) for
information on Spark config
the token to use for the authentication. This token value is uploaded to
the driver pod as a secret. In client mode, use
<code>spark.kubernetes.authenticate.oauthTokenFile</code> instead.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.authenticate.driver.mounted.caCertFile</code></td>
@@ -677,6 +697,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Specify this as a path as opposed to a URI (i.e. do not provide a scheme).
In client mode, use
<code>spark.kubernetes.authenticate.caCertFile</code> instead.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.authenticate.driver.mounted.clientKeyFile</code></td>
@@ -687,6 +708,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Specify this as a path as opposed to a URI (i.e. do not provide a scheme).
In client mode, use
<code>spark.kubernetes.authenticate.clientKeyFile</code> instead.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.authenticate.driver.mounted.clientCertFile</code></td>
@@ -697,6 +719,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Specify this as a path as opposed to a URI (i.e. do not provide a scheme).
In client mode, use
<code>spark.kubernetes.authenticate.clientCertFile</code> instead.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.authenticate.driver.mounted.oauthTokenFile</code></td>
@@ -707,6 +730,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Note that unlike the other authentication options, this file must contain
the exact string value of the token to use
for the authentication. In client mode, use
<code>spark.kubernetes.authenticate.oauthTokenFile</code> instead.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.authenticate.driver.serviceAccountName</code></td>
@@ -716,6 +740,7 @@ See the [configuration page](configuration.html) for
information on Spark config
executor pods from the API server. Note that this cannot be specified
alongside a CA cert file, client key file,
client cert file, and/or OAuth token. In client mode, use
<code>spark.kubernetes.authenticate.serviceAccountName</code> instead.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.authenticate.caCertFile</code></td>
@@ -724,6 +749,7 @@ See the [configuration page](configuration.html) for
information on Spark config
In client mode, path to the CA cert file for connecting to the Kubernetes
API server over TLS when
requesting executors. Specify this as a path as opposed to a URI (i.e. do
not provide a scheme).
</td>
+ <td>2.4.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.authenticate.clientKeyFile</code></td>
@@ -732,6 +758,7 @@ See the [configuration page](configuration.html) for
information on Spark config
In client mode, path to the client key file for authenticating against the
Kubernetes API server
when requesting executors. Specify this as a path as opposed to a URI
(i.e. do not provide a scheme).
</td>
+ <td>2.4.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.authenticate.clientCertFile</code></td>
@@ -740,6 +767,7 @@ See the [configuration page](configuration.html) for
information on Spark config
In client mode, path to the client cert file for authenticating against
the Kubernetes API server
when requesting executors. Specify this as a path as opposed to a URI
(i.e. do not provide a scheme).
</td>
+ <td>2.4.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.authenticate.oauthToken</code></td>
@@ -749,6 +777,7 @@ See the [configuration page](configuration.html) for
information on Spark config
requesting executors. Note that unlike the other authentication options,
this must be the exact string value of
the token to use for the authentication.
</td>
+ <td>2.4.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.authenticate.oauthTokenFile</code></td>
@@ -757,6 +786,7 @@ See the [configuration page](configuration.html) for
information on Spark config
In client mode, path to the file containing the OAuth token to use when
authenticating against the Kubernetes API
server when requesting executors.
</td>
+ <td>2.4.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.driver.label.[LabelName]</code></td>
@@ -767,6 +797,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Note that Spark also adds its own labels to the driver pod
for bookkeeping purposes.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.driver.annotation.[AnnotationName]</code></td>
@@ -775,6 +806,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Add the annotation specified by <code>AnnotationName</code> to the driver
pod.
For example,
<code>spark.kubernetes.driver.annotation.something=true</code>.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.executor.label.[LabelName]</code></td>
@@ -785,6 +817,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Note that Spark also adds its own labels to the executor pod
for bookkeeping purposes.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.executor.annotation.[AnnotationName]</code></td>
@@ -793,6 +826,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Add the annotation specified by <code>AnnotationName</code> to the
executor pods.
For example,
<code>spark.kubernetes.executor.annotation.something=true</code>.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.driver.pod.name</code></td>
@@ -804,6 +838,7 @@ See the [configuration page](configuration.html) for
information on Spark config
value in client mode allows the driver to become the owner of its executor
pods, which in turn allows the executor
pods to be garbage collected by the cluster.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.executor.lostCheck.maxAttempts</code></td>
@@ -813,6 +848,7 @@ See the [configuration page](configuration.html) for
information on Spark config
The loss reason is used to ascertain whether the executor failure is due
to a framework or an application error
which in turn decides whether the executor is removed and replaced, or
placed into a failed state for debugging.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.submission.waitAppCompletion</code></td>
@@ -821,6 +857,7 @@ See the [configuration page](configuration.html) for
information on Spark config
In cluster mode, whether to wait for the application to finish before
exiting the launcher process. When changed to
false, the launcher has a "fire-and-forget" behavior when launching the
Spark job.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.report.interval</code></td>
@@ -828,6 +865,7 @@ See the [configuration page](configuration.html) for
information on Spark config
<td>
Interval between reports of the current Spark job status in cluster mode.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.driver.request.cores</code></td>
@@ -837,6 +875,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Example values include 0.1, 500m, 1.5, 5, etc., with the definition of cpu
units documented in <a
href="https://kubernetes.io/docs/tasks/configure-pod-container/assign-cpu-resource/#cpu-units">CPU
units</a>.
This takes precedence over <code>spark.driver.cores</code> for specifying
the driver pod cpu request if set.
</td>
+ <td>3.0.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.driver.limit.cores</code></td>
@@ -844,6 +883,7 @@ See the [configuration page](configuration.html) for
information on Spark config
<td>
Specify a hard cpu <a
href="https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#resource-requests-and-limits-of-pod-and-container">limit</a>
for the driver pod.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.executor.request.cores</code></td>
@@ -854,6 +894,7 @@ See the [configuration page](configuration.html) for
information on Spark config
This is distinct from <code>spark.executor.cores</code>: it is only used
and takes precedence over <code>spark.executor.cores</code> for specifying the
executor pod cpu request if set. Task
parallelism, e.g., number of tasks an executor can run concurrently is not
affected by this.
</td>
+ <td>2.4.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.executor.limit.cores</code></td>
@@ -861,6 +902,7 @@ See the [configuration page](configuration.html) for
information on Spark config
<td>
Specify a hard cpu <a
href="https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#resource-requests-and-limits-of-pod-and-container">limit</a>
for each executor pod launched for the Spark Application.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.node.selector.[labelKey]</code></td>
@@ -871,6 +913,7 @@ See the [configuration page](configuration.html) for
information on Spark config
will result in the driver pod and executors having a node selector with
key <code>identifier</code> and value
<code>myIdentifier</code>. Multiple node selector keys can be added by
setting multiple configurations with this prefix.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.driverEnv.[EnvironmentVariableName]</code></td>
@@ -879,6 +922,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Add the environment variable specified by
<code>EnvironmentVariableName</code> to
the Driver process. The user can specify multiple of these to set multiple
environment variables.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.driver.secrets.[SecretName]</code></td>
@@ -887,6 +931,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Add the <a
href="https://kubernetes.io/docs/concepts/configuration/secret/">Kubernetes
Secret</a> named <code>SecretName</code> to the driver pod on the path
specified in the value. For example,
<code>spark.kubernetes.driver.secrets.spark-secret=/etc/secrets</code>.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.executor.secrets.[SecretName]</code></td>
@@ -895,6 +940,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Add the <a
href="https://kubernetes.io/docs/concepts/configuration/secret/">Kubernetes
Secret</a> named <code>SecretName</code> to the executor pod on the path
specified in the value. For example,
<code>spark.kubernetes.executor.secrets.spark-secret=/etc/secrets</code>.
</td>
+ <td>2.3.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.driver.secretKeyRef.[EnvName]</code></td>
@@ -903,6 +949,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Add as an environment variable to the driver container with name EnvName
(case sensitive), the value referenced by key <code> key </code> in the data of
the referenced <a
href="https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets-as-environment-variables">Kubernetes
Secret</a>. For example,
<code>spark.kubernetes.driver.secretKeyRef.ENV_VAR=spark-secret:key</code>.
</td>
+ <td>2.4.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.executor.secretKeyRef.[EnvName]</code></td>
@@ -911,6 +958,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Add as an environment variable to the executor container with name EnvName
(case sensitive), the value referenced by key <code> key </code> in the data of
the referenced <a
href="https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets-as-environment-variables">Kubernetes
Secret</a>. For example,
<code>spark.kubernetes.executor.secrets.ENV_VAR=spark-secret:key</code>.
</td>
+ <td>2.4.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.driver.volumes.[VolumeType].[VolumeName].mount.path</code></td>
@@ -919,6 +967,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Add the <a
href="https://kubernetes.io/docs/concepts/storage/volumes/">Kubernetes
Volume</a> named <code>VolumeName</code> of the <code>VolumeType</code> type to
the driver pod on the path specified in the value. For example,
<code>spark.kubernetes.driver.volumes.persistentVolumeClaim.checkpointpvc.mount.path=/checkpoint</code>.
</td>
+ <td>2.4.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.driver.volumes.[VolumeType].[VolumeName].mount.subPath</code></td>
@@ -927,6 +976,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Specifies a <a
href="https://kubernetes.io/docs/concepts/storage/volumes/#using-subpath">subpath</a>
to be mounted from the volume into the driver pod.
<code>spark.kubernetes.driver.volumes.persistentVolumeClaim.checkpointpvc.mount.subPath=checkpoint</code>.
</td>
+ <td>3.0.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.driver.volumes.[VolumeType].[VolumeName].mount.readOnly</code></td>
@@ -935,6 +985,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Specify if the mounted volume is read only or not. For example,
<code>spark.kubernetes.driver.volumes.persistentVolumeClaim.checkpointpvc.mount.readOnly=false</code>.
</td>
+ <td>2.4.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.driver.volumes.[VolumeType].[VolumeName].options.[OptionName]</code></td>
@@ -943,6 +994,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Configure <a
href="https://kubernetes.io/docs/concepts/storage/volumes/">Kubernetes
Volume</a> options passed to the Kubernetes with <code>OptionName</code> as key
having specified value, must conform with Kubernetes option format. For example,
<code>spark.kubernetes.driver.volumes.persistentVolumeClaim.checkpointpvc.options.claimName=spark-pvc-claim</code>.
</td>
+ <td>2.4.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.executor.volumes.[VolumeType].[VolumeName].mount.path</code></td>
@@ -951,6 +1003,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Add the <a
href="https://kubernetes.io/docs/concepts/storage/volumes/">Kubernetes
Volume</a> named <code>VolumeName</code> of the <code>VolumeType</code> type to
the executor pod on the path specified in the value. For example,
<code>spark.kubernetes.executor.volumes.persistentVolumeClaim.checkpointpvc.mount.path=/checkpoint</code>.
</td>
+ <td>2.4.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.executor.volumes.[VolumeType].[VolumeName].mount.subPath</code></td>
@@ -959,6 +1012,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Specifies a <a
href="https://kubernetes.io/docs/concepts/storage/volumes/#using-subpath">subpath</a>
to be mounted from the volume into the executor pod.
<code>spark.kubernetes.executor.volumes.persistentVolumeClaim.checkpointpvc.mount.subPath=checkpoint</code>.
</td>
+ <td>3.0.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.executor.volumes.[VolumeType].[VolumeName].mount.readOnly</code></td>
@@ -967,6 +1021,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Specify if the mounted volume is read only or not. For example,
<code>spark.kubernetes.executor.volumes.persistentVolumeClaim.checkpointpvc.mount.readOnly=false</code>.
</td>
+ <td>2.4.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.executor.volumes.[VolumeType].[VolumeName].options.[OptionName]</code></td>
@@ -975,6 +1030,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Configure <a
href="https://kubernetes.io/docs/concepts/storage/volumes/">Kubernetes
Volume</a> options passed to the Kubernetes with <code>OptionName</code> as key
having specified value. For example,
<code>spark.kubernetes.executor.volumes.persistentVolumeClaim.checkpointpvc.options.claimName=spark-pvc-claim</code>.
</td>
+ <td>2.4.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.local.dirs.tmpfs</code></td>
@@ -983,6 +1039,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Configure the <code>emptyDir</code> volumes used to back
<code>SPARK_LOCAL_DIRS</code> within the Spark driver and executor pods to use
<code>tmpfs</code> backing i.e. RAM. See <a href="#local-storage">Local
Storage</a> earlier on this page
for more discussion of this.
</td>
+ <td>3.0.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.memoryOverheadFactor</code></td>
@@ -991,6 +1048,7 @@ See the [configuration page](configuration.html) for
information on Spark config
This sets the Memory Overhead Factor that will allocate memory to non-JVM
memory, which includes off-heap memory allocations, non-JVM tasks, and various
systems processes. For JVM-based jobs this value will default to 0.10 and 0.40
for non-JVM jobs.
This is done as non-JVM tasks need more non-JVM heap space and such tasks
commonly fail with "Memory Overhead Exceeded" errors. This prempts this error
with a higher default.
</td>
+ <td>2.4.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.pyspark.pythonVersion</code></td>
@@ -998,6 +1056,7 @@ See the [configuration page](configuration.html) for
information on Spark config
<td>
This sets the major Python version of the docker image used to run the
driver and executor containers. Can either be 2 or 3.
</td>
+ <td>2.4.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.kerberos.krb5.path</code></td>
@@ -1006,6 +1065,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Specify the local location of the krb5.conf file to be mounted on the
driver and executors for Kerberos interaction.
It is important to note that the KDC defined needs to be visible from
inside the containers.
</td>
+ <td>3.0.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.kerberos.krb5.configMapName</code></td>
@@ -1015,6 +1075,7 @@ See the [configuration page](configuration.html) for
information on Spark config
for Kerberos interaction. The KDC defined needs to be visible from inside
the containers. The ConfigMap must also
be in the same namespace of the driver and executor pods.
</td>
+ <td>3.0.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.hadoop.configMapName</code></td>
@@ -1023,6 +1084,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Specify the name of the ConfigMap, containing the HADOOP_CONF_DIR files,
to be mounted on the driver
and executors for custom Hadoop configuration.
</td>
+ <td>3.0.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.kerberos.tokenSecret.name</code></td>
@@ -1031,6 +1093,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Specify the name of the secret where your existing delegation tokens are
stored. This removes the need for the job user
to provide any kerberos credentials for launching a job.
</td>
+ <td>3.0.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.kerberos.tokenSecret.itemKey</code></td>
@@ -1039,6 +1102,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Specify the item key of the data where your existing delegation tokens are
stored. This removes the need for the job user
to provide any kerberos credentials for launching a job.
</td>
+ <td>3.0.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.driver.podTemplateFile</code></td>
@@ -1047,6 +1111,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Specify the local file that contains the driver <a href="#pod-template">pod
template</a>. For example
<code>spark.kubernetes.driver.podTemplateFile=/path/to/driver-pod-template.yaml</code>
</td>
+ <td>3.0.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.driver.podTemplateContainerName</code></td>
@@ -1055,6 +1120,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Specify the container name to be used as a basis for the driver in the
given <a href="#pod-template">pod template</a>.
For example
<code>spark.kubernetes.driver.podTemplateContainerName=spark-driver</code>
</td>
+ <td>3.0.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.executor.podTemplateFile</code></td>
@@ -1063,6 +1129,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Specify the local file that contains the executor <a
href="#pod-template">pod template</a>. For example
<code>spark.kubernetes.executor.podTemplateFile=/path/to/executor-pod-template.yaml</code>
</td>
+ <td>3.0.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.executor.podTemplateContainerName</code></td>
@@ -1071,6 +1138,7 @@ See the [configuration page](configuration.html) for
information on Spark config
Specify the container name to be used as a basis for the executor in the
given <a href="#pod-template">pod template</a>.
For example
<code>spark.kubernetes.executor.podTemplateContainerName=spark-executor</code>
</td>
+ <td>3.0.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.executor.deleteOnTermination</code></td>
@@ -1078,6 +1146,7 @@ See the [configuration page](configuration.html) for
information on Spark config
<td>
Specify whether executor pods should be deleted in case of failure or normal
termination.
</td>
+ <td>3.0.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.submission.connectionTimeout</code></td>
@@ -1085,6 +1154,7 @@ See the [configuration page](configuration.html) for
information on Spark config
<td>
Connection timeout in milliseconds for the kubernetes client to use for
starting the driver.
</td>
+ <td>3.0.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.submission.requestTimeout</code></td>
@@ -1092,6 +1162,7 @@ See the [configuration page](configuration.html) for
information on Spark config
<td>
Request timeout in milliseconds for the kubernetes client to use for
starting the driver.
</td>
+ <td>3.0.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.driver.connectionTimeout</code></td>
@@ -1099,6 +1170,7 @@ See the [configuration page](configuration.html) for
information on Spark config
<td>
Connection timeout in milliseconds for the kubernetes client in driver to
use when requesting executors.
</td>
+ <td>3.0.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.driver.requestTimeout</code></td>
@@ -1106,6 +1178,7 @@ See the [configuration page](configuration.html) for
information on Spark config
<td>
Request timeout in milliseconds for the kubernetes client in driver to use
when requesting executors.
</td>
+ <td>3.0.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.appKillPodDeletionGracePeriod</code></td>
@@ -1113,6 +1186,7 @@ See the [configuration page](configuration.html) for
information on Spark config
<td>
Specify the grace period in seconds when deleting a Spark application using
spark-submit.
</td>
+ <td>3.0.0</td>
</tr>
<tr>
<td><code>spark.kubernetes.file.upload.path</code></td>
@@ -1122,6 +1196,7 @@ See the [configuration page](configuration.html) for
information on Spark config
<code>spark.kubernetes.file.upload.path=s3a://<s3-bucket>/path</code>
File should specified as <code>file://path/to/file </code> or absolute
path.
</td>
+ <td>3.0.0</td>
</tr>
</table>
diff --git
a/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/Config.scala
b/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/Config.scala
index 46fd8e7..6eb2ca2 100644
---
a/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/Config.scala
+++
b/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/Config.scala
@@ -33,6 +33,7 @@ private[spark] object Config extends Logging {
"to .kube/config under your home directory. If not specified then
your current " +
"context is used. You can always override specific aspects of the
config file " +
"provided configuration using other Spark on K8S configuration
options.")
+ .version("3.0.0")
.stringConf
.createOptional
@@ -40,12 +41,14 @@ private[spark] object Config extends Logging {
ConfigBuilder("spark.kubernetes.driver.master")
.doc("The internal Kubernetes master (API server) address " +
"to be used for driver to request executors.")
+ .version("3.0.0")
.stringConf
.createWithDefault(KUBERNETES_MASTER_INTERNAL_URL)
val KUBERNETES_NAMESPACE =
ConfigBuilder("spark.kubernetes.namespace")
.doc("The namespace that will be used for running the driver and
executor pods.")
+ .version("2.3.0")
.stringConf
.createWithDefault("default")
@@ -54,22 +57,26 @@ private[spark] object Config extends Logging {
.doc("Container image to use for Spark containers. Individual container
types " +
"(e.g. driver or executor) can also be configured to use different
images if desired, " +
"by setting the container type-specific image name.")
+ .version("2.3.0")
.stringConf
.createOptional
val DRIVER_CONTAINER_IMAGE =
ConfigBuilder("spark.kubernetes.driver.container.image")
.doc("Container image to use for the driver.")
+ .version("2.3.0")
.fallbackConf(CONTAINER_IMAGE)
val EXECUTOR_CONTAINER_IMAGE =
ConfigBuilder("spark.kubernetes.executor.container.image")
.doc("Container image to use for the executors.")
+ .version("2.3.0")
.fallbackConf(CONTAINER_IMAGE)
val CONTAINER_IMAGE_PULL_POLICY =
ConfigBuilder("spark.kubernetes.container.image.pullPolicy")
.doc("Kubernetes image pull policy. Valid values are Always, Never, and
IfNotPresent.")
+ .version("2.3.0")
.stringConf
.checkValues(Set("Always", "Never", "IfNotPresent"))
.createWithDefault("IfNotPresent")
@@ -78,6 +85,7 @@ private[spark] object Config extends Logging {
ConfigBuilder("spark.kubernetes.container.image.pullSecrets")
.doc("Comma separated list of the Kubernetes secrets used " +
"to access private image registries.")
+ .version("2.4.0")
.stringConf
.toSequence
.createWithDefault(Nil)
@@ -95,24 +103,28 @@ private[spark] object Config extends Logging {
val SUBMISSION_CLIENT_REQUEST_TIMEOUT =
ConfigBuilder("spark.kubernetes.submission.requestTimeout")
.doc("request timeout to be used in milliseconds for starting the
driver")
+ .version("3.0.0")
.intConf
.createWithDefault(10000)
val SUBMISSION_CLIENT_CONNECTION_TIMEOUT =
ConfigBuilder("spark.kubernetes.submission.connectionTimeout")
.doc("connection timeout to be used in milliseconds for starting the
driver")
+ .version("3.0.0")
.intConf
.createWithDefault(10000)
val DRIVER_CLIENT_REQUEST_TIMEOUT =
ConfigBuilder("spark.kubernetes.driver.requestTimeout")
.doc("request timeout to be used in milliseconds for driver to request
executors")
+ .version("3.0.0")
.intConf
.createWithDefault(10000)
val DRIVER_CLIENT_CONNECTION_TIMEOUT =
ConfigBuilder("spark.kubernetes.driver.connectionTimeout")
.doc("connection timeout to be used in milliseconds for driver to
request executors")
+ .version("3.0.0")
.intConf
.createWithDefault(10000)
@@ -122,6 +134,7 @@ private[spark] object Config extends Logging {
"this service account when requesting executor pods from the API
server. If specific " +
"credentials are given for the driver pod to use, the driver will
favor " +
"using those credentials instead.")
+ .version("2.3.0")
.stringConf
.createOptional
@@ -129,48 +142,56 @@ private[spark] object Config extends Logging {
ConfigBuilder(s"$KUBERNETES_AUTH_EXECUTOR_CONF_PREFIX.serviceAccountName")
.doc("Service account that is used when running the executor pod." +
"If this parameter is not setup, the fallback logic will use the
driver's service account.")
+ .version("3.1.0")
.stringConf
.createOptional
val KUBERNETES_DRIVER_LIMIT_CORES =
ConfigBuilder("spark.kubernetes.driver.limit.cores")
.doc("Specify the hard cpu limit for the driver pod")
+ .version("2.3.0")
.stringConf
.createOptional
val KUBERNETES_DRIVER_REQUEST_CORES =
ConfigBuilder("spark.kubernetes.driver.request.cores")
.doc("Specify the cpu request for the driver pod")
+ .version("3.0.0")
.stringConf
.createOptional
val KUBERNETES_DRIVER_SUBMIT_CHECK =
ConfigBuilder("spark.kubernetes.submitInDriver")
.internal()
+ .version("2.4.0")
.booleanConf
.createWithDefault(false)
val KUBERNETES_EXECUTOR_LIMIT_CORES =
ConfigBuilder("spark.kubernetes.executor.limit.cores")
.doc("Specify the hard cpu limit for each executor pod")
+ .version("2.3.0")
.stringConf
.createOptional
val KUBERNETES_EXECUTOR_SCHEDULER_NAME =
ConfigBuilder("spark.kubernetes.executor.scheduler.name")
.doc("Specify the scheduler name for each executor pod")
+ .version("3.0.0")
.stringConf
.createOptional
val KUBERNETES_EXECUTOR_REQUEST_CORES =
ConfigBuilder("spark.kubernetes.executor.request.cores")
.doc("Specify the cpu request for each executor pod")
+ .version("2.4.0")
.stringConf
.createOptional
val KUBERNETES_DRIVER_POD_NAME =
ConfigBuilder("spark.kubernetes.driver.pod.name")
.doc("Name of the driver pod.")
+ .version("2.3.0")
.stringConf
.createOptional
@@ -178,12 +199,14 @@ private[spark] object Config extends Logging {
val KUBERNETES_DRIVER_POD_NAME_PREFIX =
ConfigBuilder("spark.kubernetes.driver.resourceNamePrefix")
.internal()
+ .version("3.0.0")
.stringConf
.createOptional
val KUBERNETES_EXECUTOR_POD_NAME_PREFIX =
ConfigBuilder("spark.kubernetes.executor.podNamePrefix")
.doc("Prefix to use in front of the executor pod names.")
+ .version("2.3.0")
.internal()
.stringConf
.createOptional
@@ -191,6 +214,7 @@ private[spark] object Config extends Logging {
val KUBERNETES_ALLOCATION_BATCH_SIZE =
ConfigBuilder("spark.kubernetes.allocation.batch.size")
.doc("Number of pods to launch at once in each round of executor
allocation.")
+ .version("2.3.0")
.intConf
.checkValue(value => value > 0, "Allocation batch size should be a
positive integer")
.createWithDefault(5)
@@ -198,6 +222,7 @@ private[spark] object Config extends Logging {
val KUBERNETES_ALLOCATION_BATCH_DELAY =
ConfigBuilder("spark.kubernetes.allocation.batch.delay")
.doc("Time to wait between each round of executor allocation.")
+ .version("2.3.0")
.timeConf(TimeUnit.MILLISECONDS)
.checkValue(value => value > 0, "Allocation batch delay must be a
positive time value.")
.createWithDefaultString("1s")
@@ -206,6 +231,7 @@ private[spark] object Config extends Logging {
ConfigBuilder("spark.kubernetes.executor.lostCheck.maxAttempts")
.doc("Maximum number of attempts allowed for checking the reason of an
executor loss " +
"before it is assumed that the executor failed.")
+ .version("2.3.0")
.intConf
.checkValue(value => value > 0, "Maximum attempts of checks of executor
lost reason " +
"must be a positive integer")
@@ -215,12 +241,14 @@ private[spark] object Config extends Logging {
ConfigBuilder("spark.kubernetes.submission.waitAppCompletion")
.doc("In cluster mode, whether to wait for the application to finish
before exiting the " +
"launcher process.")
+ .version("2.3.0")
.booleanConf
.createWithDefault(true)
val REPORT_INTERVAL =
ConfigBuilder("spark.kubernetes.report.interval")
.doc("Interval between reports of the current app status in cluster
mode.")
+ .version("2.3.0")
.timeConf(TimeUnit.MILLISECONDS)
.checkValue(interval => interval > 0, s"Logging interval must be a
positive time value.")
.createWithDefaultString("1s")
@@ -229,6 +257,7 @@ private[spark] object Config extends Logging {
ConfigBuilder("spark.kubernetes.executor.apiPollingInterval")
.doc("Interval between polls against the Kubernetes API server to
inspect the " +
"state of executors.")
+ .version("2.4.0")
.timeConf(TimeUnit.MILLISECONDS)
.checkValue(interval => interval > 0, s"API server polling interval must
be a" +
" positive time value.")
@@ -238,6 +267,7 @@ private[spark] object Config extends Logging {
ConfigBuilder("spark.kubernetes.executor.eventProcessingInterval")
.doc("Interval between successive inspection of executor events sent
from the" +
" Kubernetes API.")
+ .version("2.4.0")
.timeConf(TimeUnit.MILLISECONDS)
.checkValue(interval => interval > 0, s"Event processing interval must
be a positive" +
" time value.")
@@ -247,6 +277,7 @@ private[spark] object Config extends Logging {
ConfigBuilder("spark.kubernetes.memoryOverheadFactor")
.doc("This sets the Memory Overhead Factor that will allocate memory to
non-JVM jobs " +
"which in the case of JVM tasks will default to 0.10 and 0.40 for
non-JVM jobs")
+ .version("2.4.0")
.doubleConf
.checkValue(mem_overhead => mem_overhead >= 0 && mem_overhead < 1,
"Ensure that memory overhead is a double between 0 --> 1.0")
@@ -255,6 +286,7 @@ private[spark] object Config extends Logging {
val PYSPARK_MAJOR_PYTHON_VERSION =
ConfigBuilder("spark.kubernetes.pyspark.pythonVersion")
.doc("This sets the major Python version. Either 2 or 3. (Python2 or
Python3)")
+ .version("2.4.0")
.stringConf
.checkValue(pv => List("2", "3").contains(pv),
"Ensure that major Python version is either Python2 or Python3")
@@ -265,6 +297,7 @@ private[spark] object Config extends Logging {
.doc("Specify the local location of the krb5.conf file to be mounted on
the driver " +
"and executors for Kerberos. Note: The KDC defined needs to be " +
"visible from inside the containers ")
+ .version("3.0.0")
.stringConf
.createOptional
@@ -273,6 +306,7 @@ private[spark] object Config extends Logging {
.doc("Specify the name of the ConfigMap, containing the krb5.conf file,
to be mounted " +
"on the driver and executors for Kerberos. Note: The KDC defined" +
"needs to be visible from inside the containers ")
+ .version("3.0.0")
.stringConf
.createOptional
@@ -280,6 +314,7 @@ private[spark] object Config extends Logging {
ConfigBuilder("spark.kubernetes.hadoop.configMapName")
.doc("Specify the name of the ConfigMap, containing the HADOOP_CONF_DIR
files, " +
"to be mounted on the driver and executors for custom Hadoop
configuration.")
+ .version("3.0.0")
.stringConf
.createOptional
@@ -287,6 +322,7 @@ private[spark] object Config extends Logging {
ConfigBuilder("spark.kubernetes.kerberos.tokenSecret.name")
.doc("Specify the name of the secret where your existing delegation
tokens are stored. " +
"This removes the need for the job user to provide any keytab for
launching a job")
+ .version("3.0.0")
.stringConf
.createOptional
@@ -294,13 +330,15 @@ private[spark] object Config extends Logging {
ConfigBuilder("spark.kubernetes.kerberos.tokenSecret.itemKey")
.doc("Specify the item key of the data where your existing delegation
tokens are stored. " +
"This removes the need for the job user to provide any keytab for
launching a job")
+ .version("3.0.0")
.stringConf
.createOptional
val APP_RESOURCE_TYPE =
ConfigBuilder("spark.kubernetes.resource.type")
- .doc("This sets the resource type internally")
.internal()
+ .doc("This sets the resource type internally")
+ .version("2.4.1")
.stringConf
.checkValues(Set(APP_RESOURCE_TYPE_JAVA, APP_RESOURCE_TYPE_PYTHON,
APP_RESOURCE_TYPE_R))
.createOptional
@@ -311,30 +349,35 @@ private[spark] object Config extends Logging {
"their medium set to Memory so that they will be created as tmpfs
(i.e. RAM) backed " +
"volumes. This may improve performance but scratch space usage will
count towards " +
"your pods memory limit so you may wish to request more memory.")
+ .version("3.0.0")
.booleanConf
.createWithDefault(false)
val KUBERNETES_DRIVER_PODTEMPLATE_FILE =
ConfigBuilder("spark.kubernetes.driver.podTemplateFile")
.doc("File containing a template pod spec for the driver")
+ .version("3.0.0")
.stringConf
.createOptional
val KUBERNETES_EXECUTOR_PODTEMPLATE_FILE =
ConfigBuilder("spark.kubernetes.executor.podTemplateFile")
.doc("File containing a template pod spec for executors")
+ .version("3.0.0")
.stringConf
.createOptional
val KUBERNETES_DRIVER_PODTEMPLATE_CONTAINER_NAME =
ConfigBuilder("spark.kubernetes.driver.podTemplateContainerName")
.doc("container name to be used as a basis for the driver in the given
pod template")
+ .version("3.0.0")
.stringConf
.createOptional
val KUBERNETES_EXECUTOR_PODTEMPLATE_CONTAINER_NAME =
ConfigBuilder("spark.kubernetes.executor.podTemplateContainerName")
.doc("container name to be used as a basis for executors in the given
pod template")
+ .version("3.0.0")
.stringConf
.createOptional
@@ -347,12 +390,14 @@ private[spark] object Config extends Logging {
ConfigBuilder("spark.kubernetes.executor.deleteOnTermination")
.doc("If set to false then executor pods will not be deleted in case " +
"of failure or normal termination.")
+ .version("3.0.0")
.booleanConf
.createWithDefault(true)
val KUBERNETES_DYN_ALLOC_KILL_GRACE_PERIOD =
ConfigBuilder("spark.kubernetes.dynamicAllocation.deleteGracePeriod")
.doc("How long to wait for executors to shut down gracefully before a
forceful kill.")
+ .version("3.0.0")
.timeConf(TimeUnit.MILLISECONDS)
.createWithDefaultString("5s")
@@ -360,6 +405,7 @@ private[spark] object Config extends Logging {
ConfigBuilder("spark.kubernetes.appKillPodDeletionGracePeriod")
.doc("Time to wait for graceful deletion of Spark pods when
spark-submit" +
" is used for killing an application.")
+ .version("3.0.0")
.timeConf(TimeUnit.SECONDS)
.createOptional
@@ -367,6 +413,7 @@ private[spark] object Config extends Logging {
ConfigBuilder("spark.kubernetes.file.upload.path")
.doc("Hadoop compatible file system path where files from the local file
system " +
"will be uploded to in cluster mode.")
+ .version("3.0.0")
.stringConf
.createOptional
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]