-
Helm 으로 Spark 구축하기Spark 2023. 12. 15. 06:39728x90반응형
- 목차
함께 보면 좋은 글.
https://westlife0615.tistory.com/407
https://westlife0615.tistory.com/408
소개.
Helm 으로 Spark Cluster 를 구축하는 과정을 설명하고자 합니다.
KinD 로 Kubernetes 클러스터 구축하기.
Spark Cluster 를 쿠버네티스에서 구축하기 위해서 먼저 Kubernetes 클러스터를 실행시켜보겠습니다.
간단히 KinD 를 통해서 쿠버네티스 클러스터를 실행할 예정입니다.
< k8s-cluster.yaml 생성 >
아래 명령어를 실행하여 /tmp/ 디렉토리 하위에 k8s-cluster.yaml 파일을 생성합니다.
cat <<EOF> /tmp/k8s-cluster.yaml kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane - role: worker - role: worker - role: worker EOF
< 쿠버네티스 클러스터 실행 >
아래 명령어를 실행하여 쿠버네티스 클러스터를 생성합니다.
kind create cluster \ --name test-cluster \ --image kindest/node:v1.24.0 \ --config /tmp/k8s-cluster.yaml
< 출력 내용 >
Creating cluster "test-cluster" ... ✓ Ensuring node image (kindest/node:v1.24.0) 🖼 ✓ Preparing nodes 📦 📦 📦 📦 ✓ Writing configuration 📜 ✓ Starting control-plane 🕹️ ✓ Installing CNI 🔌 ✓ Installing StorageClass 💾 ✓ Joining worker nodes 🚜 Set kubectl context to "kind-test-cluster" You can now use your cluster with: kubectl cluster-info --context kind-test-cluster Thanks for using kind! 😊
kubectl get node 명령어를 통해서 생성된 Node 들을 확인할 수 있습니다.
kubectl get node NAME STATUS ROLES AGE VERSION test-cluster-control-plane Ready control-plane 98s v1.24.0 test-cluster-worker Ready <none> 78s v1.24.0 test-cluster-worker2 Ready <none> 77s v1.24.0 test-cluster-worker3 Ready <none> 78s v1.24.0
Helm 으로 Spark Cluster 생성하기.
아래 링크는 bitnami Helm Chart 를 활용하여 스파크 클러스터를 생성하는 가이드입니다.
https://artifacthub.io/packages/helm/bitnami/spark
Helm Chart Install.
먼저 네임스페이스를 먼저 생성하겠습니다.
spark 라는 이름으로 네임스페이스를 생성할 예정이구요.
Spark Cluster 가 속하게된 네임스페이스입니다.
< kubectl create namespace spark >
kubectl create namespace spark
< 출력 내용 >
> namespace/spark created
< install Spark Helm Chart >
그리고 Spark Helm Chart 를 설치합니다.
아래 명령어를 통해서 Spark Helm Chart 를 설치할 수 있습니다.
helm -n spark install spark-chart oci://registry-1.docker.io/bitnamicharts/spark
아래와 같은 내용이 출력됩니다.
> Pulled: registry-1.docker.io/bitnamicharts/spark:8.1.6 > Digest: sha256:d9009151b77e74a2b8f336ef8001d86e7181bd2cd855b2caf0448d9db05a4ced > NAME: spark-chart > LAST DEPLOYED: Fri Dec 15 17:58:25 2023 > NAMESPACE: spark > STATUS: deployed > REVISION: 1 > TEST SUITE: None > NOTES: > CHART NAME: spark > CHART VERSION: 8.1.6 > APP VERSION: 3.5.0 > > ** Please be patient while the chart is being deployed ** > > 1. Get the Spark master WebUI URL by running these commands: > > kubectl port-forward --namespace spark svc/spark-chart-master-svc 80:80 > echo "Visit http://127.0.0.1:80 to use your application" > > 2. Submit an application to the cluster: > > To submit an application to the cluster the spark-submit script must be used. That script can be > obtained at https://github.com/apache/spark/tree/master/bin. Also you can use kubectl run. > > export EXAMPLE_JAR=$(kubectl exec -ti --namespace spark spark-chart-worker-0 -- find examples/jars/ -name 'spark-example*\.jar' | tr -d '\r') > kubectl exec -ti --namespace spark spark-chart-worker-0 -- spark-submit --master spark://spark-chart-master-svc:7077 \ --class org.apache.spark.examples.SparkPi \ > $EXAMPLE_JAR 5 > ** IMPORTANT: When submit an application from outside the cluster service type should be set to the NodePort or LoadBalancer. ** > ** IMPORTANT: When submit an application the --master parameter should be set to the service IP, if not, the application will not resolve the master. **
생성된 Pod 확인.
아래 명령어를 통해서 생성된 Pod 들을 확인할 수 있습니다.
kubectl -n spark get pod
1 개의 Master Node 와 2 개의 Worker Node 가 생성되었습니다.
> NAME READY STATUS RESTARTS AGE > spark-chart-master-0 1/1 Running 0 3m43s > spark-chart-worker-0 1/1 Running 0 3m43s > spark-chart-worker-1 1/1 Running 0 3m13s
그리고 2개의 Service 가 생성됩니다.
kubectl -n spark get service
> NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE > spark-chart-headless ClusterIP None <none> <none> 6m45s > spark-chart-master-svc ClusterIP 10.96.139.24 <none> 7077/TCP,80/TCP 6m45s
< Web UI >
아래 명령어를 통해서 웹 인터페이스로 접속할 수 있습니다.
kubectl -n spark port-forward service/spark-chart-master-svc 8082:80
반응형'Spark' 카테고리의 다른 글
[Spark] parallelize 알아보기 (0) 2023.12.15 Spark DataFrame 알아보기 (0) 2023.12.15 Spark Driver Program 알아보기 (0) 2023.12.06 [Spark] SparkSQL CSV 파일 Aggregation 하기 (0) 2023.10.03 [Spark] Spark Lazy Evaluation 알아보기 (0) 2023.05.22