SPARK / PYSPARK

Ryan·2025년 1월 18일

SQL/Python 분석

목록 보기
82/94

. Apache Spark 소개

Apache Spark는 분산 클러스터 컴퓨팅을 위한 오픈소스 프레임워크로, 대규모 데이터를 병렬로 처리할 수 있도록 설계되었습니다.

  • 주요 특징:
    • 범용적인 빅데이터 분석 도구
    • SQL, 스트리밍 데이터 처리, 머신러닝, 그래프 분석 등을 지원
    • 고속 데이터 처리를 위한 인메모리 컴퓨팅(In-Memory Computing) 기반

2. 분산 클러스터란?

분산 클러스터는 시스템의 성능을 향상시키기 위해 데이터를 여러 노드로 나누어 병렬로 처리하는 방식입니다.

  • 핵심 개념:
    • 병렬 처리: 데이터를 여러 노드에서 동시에 처리
    • 확장성: 노드 추가를 통해 처리 능력을 확장
    • 내결함성: 일부 노드의 장애에도 작업 지속 가능

3. Spark의 구조

Spark는 Driver ProcessExecutors로 구성됩니다.

  • Driver Process:
    • Spark 애플리케이션의 중앙 제어 역할
    • 사용자 코드 실행, 작업 스케줄링 및 배포 담당
  • Executor:
    • 작업을 병렬로 실행하고 결과를 Driver에 보고
  • Cluster Manager:
    • 사용 가능한 자원을 파악하고 작업을 조율

Spark Session

  • Spark 애플리케이션의 통합 진입점으로, 데이터 처리와 작업 실행을 관리

4. Spark 데이터 처리 방식

Spark는 데이터 처리를 위해 다음과 같은 핵심 원칙을 따릅니다.

4.1 Partition

  • 데이터를 파티션(Partition) 단위로 나누어 병렬 작업을 수행
  • 파티션은 데이터를 물리적으로 클러스터 내 노드에 분산 저장

참고: DataFrame

  • 테이블 형태의 데이터를 Row와 Column으로 표현
  • DataFrame의 파티션은 실행 중 물리적으로 분산 처리

4.2 Transformation

  • Spark의 데이터는 불변성(Immutable)을 가짐
  • 변환 작업(Transformation)은 실행 계획만 수립하며, 실제 데이터 변경은 Action에서 수행됨

4.3 Lazy Evaluation과 Action

  • Lazy Evaluation:
    • Transformation은 즉시 실행되지 않고, Action이 호출될 때 실행
    • 효율적인 실행 계획을 수립하여 성능 최적화
  • Action:
    • Transformation 결과를 계산하거나 저장
    • 예: 카운트, 데이터 보기, 파일 저장

5. Catalyst: Spark의 최적화 엔진

5.1 Catalyst의 개념

  • Spark SQL과 DataFrame API는 Catalyst Optimizer를 사용해 최적의 실행 계획을 수립합니다.
  • 트랜스포메이션 수행 시, Catalyst는 논리 계획을 트리 형태로 생성하고 실행합니다.

5.1 Catalyst의 논리 계획 단계

1. Unresolved Logical Plan:

  • SQL Query 또는 DataFrame에서 초기 생성되는 논리 계획.
  • 사용된 컬럼, 테이블 등이 명확하지 않은 상태.

2. Optimized Logical Plan:

  • Catalyst가 최적화한 논리 계획.
  • 불필요한 연산 제거 및 효율적인 실행을 위한 계획 수립.

3. Physical Plan:

  • 실행 가능한 물리적 연산 계획.
  • 여러 후보 중 비용이 가장 적은 계획 선택.

4. Code Generation:

  • 물리적 계획을 기반으로 실행 가능한 코드(RDD) 생성.

5.2 Catalyst의 장점

  • Shuffling 및 Partition 최적화:
    • 네트워크 병목 현상을 방지하기 위해 데이터를 재정렬하는 작업을 자동으로 최적화.
  • 데이터 정렬 최적화:
    • 연산 효율을 높이기 위해 데이터의 순서를 계획적으로 조정.

5. 결론

Apache Spark는 Catalyst Optimizer를 통해 데이터 처리 효율성을 극대화하며, 대규모 데이터 분석에서 중요한 역할을 합니다. Catalyst의 자동화된 최적화 과정은 데이터 엔지니어와 분석가가 더 나은 인사이트를 도출하는 데 집중할 수 있도록 지원합니다.

0개의 댓글