본문 바로가기
컴퓨터 지식/데이터베이스

[DB] Hadoop 과 Spark 요약정리 / 3️⃣ - RDD란?

by 서상혁 2021. 3. 7.

목차

 


RDD (Resilient Distributed Dataset)

 

💡
여러 분산 노드에 걸쳐서 탄력적으로 저장되는 변경이 불가능한 데이터 구조

 

  • Spark 의 핵심 데이터 모델
  • 병렬처리 가능
  • 에러 시에도 스스로 복구가 가능

 

Why RDD?

 

  • 인메모리 데이터 처리를 위한 데이터 셋
  • 데이터 분산 저장을 위해
  • 데이터에 Fault Tolerance 적용 가능

 

주요 특징

 

  • 여러 분산 노드에 나누어짐
    • 매우 효율적인 분산처리
  • 다수의 파티션으로 관리됨
    • 하나의 RDD 는 여러 파티션으로 나뉜다.
    • 파티션의 개수, 파티셔너(Hash, Range) 등을 선택 가능
  • 변형이 불가능
    • 변형이 불가능하기에 복구가 쉽게 가능

 

작동방식

 

RDD 의 생성

  • 외부 (file system) 에서 데이터를 로딩 ⇒ RDD 생성

 

RDD 연산

  • Transformation (변환)
    • RDD를 다른 RDD로 변환할 때
    • 변환 연산 함수들이 매우 다양하다.
    • 예시 : filter, map
  • Action
    • RDD 에서 다른 타입의 데이터로 변환할 때
    • 예시 : count, collect

 

연산 예시

 

  • RDD 의 Transformation 그래프 예시
  • Data Source 가 다음과 같이 transformation 되는 과정들이 미리 Lineage 로 기록돼있다.
    • Lineage 에 대한설명은 아래 참고
  • Transformation 자체는 행위를 기록할 뿐, 작업이 실제로 이루어지는 것은 아니다.
  • Action 이 호출됨으로서, RDD 가 실제 특정 데이터로 변환

 

 

계보 (Lineage)

 

📖
어떻게 RDD 연산이 처리될 것인지를 기록

 

  • RDD 연산의 순서를 계보로 기록 ⇒ DAG 형태로 표현
  • DAG
    • Directed Acyclic Graph (직관적 방향성 비순환 그래프)
    • 즉, 반복이 일어나지 않는 그래프

 

예시

 

  • 위 그림은 RDD 가 변형되는 과정
  • 이 과정을 계보 형태로 그림을 그려 놓는다.
    • 추후에 동일한 RDD 를 생성이 가능

      ⇒ 나중에 복구가 가능

    • 일부 계산 비용이 큰 RDD 는 디스크에 Check Pointing

 

Lazy Execution

 

  • 변환 연산은 읽어들일 때는 단순히 계보만 생성
  • Action 이 실행됐을 때만 생성된 계보를 실행

 

작업 스케쥴링

 

  • 미리 계보가 그려진 상태
    • 앞으로의 상황, dependency 등을 고려해서 미리 작업 분산 계산이 가능해짐

 


참고 및 이미지 출처

728x90

댓글