ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Helm 으로 Spark 구축하기
    Spark 2023. 12. 15. 06:39
    728x90
    반응형

     

    - 목차

     

    함께 보면 좋은 글.

    https://westlife0615.tistory.com/407

     

    KinD 알아보기.

    - 목차 소개. KinD 는 "카인드" 라고 발음되며, 로컬 머신에서 쿠버네티스를 간편하게 실행할 수 있는 도구입니다. KinD 는 Kubernetes in Docker 의 약자이구요. Docker 를 활용하여 쿠버네티스 환경을 구성

    westlife0615.tistory.com

    https://westlife0615.tistory.com/408

     

    Helm 알아보기

    - 목차 소개. Helm 은 쿠버네티스를 위한 패키지 매니저입니다. npm, pip 등의 패키지 매니저들이 이미 만들어진 라이브러리들을 추가/삭제할 수 있는 기능을 제공하듯이, Helm 은 미리 설정된 쿠버네

    westlife0615.tistory.com

     

    소개.

    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

     

    spark 8.1.6 · bitnami/bitnami

    Apache Spark is a high-performance engine for large-scale computing tasks, such as data processing, machine learning and real-time data streaming. It includes APIs for Java, Python, Scala and R.

    artifacthub.io

     

    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
Designed by Tistory.