Spark: 분산 데이터 처리 프레임워크로, 빅데이터 작업을 빠르게 처리할 수 있습니다.
Kubernetes(K8s) 상에서 Spark를 실행하려면 Spark의 Kubernetes 지원 기능을 이용할 수 있습니다.
설치하기 (기본)
Spark Docker 이미지 준비하기
- Spark 다운로드 및 압축 해제:
- Docker 이미지 빌드 및 푸시:
./bin/docker-image-tool.sh -r <your-docker-repo> -t v3.1.2 build ./bin/docker-image-tool.sh -r <your-docker-repo> -t v3.1.2 push
wget https://archive.apache.org/dist/spark/spark-3.1.2/spark-3.1.2-bin-hadoop3.2.tgz tar -xvzf spark-3.1.2-bin-hadoop3.2.tgz cd spark-3.1.2-bin-hadoop3.2
SparkPi 예제 실행
- Kubernetes에서 Spark 예제 실행:
./bin/spark-submit
\ --master k8s://https://<k8s-apiserver-address>:<port>
\ --deploy-mode cluster
\ --name spark-pi
\ --class org.apache.spark.examples.SparkPi
\ --conf spark.executor.instances=1
\ --conf spark.kubernetes.container.image=<your-docker-repo>/spark:v3.1.2
\ local:/opt/spark/examples/jars/spark-examples_2.12-3.1.2.jar
<k8s-apiserver-address>
는 쿠버네티스 API 서버의 주소로 변경하고, <your-docker-repo>
는 앞서 Docker 이미지를 푸시한 저장소 주소로 변경해야 합니다.
로그 확인
작업이 제출되면, 쿠버네티스에서 해당 드라이버 및 익스큐터의 로그를 확인하여 작업 진행 상황을 알 수 있습니다.
kubectl logs <spark-driver-pod-name>
설치하기 (Helm)
Helm은 쿠버네티스(Kubernetes) 패키지 매니저로, 복잡한 어플리케이션을 쿠버네티스에 배포하는 작업을 간소화해줍니다.
여기에서는 Bitnami의 Spark Helm 차트를 사용하여 설치하는 방법을 안내하겠습니다.
Helm 설치 및 초기화
아직 Helm이 설치되지 않았다면, 먼저 Helm을 설치하고 초기화해야 합니다.
Bitnami Helm 리포지토리 추가
Bitnami 리포지토리에는 다양한 어플리케이션에 대한 Helm 차트들이 포함되어 있습니다.
helm repo add bitnami https://charts.bitnami.com/bitnami
Spark Helm 차트 설치
helm install my-spark bitnami/spark
my-spark
은 배포에 대한 이름으로, 원하는 이름으로 변경할 수 있습니다.
설치 확인
몇 분 후, 설치된 Spark의 상태와 서비스 주소를 확인할 수 있습니다:
kubectl get pods
kubectl get svc
웹 UI 접속
kubectl port-forward --address 0.0.0.0 --namespace default svc/my-spark-master-svc 80:80
예제 실행
Spark shell, PySpark shell 등을 사용하여 Spark 클러스터 상에서 작업을 실행할 수 있습니다. 예를 들어, spark-pi
예제를 실행하려면:
kubectl exec -it my-spark-master-0 /opt/bitnami/spark/bin/run-example SparkPi 10
위의 명령어는 Spark의 π(파이) 계산 예제를 실행합니다.
Helm을 사용하여 쿠버네티스에 Spark를 설치하면 관리 및 확장이 더욱 간편해집니다. Bitnami의 Spark 차트는 기본 설정으로 제공되지만, 실제 프로덕션 환경에서는 사용자의 요구에 맞게 설정을 조정하거나 확장해야 할 수도 있습니다.
'MlOps' 카테고리의 다른 글
JupyterHub를 Kubernetes에 Helm을 사용하여 설치하기 (0) | 2023.09.04 |
---|---|
Jupyter Notebook 데이터 엔지니어링 환경구축 (0) | 2023.09.04 |