Spark

Spark - 데이터 구조 - RDD

개발 일기92 2024. 5. 14. 15:17

Spark의 데이터 구조

  • RDD (Resillient Distributed Data)
  • Dataframe
  • Dataset

RDD란?

Resillient(회복력) : 메모리 내부에 데이터 손실이 있을 경우 파티션을 재연산해 복구함.

Distributed(분산) : Spark cluster를 통하여 메모리에 분산되어 저장

Data : 파일, 정보

즉, 회복력 있는 분산 데이터.

 

RDD는 위 그림과 같은 Lineage(혈통)를 가진다.

RDD는 불변의 특성 Read Only을 가지는데,

그렇기 때문에 특정 동작을 위해서는 기존 RDD를 변형한 새로운 RDD가 생성될 수 밖에 없다.

그래서 위 그림과 같은 수 많은 RDD들이 생성되게 된다.

이때 생성되는 연산 순서가 Lineage이다.

 

특정 동작에 의해 생성되는 RDD Lineage는 DAG(Directed Acyclic Graph)의 형태를 가진다.

위와 같은 그래프를 말한다.

노드간의 순환(cycle: 시작점과 끝점이 같은 형태) 이 없으며, 일정한 방향성을 가진다.

즉, 각 노드간에는 의존성이 있고, 노드 간의 순서가 중요하다.

 

이런 DAG에 의해 특정 RDD정보가 유실되었을 경우 그래프를 다시 복기하여 계산, 자동복구 할 수 있다.

Fault-tolerant(작업 중 장애나 고장이 발생하여도 예비 부품이나 절차가 즉시 그 역할을 대체 수행함으로써 서비스의 중단이 없게 하는 특성)를 보장하는 강력한 기능을 가지고 있다.

 

RDD 동작 원리

앞 내용 처럼 RDD는 스파크의 가장 기본적인 데이터 단위이다.

모든 작업은 새로운 RDD를 생성 or 새로운 RDD로 변형 / 최종 결과 계산을 위해 RDD에서 연산 API 호출하는 작업이 수행된다.( Read Only 특성 때문)

직관적인 RDD흐름의 그림이다.

이처럼 Data source로 부터 최종 Data에 도달하기 위해서는 많은 RDD가 새로 생성되고 변형되는 작업이 발생한다.

 

그림 중, Transformation과 Action에 대한 설명

RDD 동작 원리의 핵심은 Lazy Evaluation(느긋한 연산)이라는 키워드에 있다.

즉시 실행하지 않는 것을 의미한다.

Action연산자를 만나기 전까지 Transformation 연산자가 쌓여도 처리하지 않는다.

이는 Hadoop의 Map Reduce 동작과 대조적이기 때문에

Spark는 간단한 operation들에 대한 성능적 이슈를 고려하지 않아도 된다는 장점이 있다.

 

Transformation 연산자는 기존 RDD에서 새로운 RDD를 생성하는 동작이다.

Transformation에서는 spark가 실제 연산작업을 수행하지 않음.

 

Transformationd의 대표적인 연산

 

Action의 대표적인 연산 

 

 

출처 : https://artist-developer.tistory.com/17?category=962892

 

[Spark] Spark RDD(Resillient Distributed Data)란?

 

artist-developer.tistory.com

스파크에 대해 공부하던 중 위 블로거님의 자세한 설명덕에 하나하나 받아 적으며 spark에 대해 정리중이다.

기존에 알던 정보도 있지만 깔끔한 정리 덕분에 개념이 더 단단해진 것 같다.

감사합니다!

'Spark' 카테고리의 다른 글

Spark - 데이터 구조 - DataFrame  (0) 2024.05.14
Spark 구조  (1) 2024.05.14
Spark 란?  (0) 2024.05.14
scala- SaveMode, StorageLevel  (0) 2024.04.09
Spark-submit  (0) 2024.04.09