[Apache Spark] 스파크 작동 원리

연수·2021년 11월 14일
0

spark

목록 보기
4/26

⛑️ 스파크 작동 원리

  • 스파크는 데이터를 클러스터에 분산시켜 병렬 처리 한다.
  • master/slave 구조를 사용한다. 하나의 드라이버 프로세스와 다수의 익스큐터 프로세스로 구성된다.
  • spark application = driver + executors
  • 클러스터 매니저를 통해 스파크 애플리케이션이 실행된다.
  • 클러스터 매니저로는 standalone, hadoop yarn, apache mesos 등이 사용될 수 있다.

 

🥑스파크 관련 용어들

👉 SparkContext

  • 클러스터 매니저와 연결되는 객체

👉 Spark Application

  • 드라이버와 익스큐터 프로세스로 실행되는 스파크 실행 프로그램
  • 실제 일을 수행하는 역할
  • 드라이버와 익스큐터로 구성

👉 Job

  • 스파크 애플리케이션에 전달한 작업

👉 Stage

  • job은 여러 개의 stage로 구분된다.

👉 Task

  • 익스큐터에서 실행되는 작업
  • 각각의 stage는 여러 task로 이루어지며, 파티션에 task가 할당된다.

👉 Driver

  • 한 개의 노드에서 실행되며, 스파크 전체의 main() 함수를 실행
  • SparkContext 객체를 생성
  • job을 task 단위로 변환하여 익스큐터로 전달
  • 스파크 어플리케이션의 라이프 사이클을 관리
  • 정보 유지 관리, 익스큐터의 실행 및 분석, 배포 등의 역할 수행

👉 Spark Executors

  • 다수의 워커 노드에서 실행
  • 드라이버가 할당한 task를 수행하여 결과를 반환
  • 블록매니저를 통해 캐시하는 RDD를 저장

👉 Cluster Manager

  • 스파크 어플리케이션의 리소스를 효율적으로 분배
  • 작업이 실행되는 노드를 관리
    • StandAlone: 스파크에서 자체적으로 제공하는 클러스터 매니저. 각 노드에서 하나의 익스큐터만 실행 가능
    • Apache Mesos: 아파치 클러스터 매니저. 동적 리소스 공유 및 격리로 여러 소스의 워크로드를 처리
    • Hadoop YARN: 하둡 클러스터 매니저 (리소스 매니저, 노드 매니저)

 

⚙️ Spark Application 실행 과정


  1. 사용자가 어플리케이션 제출
  2. 드라이버가 main()을 실행하여 SparkContext 생성 (SparkContext는 클러스터 매니저와 연결된다.)
  3. 드라이버가 클러스터 매니저로부터 익스큐터 실행을 위한 리소스 요청
  4. SparkContext는 작업 내용을 task 단위로 분할하여 Executor에 전달
  5. 각 Executor는 작업을 수행하고 결과 저장

 

🌈 스파크 장점

  1. 빠른 처리 속도

    스파크의 가장 큰 장점!

  2. 다양한 프로그래밍 언어 지원

    스칼라, 파이썬, 자바, R 등

  3. 다양한 라이브러리 지원

    SQL, DataFrame, MLlib, Spark Streaming 등

  4. 실시간에 가까운 프로세싱 가능

    MapReduce로 하둡에 저장된 데이터 처리 가능

    Spark Streaming으로 실시간 처리 가능

  5. 높은 호환성

    하둡, 아파치 메소스, 쿠버네티스, 스탠드얼론, 클라우드 등에서 작동

profile
DCDI

0개의 댓글