[Spark] 01. GFS와 하둡, 스파크까지 데이터 처리 기술 흐름

2025. 9. 8. 14:20·데이터분석/04. Apach Spark

부동산 플랫폼의 인턴 기간이 끝난 후, 최근 넥슨의 데이터 분석가 채용공고에 서류 합격 연락을 받았다. 

우여곡절 끝?에 채용과제를 제출하고 결과를 기다리기 전까지 어떤걸 공부할까 고민하던 중

넥슨 채용공고에 어렴풋이 적혀있던 우대사항이 기억이 났다. 그것은 바로

Spark, Zeppelin, Airflow, Tableau 활용 경험을 보유한 지원자를 뽑고있다.

Airflow와 Tableau는 예전 코드잇 데이터분석 부트캠프에서 다뤄본 경험이 있지만 Spark, Zeppelin은 활용경험은 아직 없던 상태이다.

 

그래서 이번 기회에 Spark와 Zeppelin을 공부해볼겸, 블로그에다가 기록까지 남기면 좋을 것 같아서 오랜만에 포스트를 작성 중이다.

먼저 빅데이터의 처리 과정을 간단하게.. 아주 짧게 요약해서 나열해보자


〽️ 빅데이터 처리 과정의 발전 단계

1️⃣ Google File System (GFS, 2003년)

구글에서 대규모 분산 환경에 맞춰서 설계한 분산 파일 시스템이다. 가장 큰 특징은 다음과 같다.

 

  • 대규모 파일에 최적화: 수십 기가바이트에서 수십 테라바이트에 이르는 매우 큰 파일을 효율적으로 저장하고 처리하는 데 중점
  • 고장 감내(Fault Tolerance): 저렴한 범용 하드웨어에서도 안정적으로 작동하도록 설계. 특정 장비에 문제가 발생해도 데이터를 복제하여 유실 없이 복구할 수 있는 기능이 포함
  • 높은 처리량: 수많은 클라이언트가 동시에 데이터에 접근하고 읽는 작업을 빠르게 처리 가능. 한 번 쓰면 거의 수정하지 않고 읽기 작업이 빈번한 빅데이터 환경에 특히 유리

출처 : 위키백과 GFS 아키텍처 이미지

 

GFS 아키텍처는 중앙의 마스터가 파일의 위치 정보를 관리하고, 분산된 청크 서버들이 실제 데이터를 저장하는 구조. 이 덕분에 대규모 데이터를 효율적으로 처리할 수 있다.

  • 클라이언트: 파일을 읽고 쓰기 위해 마스터에게 정보만 요청하고, 실제 데이터는 청크 서버와 직접 주고받음
  • 마스터: 모든 파일의 위치 정보를 중앙에서 관리하며, 청크 서버에 대한 지시를 내림
  • 청크: 실제 데이터가 담긴 덩어리로, 여러 개의 청크 서버에 나뉘어 복제되어 저장

한마디로, "데이터를 어떻게 안전하게 분산 저장할까?"를 해결한 첫 단계라고 볼 수 있다.


 

2️⃣ MapReduce (2004년)

맵리듀스는 대규모 데이터를 처리하기 위한 분산 컴퓨팅 프로그래밍 모델. 이름에서 알 수 있듯이, 크게 맵(Map) 단계와 리듀스(Reduce) 단계로 나눠진다.

  1. 맵(Map) 단계:
    • 입력된 데이터를 가져와서 작은 조각으로 분할
    • 각 조각을 독립적으로 처리해서 중간 결과물을 (키, 값) 쌍의 형태로 생성
    • 예를 들어, 수많은 문서에서 단어의 개수를 세는 작업이라면, 각 문서를 읽고 "단어"와 "1"이라는 (키, 값) 쌍을 만들어내는 단계
  2. 리듀스(Reduce) 단계:
    • 맵 단계에서 생성된 모든 중간 결과물 중 동일한 키를 가진 값들을 하나로 모읍니다.
    • 이 값들을 합산하거나 요약하는 작업을 거쳐 최종 결과물을 생성
    • 위의 예시에서는 "사과"라는 키를 가진 모든 (사과, 1) 쌍을 모아, 그 값들을 합쳐서 최종적으로 "사과: 100개"와 같은 결과 생성

이러한 방식은 데이터를 여러 대의 컴퓨터에 분산시켜 병렬로 처리하기 때문에, 매우 큰 데이터를 효율적으로 다룰 수 있다. 하지만 단점도 뚜렷하게 존재했다.

 

  • 느린 속도: 모든 중간 결과를 디스크(하둡 분산 파일 시스템)에 저장했다가 다시 읽어야 해서, 디스크 I/O 작업이 반복되며 속도가 저하
  • 복잡성: 단순한 작업도 Map과 Reduce 단계로 나누어 프로그래밍해야 하기 때문에, 개발 과정이 복잡하고 비효율적

3️⃣ Hadoop (2006~)

출처 : 위키백과 하둡 로고

Yahoo!와 오픈소스 커뮤니티가 GFS + MapReduce 아이디어를 구현시킨 하둡(Hadoop)은 대규모 데이터를 분산 저장하고 처리하기 위한 오픈 소스 프레임워크. 쉽게 말해, 수많은 컴퓨터를 한데 묶어 하나의 거대한 컴퓨터처럼 작동하게 만들어 빅데이터를 다루는 기술이다. 크게 두 가지 구성요소로 구성되어 있는데

  • 하둡 분산 파일 시스템 (HDFS : Hadoop Distributed File System) : 데이터를 저장하는 역할을 담당. GFS와 유사하게, 파일을 작은 블록으로 나눠 여러 대의 서버에 복제해서 저장. 이 덕분에 특정 서버가 고장 나도 데이터가 손실되지 않는 고장 감내(Fault Tolerance) 기능 제공
  • 하둡 맵리듀스 (Hadoop MapReduce) : 저장된 데이터를 처리하는 역할을 담당. '맵'과 '리듀스'라는 두 단계의 병렬 처리를 통해 대규모 데이터를 분석
