The Kubernetes Operator for Apache Spark aims to make specifying and running Spark applications as easy and idiomatic as running other workloads on Kubernetes. It uses Kubernetes custom resources for specifying, running, and surfacing status of Spark applications.
For a more detailed guide, please refer to the Getting Started guide.
# Add the Helm repository
helm repo add spark-operator https://kubeflow.github.io/spark-operator
helm repo update
# Install the operator into the spark-operator namespace and wait for deployments to be ready
helm install spark-operator spark-operator/spark-operator \
--namespace spark-operator --create-namespace --wait
# Create an example application in the default namespace
kubectl apply -f https://raw.githubusercontent.com/kubeflow/spark-operator/refs/heads/master/examples/spark-pi.yaml
# Get the status of the application
kubectl get sparkapp spark-pi
For a complete reference of the custom resource definitions, please refer to the API Definition. For details on its design, please refer to the Architecture. It requires Spark 2.3 and above that supports Kubernetes as a native scheduler backend.
The Kubernetes Operator for Apache Spark currently supports the following list of features:
spark-submit
on behalf of users for each SparkApplication
eligible for submission.SparkApplication
objects with updated specification.sparkctl
.sparkctl
.Project status: beta
Current API version: v1beta2
If you are currently using the v1beta1
version of the APIs in your manifests, please update them to use the v1beta2
version by changing apiVersion: "sparkoperator.k8s.io/<version>"
to apiVersion: "sparkoperator.k8s.io/v1beta2"
. You will also need to delete the previous
version of the CustomResourceDefinitions named sparkapplications.sparkoperator.k8s.io
and scheduledsparkapplications.sparkoperator.k8s.io
, and replace them with the v1beta2
version either by installing the latest version of the operator or by running kubectl create -f config/crd/bases
.
Version >= 1.13 of Kubernetes to use the subresource
support for CustomResourceDefinitions, which became beta in 1.13 and is enabled by default in 1.13 and higher.
Version >= 1.16 of Kubernetes to use the MutatingWebhook
and ValidatingWebhook
of apiVersion: admissionregistration.k8s.io/v1
.
For getting started with Spark operator, please refer to Getting Started.
For detailed user guide and API documentation, please refer to User Guide and API Specification.
If you are running Spark operator on Google Kubernetes Engine (GKE) and want to use Google Cloud Storage (GCS) and/or BigQuery for reading/writing data, also refer to the GCP guide.
The following table lists the most recent few versions of the operator.
Operator Version | API Version | Kubernetes Version | Base Spark Version |
---|---|---|---|
v2.0.x |
v1beta2 |
1.16+ | 3.5.2 |
v1beta2-1.6.x-3.5.0 |
v1beta2 |
1.16+ | 3.5.0 |
v1beta2-1.5.x-3.5.0 |
v1beta2 |
1.16+ | 3.5.0 |
v1beta2-1.4.x-3.5.0 |
v1beta2 |
1.16+ | 3.5.0 |
v1beta2-1.3.x-3.1.1 |
v1beta2 |
1.16+ | 3.1.1 |
v1beta2-1.2.3-3.1.1 |
v1beta2 |
1.13+ | 3.1.1 |
v1beta2-1.2.2-3.0.0 |
v1beta2 |
1.13+ | 3.0.0 |
v1beta2-1.2.1-3.0.0 |
v1beta2 |
1.13+ | 3.0.0 |
v1beta2-1.2.0-3.0.0 |
v1beta2 |
1.13+ | 3.0.0 |
v1beta2-1.1.x-2.4.5 |
v1beta2 |
1.13+ | 2.4.5 |
v1beta2-1.0.x-2.4.4 |
v1beta2 |
1.13+ | 2.4.4 |
For developing with Spark Operator, please refer to Developer Guide.
For contributing to Spark Operator, please refer to Contributor Guide.
#kubeflow-spark-operator
Channel.Check out adopters of Spark Operator.