컴퓨터 지식/데이터베이스
[DB] Hadoop 과 Spark 요약정리 / 3️⃣ - RDD란?
서상혁
2021. 3. 7. 17:51
목차
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 연산의 순서를 계보로 기록 ⇒ DAG 형태로 표현
- DAG
- Directed Acyclic Graph (직관적 방향성 비순환 그래프)
- 즉, 반복이 일어나지 않는 그래프
예시
- 위 그림은 RDD 가 변형되는 과정
- 이 과정을 계보 형태로 그림을 그려 놓는다.
- 추후에 동일한 RDD 를 생성이 가능
⇒ 나중에 복구가 가능
- 일부 계산 비용이 큰 RDD 는 디스크에 Check Pointing
- 추후에 동일한 RDD 를 생성이 가능
Lazy Execution
- 변환 연산은 읽어들일 때는 단순히 계보만 생성
- Action 이 실행됐을 때만 생성된 계보를 실행
작업 스케쥴링
- 미리 계보가 그려진 상태
- 앞으로의 상황, dependency 등을 고려해서 미리 작업 분산 계산이 가능해짐
참고 및 이미지 출처
728x90
Uploaded by Notion2Tistory v1.1.0