Just Fighting

[Spark] 스파크의 기본 개념 본문

Big Data

[Spark] 스파크의 기본 개념

yennle 2022. 2. 17. 16:11
728x90

아파치 스파크란?

빅데이터 처리를 위한 오픈소스 병렬분산처리 플랫폼

 

스파크 구조

스파크 코어는 데이터소스로 HDFS 뿐만 아니라 하이브, HBase, PostgreSQL, MySQL, CSV파일 등도 받아들일 수 있음

 

스파크 특징- 반복처리와 연속으로 이루어지는 변환처리의 고속화

스파크 등장 전 사용한 맵리듀스는 데이터 지역성을 의식한 처리와 내결함성, 확장성 등의 기능을 제공해 복수의 머신으로 구성된 환경을 통한 병렬분산처리를 쉽게 실현할 수 있었음.

각 처리의 결과가 항상 스토리지에 보존되기 때문에 데이터 크기가 커져도 문제없이 작동하고, 시스템 장애가 발생해도 비교적 쉽게 복구된다. 그러나 특정 데이터 부분집합에 대해 여러 번 처리하는 애플리케이션은 효율적인 처리가 어려운 단점을 가진다.

맵리듀스가 연속으로 이루어지는 처리에서 매번 모든 데이터를 디스크에 출력하는 것과 달리

스파크는 매번 불필요한 디스크와 네트워크 I/O가 발생하지 않도록 처리한다.

연속으로 이루어지는 처리 전체를 검토한 뒤 그에 맞는 최적화 처리를 끼워넣는 방식으로 설계해 맵리듀스보다 고속으로 처리할 수 있고 완전히 대체할 수 있다고 한다.

 

스파크 특징- 시행착오에 적합한 환경 제공

스파크는 한 대의 머신으로 처리할 수 있는 용량보다 더 큰 데이터셋에 대해 시행착오 가능한 환경을 제공한다.

통계분석과 머신러닝의 처리를 하기 위해 파이썬, R, Matlab 등의 툴을 이용하는 것이 일반적이지만, 한 대의 서버에서 처리할 수 있는 용량을 넘어서는 데이터셋에 대해서는 사용하기 힘들다.

스파크에는 데이터셋을 추상적으로 다루기 위한 RDD(Resilient Distributed Dataset, 내결함성 분산 데이터셋)이라는 데이터셋이 있으며, RDD가 제공하는 API로 연속적인 변환처리가 가능하다.

스파크 내부에서는 병렬 작동을 위한 스케쥴링이 이루어지며, 사용자가 의식하지 않아도 병렬 분산 환경에서의 처리가 진행된다.

 

스파크 특징- 다양한 처리를 통합할 수 있는 유연한 환경

배치처리, 스트림처리, SQL처리, 머신러닝, 그래프처리를 하나의 환경에서 통합적으로 다룰 수 있다.

 

RDD

스파크에서 데이터처리에 사용하는 자료구조.

대량의 데이터를 요소로 가지는 분산 컬렉션.

여러 머신으로 구성된 클러스터 환경에서의 분산처리를 전제로 설계.

내부는 파티션이라는 단위로 나뉜다. 스파크에서 이 파티션이 분산 처리 단위.

HDFS 등의 분산 파일시스템에 있는 파일 내용을 RDD로 로드하고, RDD를 가공하는 형식으로 대량의 데이터를 분산처리할 수 있다.

이런 가공을 변환이라고 하고, RDD의 내용에 따라 액션이라는 처리를 적용하여 원하는 결과를 얻는다.

 

클러스터 관리 시스템

스파크는 3종류의 클러스터 관리 시스템을 지원한다.

YARN : 하둡의 클러스터 관리 시스템

Mesos : YARN과 마찬가지로 범용 클러스터 관리 시스템

Spark Standalone : 스파크에 번들되는 전용 클러스터 관리 시스템. 별도의 클러스터 관리 시스템 없이 편리하게 이용가능.

 

 

참고 : 사루타 고스케 외 4명, 「아파치 스파크 입문」, 김진용, 한빛미디어(2017)

728x90
Comments