Apache Spark study (2)

jihunnit·2023년 12월 26일
0

데이터엔지니어링

목록 보기
2/3

Spark에서의 분산 데이터와 파티션

스파크에서 실제 물리적인 데이터는 HDFS(HaDoop File System)나 클라우드 저장소에 존재하는 파티션이 되어 저장소 전체에 분산된다.
데이터가 파티션이 되어 물리적으로 분산되며, 스파크는 각 파티션을 메모리의 데이터 프레임 객체로 바라본다.
각 스파크 이그제큐터는 데이터 지역성을 고려하여 네트워크에서 가장 가까운 파티션을 읽도록 태스크를 할당한다.
이러한 파티셔닝을 통해, 네트워크 사용을 최소화하고 효과적인 병렬 처리를 가능하게 해준다.


스파크 어플리케이션 작업 단위별 설명

  • 태스크 : 스파크 이그제큐터로 보내지는 작업 실행의 가장 기본적인 단위
  • 스테이지 : 서로 의존성을 가지는 다수의 태스크 모음
  • 잡(job) : 스파크 액션에 대한 응답으로 생성되는 병렬 연산. 스테이지의 모음.

스파크 연산의 종류

  • 트랜스포메이션(transformation)

    이미 불변성의 특징을 가진 원본 데이터를 수정하지 않고 하나의 스파크 데이터 프레임을 새로운 데이터 프레임으로 변형하는 연산 (ex: select(), filter() 등)
    트랜스포메이션의 결과는 즉시 계산되는게 아니라 계보(lineage)라 불리는 형태로 기록됨(지연평가)
    기록된 리니지는 실행 계획의 후반에 확실한 트랜스포메이션들끼리 재배열 및 결합 등을 통해 최적화

  • 액션(action)

    모든 기록된 트랜스포메이션의 지연 평가를 발동시킴. 즉 액션 a가 호출되면 그 전까지 기록된 모든 트랜스포메이션이 실제로 실행되며 데이터에 접근함
    (ex, show(), take() 등)

지연 평가를 통해 쿼리의 최적화를 가능하게 하며, 리니지와 데이터 불변성을 통해 데이터 내구성 제공


스파크 연산 - 트랜스포메이션의 종류

  • 좁은 의존성
    하나의 입력 파티션을 연산하여 하나의 결과 파티션을 내놓는 트랜스포메이션

  • 넓은 의존성
    groupBy()나 orderBy()를 쓸 경우, 다른 파티션으로부터 데이터를 읽어 들이고 디스크에 쓰는 작업 등

profile
인간은 노력하는 한 방황한다

0개의 댓글