Spark 맛보기 - 2. 스파크 애플리케이션 개념

1. 스파크 연산이 실행되기까지

스파크 연산들은 작업으로 표현된다. 작업들은 태스크라고 불리는 저수준 RDD 바이트 코드로 변환되며 실행을 위해 스파크의 executor들에 분산된다.

상위 수준 정형화 API로 표현된 모든 연산은 저수준으로 최적화되고 생성되는 RDD 작업으로 분해된 다음, executor들의 JVM을 위한 스칼라 바이트코드로 변환된다. 생성된 RDD 작업 코드들은 사용자들은 볼 수 없으며 사용자가 접근 가능한 RDD API와도 다르다.

2. 스파크 애플리케이션 개념의 이해

  • 애플리케이션
    • API를 써서 스파크 위에서 돌아가는 사용자 프로그램
    • 드라이버 프로그램과 클러스터의 실행기로 이루어진다.
  • SparkSession
    • 스파크 코어 기능들과 상호 작용할 수 있는 진입점을 제공하며 그 API로 프로그래밍을 할 수 있게 해주는 객체
  • job
    • 스파크 action에 대한 응답으로 생성되는 여러 task로 이루어진 병렬 연산
  • stage
    • 각 job은 stage라 불리는 서로 의존성을 가지는 다수의 태스크 모음으로 나뉜다.
  • task
    • 스파크 executor로 보내지는 작업 실행의 가장 기본적인 단위

A. 스파크 애플리케이션과 SparkSession

모든 스파크 애플리케이션의 핵심에는 스파크 드라이버 프로그램이 있으며, 이 드라이버는 SparkSession 객체를 만든다.

SparkSession 객체를 만들었으면 이를 통해 스파크 연산을 수행하는 API를 써서 프로그래밍이 가능하다.

B. 스파크 job

드라이버는 스파크 애플리케이션을 하나 이상의 스파크 job으로 변환한다. 각 job은 DAG로 변환된다. 이것이 스파크의 실행 계획이 된다.

DAG 그래프에서 각각의 노드는 하나 이상의 스파크 스테이지에 해당한다.

C. 스파크 stage

스파크 연산은 여러 스테이지로 나뉘어야 한다.

스파크 executor끼리의 데이터 전송이 이루어지는 연산 범위 경계 위에서 스테이지가 결정되기도 한다.

D. 스파크 task

각 stage는 최소 실행 단위이며 스파크 executor들 위에서 연합 실행되는 스파크 task들이 이루어진다.

99. 위 내용 중에 추가 설명이 필요한 부분 (알쓸신잡)

A. SparkContext와 SparkSession

a. SparkContext

SparkContext는 Spark 애플리케이션에서 가장 중요한 진입점이다. 클라이언트 프로그램과 Spark 클러스터 간의 연결을 설정하며, 다양한 Spark 기능을 초기화하고 구성한다.

b. SparkSession

Spark 2.0 이후로, SparkSession은 SparkContext, SQLContext, HiveContext 등을 하나로 통합한 단일 진입점으로 소개된다. 이는 DataFrame과 DataSet API, SQL 쿼리, Hive 쿼리 등을 쉽게 처리할 수 있도록 도와준다.

999. 참고자료

줄스 담지, 브룩 웨닉, 타타가타 다스, 데니 리 저/박종영, "러닝 스파크", 제이펍(2022)

이 글이 도움이 되었나요?

신고하기
0분 전
작성된 댓글이 없습니다. 첫 댓글을 달아보세요!
    댓글을 작성하려면 로그인이 필요합니다.