IT 정리/아파치 스파크

클러스터&스파크 아키텍쳐 소개

유정임 2026. 4. 30. 12:57

클러스터란?

- 서로 연결된 여러개의 컴퓨터(노드)를 한개의 목표를 가지고 프로세스를 하는 것

- 분산 시스템에서 가장 유명한 아파치 스파크에서는 가장 중요한 backbone같은 역할, 태스크를 받으면 작게 나눈 다음에 수행 후 결과를 한꺼번에 모은 후 사용자에게 보여줌

 

클러스터 종류

  • On-Preminss
    • 회사가 직접적으로 가지고 있는 물리적 서버를 가지고 만든 클러스터
    • 직접적으로 유지해야하는 단점
  • Cloud-Based Cluster
    • 클라우드에서 가상 클러스터로 사용할때만 비용 지불
  • Hybrid Cluster
    • 몇개 클러스터는 온프레미스로, 몇개의 클러스터는 트래픽이 올때마다 퍼블릭 클라우드로 노드를 가상으로 받음

 

클러스터를 이용하는 이유

  • Improved Performance
    • 큰 데이터를 평행 프로세싱을 하기 때문에 수행 시간이 짧다
  • Cost Effiecieny
    • 기본 PC는 하드웨어를 사용하기 때문에 슈퍼컴퓨터보다 저렴하다
  • Scalability
    • 데이터가 많아질수록 노드를 사용할수록 수평 노드를 많이 사용해서 처리하기 쉬움
  • Fault Tolenrance
    • 잘못될 경우 다른 노드가 자동으로 대체로 수행

클러스터 수행 방식

클러스터의 중요 요소들

  • Master Node
    • 작업을 접수하면, 워커 노드에 임대
    • 업무를 관리, 리소스 할당, 작업 스케줄
  • Worker Node=Slave Node
    • 마스터 노드에서 업무를 받고 업무 수행
    • 각 노드에는 노드 매니저가 존재 = 노드를 모니터링하는 프로세스
  • Cluster Manager
    • 전체적인 클러스터를 계속 모니터링하고 리소스를 잘 분배하는 역할

위 그림의 Slave Node-Container-Task를 확대한 모

워커노드내의 요소들

  • Pyspark를 시작하는 Driver가 존재 → 이게 JVM을 생성
  • PySpark와 JVM 커뮤티케이션을 할 때는 Py4J 라이브러리를 이용
  • JVM이 또 다른 JVM을 생성 
    • JVM안에서 데이터를 프로세스
    • Python Worker가 존재 
      • PySpark를 사용하기 때문에  Python Worker가 Python 라이브러리를 가지고 있다가 JVM이 사용할 때 라이브러리에 대한 정보를 줌
    • python이 새로운 라이브러리를 사용하려면 각각의 노드에 install되어있어야함. 그래서 JVM이 참조할 수 있게 Python Worker가 존재

'IT 정리 > 아파치 스파크' 카테고리의 다른 글

Spark 기초(1)  (0) 2026.05.01
Spark 환경 설정  (0) 2026.04.30
Apache Spark 설치(window), jupyter 접속  (0) 2026.04.30
RDD, Docker 소개  (0) 2026.04.30
아파치 스파크 소개  (0) 2026.04.30