Spark 개요

Apache Spark 개요 및 핵심 개념

Apache Spark는 대규모 데이터 처리를 위한 오픈 소스 분산 컴퓨팅 프레임워크입니다. 2009년 UC 버클리 대학의 AMPLab에서 개발되었으며, 기존의 빅데이터 처리 표준이었던 Hadoop MapReduce의 한계를 극복하기 위해 탄생했습니다.

1. 핵심 개념: RDD (Resilient Distributed Dataset)

Spark의 근간이 되는 데이터 모델은 RDD입니다.

  • Resilient (탄력적): 메모리 내에서 데이터가 손실될 경우 리니지(Lineage)를 통해 자동으로 복구됩니다.
  • Distributed (분산): 클러스터 내의 여러 노드에 데이터가 나누어 저장됩니다.
  • Dataset (데이터셋): 객체들의 모음입니다.

현재는 RDD를 기반으로 최적화된 DataFrameDataset API를 주로 사용하여 데이터 분석을 수행합니다.


사용 목적 및 활용도

사용 목적

  • 실시간 데이터 처리: 대량의 데이터를 스트리밍 방식으로 즉시 분석합니다.
  • 반복적 알고리즘 수행: 머신러닝 모델 학습과 같이 동일한 데이터를 여러 번 조회해야 하는 작업에 최적화되어 있습니다.
  • 통합 분석 환경: SQL 쿼리, 스트리밍, 그래프 처리, 머신러닝을 하나의 엔진에서 처리할 수 있습니다.

주요 활용도

  1. 배치 처리 (Batch Processing): 대규모 로그 분석 및 ETL 작업.
  2. 머신러닝 (MLlib): 분류, 회귀, 클러스터링 등 대규모 데이터 기반 학습.
  3. 실시간 스트리밍 (Spark Streaming): 금융 사기 탐지, 실시간 센서 데이터 모니터링.
  4. 대화형 분석 (Spark SQL): SQL을 사용하여 대규모 데이터셋을 빠르게 탐색.
  5. 그래프 처리 (GraphX): 소셜 네트워크 분석이나 추천 엔진.

Apache Spark의 장단점

장점

  • 속도 (In-memory Computing): 데이터를 디스크가 아닌 메모리에 유지하며 처리하므로, MapReduce보다 최대 100배(디스크 기준 10배) 빠릅니다.
  • 사용 편의성: Java, Scala, Python, R 등 다양한 언어를 지원하며 80개 이상의 고수준 연산자를 제공합니다.
  • 결함 허용 (Fault Tolerance): 작업 중 노드가 고장 나도 작업을 처음부터 다시 할 필요 없이 유실된 부분만 계산하여 복구합니다.
  • 통합성: Hadoop(HDFS), Cassandra, HBase, S3 등 다양한 데이터 소스와 쉽게 연동됩니다.

단점

  • 높은 메모리 비용: 모든 처리를 메모리 위에서 하려다 보니 RAM 사용량이 매우 많고 비용 부담이 발생할 수 있습니다.
  • 설정의 복잡성: 최적의 성능을 내기 위해 메모리 관리, 파티션 크기 등 세부적인 튜닝(Tuning)이 까다롭습니다.
  • 실시간 응답 한계: ‘마이크로 배치’ 방식을 사용하기 때문에 Apache Flink와 같은 순수 스트리밍 엔진에 비해 완전한 실시간(Millisecond 단위) 응답 속도는 미세하게 떨어질 수 있습니다.

기술 스택 구성 요소

Spark는 목적에 따라 다음과 같은 라이브러리를 포함하고 있습니다.

구성 요소설명
Spark SQL구조화된 데이터를 SQL로 처리
Spark Streaming실시간 스트리밍 데이터 처리
MLlib머신러닝 라이브러리
GraphX그래프 및 병렬 그래프 계산

과거에는 하둡이 빅데이터의 전부였다면, 현재는 “저장은 하둡(HDFS), 처리는 스파크(Spark)”라는 공식이 보편적으로 쓰일 만큼 데이터 엔지니어링 분야에서 필수적인 도구입니다.


© 2020. AiDALab Co. All rights reserved.

Powered by Hydejack v9.2.1