본문 바로가기

엔지니어가 되자/데이터엔지니어링

[글또] Spark 정리하기 (1/2) - 개념, RDD

 

 

 다른 분들이 정리해주신 블로그 기록을 따라가며 개인적으로 정리를 시작!

 


Spark이란?

 - Spark은 "General Purpose High Performance Distributed Platform (범용 목적의 분산 고성능 클러스터링)"이다.

 

 - Spark이 처음에는 SQL과 같은 데이터 연산 처리를 위한 하나의 문법 정도가 아닐까 하고 막연하게 생각하고 있었는데 기존 정리된 블로그들을 따라가다보니 하나의 데이터 처리 플랫폼 라이브러리에 가깝다는 생각이 든다. 하나의 노드로는 처리하기 힘든 대규모의 데이터를 여러개의 분산된 노드들을 통해 데이터를 처리할 수 있도록 도와주는 데이터 처리 플랫폼.

 

 - 그렇기 때문에 Spark 클러스터/플랫폼 위에서 SQL을 수행하는 것은 물론이고, ML라이브러리 (Ex; Apache Mahout) 뿐만 아니라 기존 하둡에서 지원하던 MapReduce 연산 역시 인메모리에서 수행할 수 있도록 지원하는 플랫폼이다. 

 

 - Scala로 개발되었으며 Python/Java/R을 추가로 지원한다

 

등장 배경?

 - 스팍 이전에 Hadoop이 Map&Reduce 메커니즘을 이용하여 대규모 데이터 처리 플랫폼 분야에서 이끌어나가는 위치에 있었지만 디스크 기반의 I/O 수행에서 오는 속도저하를 해결한 플랫폼이 Spark이다. 그래서 가장 큰 차이점은 I/O 수행이 디스크에서 이루어지는지, 메모리에서 이루어지는지가 속도 향상에 큰 영향을 주었다. 그래서 메모리 하둡이라고 불리기도 한다.

 

 - 기존의 Hadoop의 연산 속도의 한계를 극복하기 위해 나온 인메모리 플랫폼인 만큼 하둡의 YARN을 기반으로 동작되기도 한다. 무엇보다도 당시 Spark이 나올 때 즈음에는 메모리의 비용이 매우 저렴해지는 배경이 존재했기 때문에 이러한 플랫폼이 각광받을 수 있었던 것.

 

 - 2009년 UC버클리 대학에서 시작된 분산처리 방식에 대한 연구가 2010년 논문으로 등장하면서 2013년 정식 아파치 프로젝트로 선정되었음

 

 

Spark를 구성하는 것들

 - 기본적으로는 하둡 에코시스템 위에서 돌아가는 구조이다

Spark 구조

 

RDD란?

 - RDD: Resillient Distributed Data

 - 스파크 도입 초창기부터 적용되었던 가장 첫번째 데이터구조

 - RDD는 그냥 그대로 직역해보면 회복력있는 분산형 데이터라는 뜻인데, RDD는 기본적으로 Read-Only로 수정 불가한 성격을 가지고 있다. 그렇기 때문에 이를 변형하기 위해서는 다른 RDD가 생성이 되고 이러한 과정은 DAG(Directed Acyclic Graph)로 히스토리가 기록이 된다. 이때 이런 히스토리를 리니지라고 부른다.

 

 - RDD는 Transform을 수행하기 위해 DAG가 누적되지만 실제 물리적인 실행은 이루어지지 않는다. 클라이언트에서 실제 실행을 명령했을 때 위 그림상 Action() 분기를 만나 실제 수행하게 되는데 이때 RDD들의 DAG도 수행이 된다.

 

 - 그렇기 때문에 중간 RDD과정에서의 데이터 유실이나 손상이 있더라도 원본데이터가 손상되지 않는 선에서 스파크는 데이터 복구가 용이하다는 특징을 지니게 된다.

 

 

 

다음글

다음글에는  DataFrame, DataSet에 대해 정리 포스팅해보자

 


레퍼런스

https://bcho.tistory.com/1023?category=563141 

 

Apache Spark이 왜 인기가 있을까?

스팍에 대한 간단한 개념과 장점 소개 조대협 (http://bcho.tistory.com) 스팍의 개념과 주요 기능 요즘 주변에서 아파치 스팍을 공부하는 사람도 많고, 스팍을 기반으로한 Zeppelin을 이용하여 데이타 분

bcho.tistory.com

 

https://key4920.github.io/2021/02/mac-os%EC%97%90-%EC%8A%A4%ED%8C%8C%ED%81%AC-3.0-%EC%84%A4%EC%B9%98-%EB%B0%8F-pyspark-%EC%8B%9C%EC%9E%91/

 

Mac OS에 스파크 3.0 설치 및 pyspark 시작

맥북 Mac OS에 Spark를 설치해보고 주피터 노트북에서 pyspark를 실행해보자!

key4920.github.io

 

 

https://spark.apache.org/downloads.html

 

Downloads | Apache Spark

Download Apache Spark™ Choose a Spark release: Choose a package type: Download Spark: Verify this release using the and project release KEYS. Note that, Spark 2.x is pre-built with Scala 2.11 except version 2.4.2, which is pre-built with Scala 2.12. Spar

spark.apache.org

https://www.youtube.com/watch?v=rjJ54qtOjW4 

 

https://medium.com/analytics-vidhya/spark-rdd-low-level-api-basics-using-pyspark-a9a322b58f6

 

Spark RDD (Low Level API) Basics using Pyspark

Although it is recommended to learn and use High Level API(Dataframe-Sql-Dataset) for beginners, Low Level API -resilient distributed…

medium.com

 

반응형