DriverServiceFeatureStep¶
DriverServiceFeatureStep is a KubernetesFeatureConfigStep.
Creating Instance¶
DriverServiceFeatureStep takes the following to be created:
- KubernetesDriverConf
-
Clock(default:SystemClock)
DriverServiceFeatureStep is created when:
KubernetesDriverBuilderis requested for a driver pod spec
Service Name¶
DriverServiceFeatureStep defines Service Name based on the Preferred Service Name (if fits the name limit) or generates one:
spark-[randomServiceId]-driver-svc
DriverServiceFeatureStep prints out the following WARN message when generating the service name:
Driver's hostname would preferably be [preferredServiceName], but this is too long (must be <= 63 characters). Falling back to use $shorterServiceName as the driver service's name.
The service name is used for the following:
- Additional System Properties (as
spark.driver.host) - Additional Kubernetes Resources
Preferred Service Name¶
DriverServiceFeatureStep uses the resourceNamePrefix (of the given KubernetesDriverConf) with -driver-svc postfix as the Preferred Service Name.
[resourceNamePrefix]-driver-svc
The preferred service name becomes the resolved service name only when shorter than 63 characters.
Additional Kubernetes Resources¶
getAdditionalKubernetesResources(): Seq[HasMetadata]
getAdditionalKubernetesResources is part of the KubernetesFeatureConfigStep abstraction.
getAdditionalKubernetesResources defines a Kubernetes service with the Service Name.
kubectl get services
Use k get services to list Kubernetes services.
Additional System Properties¶
getAdditionalPodSystemProperties(): Map[String, String]
getAdditionalPodSystemProperties is part of the KubernetesFeatureConfigStep abstraction.
getAdditionalPodSystemProperties sets the following additional Spark properties:
| Name | Value |
|---|---|
spark.driver.host | serviceName.namespace.svc |
spark.driver.port | driverPort |
spark.driver.blockManager.port | driverBlockManagerPort |
Configuring Driver Pod¶
configurePod(
pod: SparkPod): SparkPod
configurePod is part of the KubernetesFeatureConfigStep abstraction.
configurePod...FIXME
Logging¶
Enable ALL logging level for org.apache.spark.deploy.k8s.features.DriverServiceFeatureStep logger to see what happens inside.
Add the following line to conf/log4j.properties:
log4j.logger.org.apache.spark.deploy.k8s.features.DriverServiceFeatureStep=ALL
Refer to Logging.