오늘의 인기 글
최근 글
최근 댓글
Today
Total
11-30 00:48
관리 메뉴

우노

[Spark] RDD 란? 본문

Data/Spark

[Spark] RDD 란?

운호(Noah) 2020. 7. 13. 13:16

Spark 의 데이터 구조

  • Spark 의 데이터 구조는 아래와 같이 크게 3가지 종류로 분류할 수 있습니다.
    • RDD (Resillient Distributed Data)
    • Dataframe
    • Dataset
  • 그 중, RDD 는 Spark 에 가장 처음으로 도입된 데이터 구조입니다.

RDD 개념

  • RDD(Resillient Distributed Data) 는 아래와 같은 의미를 가집니다.
    • Resillient (회복력 있는, 변하지 않는)
      • 메모리 내부의 데이터가 손실되었을 때, 유실된 파티션을 재연산해 데이터를 복구할 수 있습니다.
    • Distributed (분산된)
      • 스파크 클러스터를 통하여, 메모리에 분산되어 저장됩니다.
    • Data
      • 데이터입니다.
  • 즉, RDD 는 여러 분산 노드에 걸쳐 저장되는, 변경이 불가능한 데이터의 집합입니다.
  • 따라서, RDD 를 변경하기 위해선 새로운 RDD 를 생성하는 방법뿐이며,
  • RDD 는 2가지 Operation 을 사용해 조작할 수 있습니다.

Operation

  • RDD 는 2가지 Operation (Transformation, Action) 을 지원합니다.
    • Transformation
      • 기존의 RDD 를 변경하여 새로운 RDD 를 생성하는 것입니다.
      • 즉, 리턴값이 RDD 입니다.
      • map, filter 등을 예로 들 수 있습니다.
    • Action
      • RDD 값을 기반으로 무엇인가를 계산해서, 결과를 생성하는 것입니다.
      • 즉, 리턴값이 데이터 또는 실행 결과입니다.
      • collect, count 등을 예로 들 수 있습니다.
  • 이러한, RDD 동작 원리의 핵심은 Lazy Evaluation (느긋한 연산) 입니다.
  • 즉, RDD 는 Action 연산자를 만나기 전까지는, Transformation 연산자가 아무리 쌓여도 처리하지 않습니다.

DAG (Directed Acyclic Graph)

  • 위처럼, RDD 를 변경하는 순서를 Lineage 라고 하며

  • Lineage 는 DAG(Directed Acyclic Graph)의 형태를 가집니다.

  • DAG 의 형태는 아래와 같습니다.

    • 노드간의 순환이 없으며, 일정한 방향성을 가지기 떄문에
    • 노드 간의 순서가 중요한 형태입니다.
  • 따라서, RDD 연산 과정에서 특정 RDD 관련 정보가 메모리에서 유실됐을 경우,

  • DAG 그래프를 복기하여 다시 계산하고, 복구할 수 있습니다.

  • Spark 는 이러한 특성 때문에 Fault-tolerant 를 잘 보장합니다.

참고

Comments