본문 바로가기
Big Data/Apache Spark

[Spark] Spark 란?

by seaweed_one 2022. 12. 11.
728x90

Spark 의 등장 배경

HDFS에서 진행되는 하둡의 속도적 한계를 극복하기 위하여 등장하였습니다.

하둡과는 달리 Ram을 Rom처럼 Read Only로 사용하여 반복 처리 작업에서는 하둡보다 속도가 최소 100배 이상 빠르고 다양한 언어를 지원하여 실시간 데이터 처리라는 니즈를 충족시키며 국내의 실시간 데이터 분석에서 스파크의 비율이 상당 부분을 차지하게 되었습니다.

 

 

Spark 자료 구조

Spark의 자료구조는 크게 아래와 같이 분류 가능합니다.

  1. RDD
  2. DataFrame
  3. DataSet

각각의 자료 구조의 특징을 자세하게 알아보겠습니다.

RDD

1. 분산 , 불변

먼저 스파크의 가장 기본적인 데이터 단위로 RDD는 불변(Read Only) 의 특성을 가지고 있습니다.

따라서 특정 동작을 위해서는 RDD 를 변형한 새로운 RDD 생성이 필요합니다.

이때 생성되는 연산 순서가 바로 Lineage 입니다.

RDD Lineage 는 DAG(Directed Acyclic Graph, 비순환 방향성 그래프)의 형태를 가지는데 DAG 에는 모든 RDD의 생성 과정이 기록되어 있어 특정 RDD 관련 정보가 메모리에서 유실되었을 경우 그래프를 복기하여 다시 계산하고 자동으로 복구하여 *Fault-Tolerant를 보장합니다.

*Fault-Tolerant : 작업 중 장애나 고장이 발생하여도 예비 부품이나 절차가 즉시 그 역할을 대 체 수행하여 서비스의 중단이 없게 하는 특성

 

2.Partition

각 RDD는 서로 다른 노드들에서 연산이 가능하도록 여러 개의 Partition으로 나뉘는데 파티션의 크기와 수를 조정하고 파티션 배치 방법을 설정하여 RDD의 구조를 제어 가능합니다.

스파크의 파티셔닝 기법에 대해서는 다음 포스팅에서 자세하게 다루겠습니다.

 

3. RDD는 외부 데이터 셋 로드하거나 드라이버 프로그램에서 객체 컬렉션을 분산하여 생성이 가능.

 

4. Transformation , Action 의 연산을 가짐

해당 내용 또한 차후에 자세하게 다루겠습니다.

 

5. Lazy Evalution 

Spark 는 메타데이터에 연산이 요청되었다는 사실만 기록하고 실제 연산은 action을 사용하는 시점에 처리됩니다.

데이터 로드 또한 실제 필요한 시점이 되기 전까진 로딩되지 않습니다.

 

DataFrame

1.Spark SQL 사용 가능

DataSet에서 각 칼럼에 이름을 붙여 만들어진 형태로 RDB Table처럼 Schema를 가지고 있으며 RDB의 Table 연산이 가능

2. 데이터 프레임 또는 데이터 셋 생성을 위해서는 *SparkSession이 필요.

 

DataSet

1. 분산된 데이터 모음.

2.RDD와 Dataframe의 장점을 취함

SparkSQL의 최적화된 실행 엔진과 RDD의 이점을 제공합니다.

Spark 2.0 에서는 데이터 프레임 &데이터셋 API 가 합쳐졌습니다.

 

다음 포스팅에서는 파티셔닝과 Transformation , Action 연산에 대하여 알아보겠습니다.

728x90

'Big Data > Apache Spark' 카테고리의 다른 글

[Spark] Spark Cluster Manager  (2) 2022.12.16
[Spark] Spark Deploy Mode  (0) 2022.12.16
[Spark] Spark Job  (0) 2022.12.15
[Spark] Spark Evalution  (0) 2022.12.13
[Spark] Spark Partitioning  (0) 2022.12.11