출처 : 위키백과 하둡 맵리듀스 로고
 

이후 Hive(쿼리), Pig(스크립트), HBase(NoSQL) 등 Hadoop의 생태계로 구성된 여러 컴포넌트가 포함되었다. 하지만 여전히 느리고 코드 생산성이 낮다는 단점이 존재했다.


4️⃣ Apache Spark

✅ 아파치 스파크(Apache Spark) 간단 요약 설명

출처 : 위키백과 아파치 스파크 로고

Apache Spark는 대규모 데이터를 빠르게 처리하기 위해 개발된 오픈소스 분산 데이터 처리 엔진이다. 기존에 빅데이터를 처리하는 MapReduce 방식과 차별되는 점은 RDD라는 데이터 구조를 통해 인메모리(In-memory) 연산을 활용해서 훨씬 빠른 속도를 낸다는 점이다.

 

먼저 RDD(Resilient Distributed Dataset) 데이터 구조란?

여러 컴퓨터에 분산되어 있는 읽기 전용(immutable) 데이터 모음이다. 마치 엑셀 파일이 여러 조각으로 나뉘어 각기 다른 컴퓨터에 저장되어 있는 것과 비슷한 특징이 있다.

 

그리고 RDD 데이터를 처리하는 인메모리(In-memory) 방식이란?

데이터를 디스크에 저장하는 기존 맵리듀스 방식과는 다르게, RAM에 보관하여 처리하는 방식을 의미한다. 이는 반복적인 데이터 처리나 머신러닝 알고리즘처럼 여러 단계에 걸쳐 데이터를 재사용해야 할 때 엄청난 속도 향상을 가져다주는 장점이 있다.

✅ Spark의 5가지 특징

출처 : AWS 아파치 스파크

  • 대규모 배치 처리(Batch Processing) : 대용량 데이터를 한 번에 모아 일괄적으로 처리하는 기능
  • 실시간 스트리밍 데이터 처리(Streaming) : 실시간으로 들어오는 데이터를 연속적으로 처리하는 기능
  • SQL 기반 질의(Spark SQL) : 데이터프레임(DataFrame)이라는 구조를 이용해 SQL 쿼리로 데이터를 쉽게 분석하는 기능
  • 머신러닝(Spark MLlib) : 다양한 머신러닝 알고리즘과 유틸리티를 제공하여 대규모 데이터로 모델을 구축하는 기능
  • 그래프 분석(GraphX) : 데이터의 관계를 그래프 형태로 표현하고, 그래프 알고리즘을 적용해 복잡한 관계를 분석하는 기능

다음 포스트에서는 Apache Spark를 활용해서 간단하게 실습해보는걸 확인해보자!

'데이터분석 > 04. Apach Spark' 카테고리의 다른 글

[Spark] 06. PySpark로 Linear Regression(선형회귀) 모델 만들기  (0) 2025.09.12
[Spark] 05. PySpark DataFrame 기초 연습  (0) 2025.09.12
[Spark] 04. Ubuntu에 python, jupyter notebook, spark 설치해보기  (0) 2025.09.10
[Spark] 03. 맥북 M1에 UTM으로 우분투 arm64 설치하기  (1) 2025.09.09
[Spark] 02. Pyspark 예제 데이터로 기초 실습(feat. EDA)  (0) 2025.09.08
'데이터분석/04. Apach Spark' 카테고리의 다른 글
  • [Spark] 05. PySpark DataFrame 기초 연습
  • [Spark] 04. Ubuntu에 python, jupyter notebook, spark 설치해보기
  • [Spark] 03. 맥북 M1에 UTM으로 우분투 arm64 설치하기
  • [Spark] 02. Pyspark 예제 데이터로 기초 실습(feat. EDA)
dalleeoppaa
dalleeoppaa
DA, GIS 공부 기록
  • dalleeoppaa
    달래오빠
    dalleeoppaa
  • 전체
    오늘
    어제
    • 분류 전체보기 (112) N
      • GIS (22)
        • 01. GIS TIL (13)
        • 02. OpenSource Geo Data (6)
        • 03.사이드 프로젝트 (1)
      • 프로젝트 (6)
        • 01. 상권분석 지도 (3)
        • 02. olist 고객 RFM 분석 (3)
      • PointCloud (1)
      • 프로그래밍 언어 (57) N
        • 01. Python (1)
        • 02. SQL (49)
        • 03. C++ (3) N
        • 04. TIL (4)
      • 데이터분석 (23)
        • 01. Google Cloud Platform (1)
        • 02. GA4 & GTM (1)
        • 03. LookerStudio (4)
        • 04. Apach Spark (7)
        • 05. 데이터 시각화 (10)
      • 인턴 (2)
        • 01. NPL (2)
        • 02. TIL (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    MySQL
    sql코테
    SQL
    프로그래머스SQL
    프로그래머스lv3
    데이터분석취준
    데이터분석가
    GIS
    프로그래머스코테
    PostgreSQL
    태블로연습
    데이터분석
    프로그래머스
    c++독학
    태블로신병훈련소
    코딩테스트
    태블로부트캠프
    postgresql연습
    데이터분석가코테
    solvesql
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
dalleeoppaa
[Spark] 01. GFS와 하둡, 스파크까지 데이터 처리 기술 흐름
상단으로

티스토리툴바