[ 본 페이지는 스파크 완벽 가이드 (Spark - the Definitive Guide) 책을 토대로 작성되었습니다 ]
막연하게 스파크(Spark)를 처음 공부하면, 당최 이 스파크라는 친구가 '뭐하는 녀석일까?' 라는 생각에 잠길 수 있습니다.
데이터를 저장하고, SQL도 사용하고, 파이썬 연동도 되고... 물론 숙련된(?) 데이터 엔지니어나 학습자 같은 경우에는 아니겠지만, 처음 빅데이터 세계에 입문했다면 스파크를 DBMS와의 차이점을 찾아내기가 쉽지 않을수도 있습니다.
책의 내용을 빌려 스파크를 설명하자면 스파크는 '빅데이터를 위한 통합 컴퓨팅 엔진과 라이브러리 집합' 입니다.
그렇다면 스파크가 어떻게 기존 DBMS와 다르고, 또 다른 빅데이터 플랫폼인 하둡과는 또 어떻게 다른지 핵심 3요소를 살펴보며 알아봅시다.
스파크의 핵심 요소
1. 통합
스파크는 '빅데이터 애플리케이션 개발에 필요한 통합 플랫폼'이라는 핵심 목표를 갖고 있습니다.
여기서 통합(unified)은 무엇일까요?
스파크는 데이터 읽기, SQL처리, 머신러닝, 그리고 실시간 데이터를 스트림으로 처리하기까지 다양한 데이터 분석 작업을 같은 연산 엔진과 일관성 있는 API로 수행할 수 있도록 설계되어 있습니다.
스파크의 통합 특성을 이용하면 기존의 데이터 분석 작업을 더 쉽고 효율적으로 수행할 수 있습니다.
우선 스파크는 일관성 있는 조합형 API를 제공하며, 이를 통해 작은 코드조각 또는 기존 라이브러리를 사용해 애플리케이션을 만들 수 있습니다. 만약 조합형 API로 해결할 수 없다면, 직접 스파크 기반 라이브러리를 만들 수 있는 것도 장점입니다.
또한 스파크는 빅데이터 플랫폼으로써 더 나은 성능 (데이터 처리, 효율 등)을 발휘할 수 있도록 설계되었습니다.
한 예를 들어보겠습니다.
SQL쿼리로 데이터를 읽고 ML라이브러리로 머신러닝 모델을 평가해야할 경우, 스파크 엔진은 이 두 단계를 하나로 병합하고 데이터를 '한번'만 조회할 수 있게 합니다. 만약 데이터가 굉장히 무거운 경우라면 (ex 1억건 이상 등) [ 1회 조회하고 -> 파이썬으로 export 하고 -> 작업하고 -> 다시 DB로 write 해야하는 워크플로우 ]보다는 [ Spark 내에서 조회 -> 작업/처리 ] 라는 워크플로우로 작업 시간과 효율성에 굉장한 큰 이점을 가져올 것입니다. 실시간성을 갖는 빅데이터 서비스 기업에서는 굉장히 중요하게 작용할 수 있는 부분이겠죠.
2. 컴퓨팅 엔진
스파크는 통합이라는 관점을 중시하면서 기능의 범위를 컴퓨팅 엔진으로 제한해왔습니다.
따라서 스파크는 저장소 시스템의 데이터를 연산하는 역할만 수행할 뿐, 영구 저장소 역할을 수행하진 않습니다.
그 대신 클라우드 기반의 Azure Storage, 아마존 S3, 분산 파일 스시템인 아파치 하둡, 키/값 저장소인 아파치 카산드라, 메시지 전달 서비스인 아파치 카프카 등의 저장소를 지원합니다.
스파크 자체는 내부에서 데이터를 오랜 시간 저장하지 않으며, 특정 저장소 시스템을 선호하지도 않습니다.
스파크는 데이터 저장 위치에 상관없이 처리에 집중하도록 만들어졌습니다. 이게 바로 아파치 하둡과 같은 기존 빅데이터 플랫폼과 차별화된 부분입니다.
3. 라이브러리
궁극의 스파크 컴포넌트는 데이터 분석 작업에 필요한 통합 API를 제공하는 통합 엔진 기반의 자체 라이브러리입니다.
스파크는 엔진에서 제공하는 표준 라이브러리와 오픈소스 커뮤니티에서 다양한 외부 라이브러리를 지원합니다.
스파크는 SQL과 구조화된 데이터를 제공하는 Spark SQL,
머신러닝을 지원하는 MLlib,
스트림 처리 기능을 지원하는 Spark Streaming, 구조적 스트리밍
그래프 분석 엔진 GraphX 라이브러리를 제공합니다.
기본 라이브러리 외에 다양한 저장소 시스템을 위한 Connector부터 머신러닝을 위한 알고리즘까지 수백 개의 외부 오픈소스 라이브러리도 존재합니다.
'빅데이터 > 스파크' 카테고리의 다른 글
[Zeppelin] M1 맥에서 로컬에 제플린 설치하는 방법 (0) | 2023.02.21 |
---|---|
[M1 맥] 스파크 설치하기 (Spark) (0) | 2023.02.19 |
[M1 Mac]oh-my-zsh 설치 이후 command not found 이슈 해결 방법 (0) | 2023.02.19 |