Spark Operator ๋?
Spark Operator ๋ Kubernetes ํ๊ฒฝ์์ Apache Spark Application ์ ๋ฐฐํฌํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ Custom Controller ๋ค.
๊ตฌ์ฑ ์์
- Custom Resource Definitions (CRDs)
- SparkApplication: ํ๋์ Spark Application ์ ์ ์
- ScheduledSparkApplication: ์ฃผ๊ธฐ์ ์ผ๋ก ์คํ๋๋ Spark Application ์ ์ ์
- Operator
- CRD ๋ฅผ ๊ฐ์งํ๊ณ ํ์ํ K8s Object ๋ฅผ ์์ฑ, ์ ๋ฐ์ดํธ, ์ญ์
- Spark Driver ์ Executor Pod ๋ฅผ ๊ด๋ฆฌ
- Admission Webhook
- K8s API ์๋ฒ์ ์์ฒญ์ด ๋๋ฌํ๊ธฐ ์ ์ ์์ฒญ์ ๊ฐ๋ก์ฑ์ด ๋ฆฌ์์ค์ ํ์ํ ์ค์ ์ ์ฃผ์
- Spark Application Pod ๊ฐ ์์ฑ๋ ๋ ํ๊ฒฝ ๋ณ์, ๋ณผ๋ฅจ ๋ง์ดํธ ๋ฑ ํ์ํ ์ค์ ์ ์ฃผ์
Spark Operator ์ ์๋ ๋ฐฉ์
- ์ฌ์ฉ์๊ฐ Spark Application ์ ์์ฑ
- Operator ๊ฐ ์ด๋ฅผ ๊ฐ์งํ๊ณ K8s Object ๋ฅผ ์์ฑ
- Spark Driver Pod ๊ฐ ์์ฑ๋จ
- Spark Driver ๊ฐ Executor Pod ์์ฑ ์์ฒญ ๋ฐ ๊ด๋ฆฌ
- Spark Job ์ด ์ข ๋ฃ๋๋ฉด Operator ๊ฐ ๋ฆฌ์์ค๋ฅผ ์ ๋ฆฌ
Spark Operator ์ค์น
# ๋ค์์คํ์ด์ค ์์ฑ
kubectl create namespace spark-operator
# Helm Repo ์ถ๊ฐ ๋ฐ ์
๋ฐ์ดํธ
helm repo add spark-operator https://kubeflow.github.io/spark-operator
helm repo update
# ์ค์น
helm install spark-operator spark-operator/spark-operator \
-n spark-operator \
--set enableWebhook=true \
--set image.tag=v1beta2-1.1.27-3.5.0 \
--set serviceAccounts.spark.create=true \
--set serviceAccounts.spark.name=spark-sa
# ์ค์น ํ์ธ
kubectl get pods -n spark-operator
kubectl get crds | grep sparkoperator
Helm ์ฐจํธ๋ฅผ ํตํด Spark Operator ๋ฅผ ์์ฝ๊ฒ ์ค์นํ ์ ์์ผ๋ฉฐ, Webhook ์ ํ์ฑํํ๋ฉด Pod ์ ํ์ํ ์ค์ (๋ผ๋ฒจ/์ด๋ ธํ ์ด์ /ํ๊ฒฝ๋ณ์)์ ์๋ ์ฃผ์ ํ ์ ์๋ค.
Spark Job ์คํ
SparkApplication CRD ์ฌ์ฉ
apiVersion: sparkoperator.k8s.io/v1beta2
kind: SparkApplication
metadata:
name: spark-pi-minimal
namespace: data-jobs
spec:
type: Scala
mode: cluster
image: gcr.io/spark-operator/spark:v3.5.0
mainClass: org.apache.spark.examples.SparkPi
mainApplicationFile: local:///opt/spark/examples/jars/spark-examples_2.12-3.5.0.jar
sparkVersion: 3.5.0
driver:
cores: 1
memory: 512m
serviceAccount: spark-sa
executor:
instances: 2
cores: 1
memory: 512m
restartPolicy:
type: Never
timeToLiveSeconds: 600 # ์๋ฃ ํ 10๋ถ ๋ค Driver/Executor Pod ์ ๋ฆฌ
YAML ํ์ผ๋ก SparkApplication CRD ๋ฅผ ์์ฑํ๋ฉด Operator ๊ฐ ์ด๋ฅผ ๊ฐ์งํ๊ณ Driver Pod ์ ์์ฑํ๋ค. SparkApplication CRD ๋ฅผ ์ฌ์ฉํ์ฌ Spark Job ์ ์คํํ ๊ฒฝ์ฐ TTL ์ ์ ์ฉํด Completed ์ํ์ Pod ๋ฅผ ์๋์ผ๋ก ์ ๊ฑฐํ ์ ์๋ค.