하둡(Hadoop)은 방대한 양의 비정형 및 정형 데이터(빅데이터)를 여러 대의 저렴한 컴퓨터(클러스터)에 분산하여 저장하고, 이를 병렬로 빠르게 처리할 수 있도록 지원하는 오픈소스 자바 프레임워크입니다.
- 동작 원리: 고가의 대형 서버(Scale-up) 한 대를 사용하는 대신, 저렴한 범용 서버(Commodity Hardware) 수십~수천 대를 네트워크로 연결(Scale-out)하여 하나의 거대한 컴퓨터처럼 작동하게 만듭니다.

- 주요 특징: 데이터 서버가 고장 나더라도 시스템이 멈추지 않도록 데이터를 여러 서버에 복제해 두는 결함 내성(Fault Tolerance)과, 연산을 데이터가 저장된 곳으로 보내서 처리하는 데이터 지역성(Data Locality)을 갖추고 있습니다.
1. 하둡의 핵심 구성요소
하둡은 크게 데이터를 '저장'하는 시스템과 데이터를 '처리/관리'하는 시스템으로 나뉩니다.

- HDFS (Hadoop Distributed File System - 분산 파일 시스템):
- 대용량 파일을 여러 개의 블록(기본 128MB)으로 쪼개어 여러 대의 서버에 분산 저장합니다.
- 네임노드(NameNode): 파일의 이름, 권한, 어떤 블록이 어느 서버에 있는지 등의 메타데이터를 관리하는 '마스터' 역할입니다.
- 데이터노드(DataNode): 실제 데이터 블록이 저장되고 읽기/쓰기 작업을 수행하는 '워커(Worker)' 역할입니다.

- MapReduce (맵리듀스 - 분산 데이터 처리 엔진):
- 대용량 데이터를 병렬로 처리하기 위한 프로그래밍 모델입니다.
- Map (맵): 큰 데이터를 잘게 쪼개어 조건에 맞게 필터링하고 분류하는 작업입니다. (예: 방대한 웹 로그 문서에서 각 단어가 몇 번 등장했는지 추출)
- Reduce (리듀스): Map에서 추출된 분산된 결과를 하나로 합치고 요약하여 최종 결과를 도출합니다. (예: 각 서버에서 추출한 단어별 개수를 모두 합산하여 최종 빈도수 계산)

- YARN (Yet Another Resource Negotiator - 자원 관리자):
- 클러스터 내의 CPU, 메모리 등의 컴퓨팅 자원을 관리하고 작업(Job)을 스케줄링하는 운영체제와 같은 역할을 합니다. (하둡 2.0부터 도입)

- Hadoop Common:
- 하둡의 다른 모듈들이 공통으로 사용하는 유틸리티와 자바 라이브러리 집합입니다.
2. 하둡 버전별 진화 및 개선사항 (v1 ~ v3)
하둡은 버전이 올라가면서 초기 아키텍처의 한계를 극복하고 성능과 안정성을 크게 향상시켰습니다.

3. 주요 개선사항
- Hadoop 1.x의 한계 극복 (YARN의 등장):
- 버전 1에서는 'JobTracker'라는 마스터 노드가 자원 할당과 작업 모니터링을 동시에 수행하여 병목 현상이 발생했습니다.
- 버전 2에서는 자원 관리 전담 시스템인 YARN을 도입하여 병목을 해소하고, 맵리듀스뿐만 아니라 Spark(스파크) 등 다른 오픈소스 프레임워크도 하둡 클러스터 위에서 실행할 수 있게 되었습니다.
- 단일 장애점(SPOF) 해결:
- 버전 1에서는 전체 시스템의 메타데이터를 가진 네임노드가 1대뿐이어서 서버가 고장 나면 클러스터 전체가 마비되었습니다.
- 버전 2부터는 Active(실제 운영)와 Standby(대기) 네임노드를 두어 장애 시 즉각 대처할 수 있는 고가용성(HA)을 확보했고, 버전 3에서는 Standby 네임노드를 여러 대 둘 수 있게 되었습니다.
- 저장 공간의 혁신 (Erasure Coding):
- 데이터 유실을 막기 위해 HDFS는 기본적으로 동일한 데이터를 3곳에 복제(3-way Replication)하여 디스크를 3배나 차지했습니다.
- 버전 3에 도입된 이레이저 코딩(Erasure Coding)은 원본 데이터와 복구용 패리티(Parity) 데이터를 수학적 알고리즘으로 분산 저장하여, 결함 내성을 유지하면서도 저장 공간 오버헤드를 기존 300%에서 약 150% 수준으로 대폭 줄였습니다.

4. 하둡 생태계(Hadoop Ecosystem)
하둡 생태계(Hadoop Ecosystem)는 하둡의 코어 프로젝트인 HDFS(분산 파일 저장)와 YARN(자원 관리)을 중심으로, 데이터를 수집, 저장, 처리, 분석, 관리하기 위해 파생된 다양한 오픈소스 프로젝트들의 집합입니다. 각 도구는 특정 목적에 맞게 설계되어 데이터 파이프라인 내에서 상호 보완적으로 작동합니다.

1) 데이터 수집 (Data Ingestion)
외부의 다양한 소스에서 생성되는 데이터를 하둡 클러스터 내부로 가져오는 역할을 수행합니다.

- Kafka (카프카):
- 원리: 분산 환경에 특화된 고성능 발행-구독(Publish-Subscribe) 모델의 메시징 시스템입니다.
- 예시: 차량의 위치 정보, 센서 데이터 등 초당 수백만 건씩 쏟아지는 대규모 텔레메트리(Telemetry) 스트리밍 데이터를 지연 없이 수집하고, 이를 여러 AI 처리 시스템이나 DB로 실시간 분배할 때 핵심 파이프라인으로 사용됩니다.
- Flume (플룸):
- 원리: 다수의 에이전트를 통해 대량의 로그 데이터를 실시간 또는 비동기적으로 수집하여 HDFS에 안전하게 적재합니다.
- 예시: 수만 대의 단말기나 서버에서 발생하는 서비스 상태 로그, 에러 로그를 유실 없이 중앙 데이터 레이크로 모을 때 활용합니다.
- Sqoop (스쿱):
- 원리: 관계형 데이터베이스(RDBMS, 예: Oracle, MySQL)와 하둡(HDFS) 간의 정형 데이터를 대용량으로 병렬 전송합니다.
2) 분산 데이터 처리 엔진 (Data Processing)
맵리듀스(MapReduce)의 단점(디스크 I/O로 인한 속도 저하, 복잡한 코드)을 극복하고, 다양한 형태의 데이터를 고속으로 처리합니다.
- Spark (스파크):
- 원리: 디스크 기반인 맵리듀스와 달리, 메모리 내(In-Memory) 연산을 수행하여 처리 속도가 맵리듀스 대비 최대 100배 이상 빠릅니다. 일괄(Batch) 처리뿐만 아니라 실시간 스트리밍, 머신러닝(MLlib), SQL(Spark SQL) 질의를 단일 엔진에서 모두 지원합니다.
- 예시: 수집된 대규모 주행 데이터나 사용자 행동 패턴 데이터를 메모리에 올려두고, 실시간으로 AI 모델을 적용해 개인화된 맞춤형 추천이나 예측 결과를 도출할 때 주로 사용합니다.
3) 데이터 분석 및 질의 (Data Analysis & SQL on Hadoop)
복잡한 자바(Java) 코딩 대신, 분석가나 기획자에게 친숙한 SQL과 유사한 언어로 빅데이터를 분석할 수 있게 해줍니다.
- Hive (하이브):
- 원리: HDFS에 저장된 방대한 데이터 파일에 구조(Table)를 입혀, 'HiveQL'이라는 SQL 유사 언어로 쿼리할 수 있게 해주는 데이터 웨어하우스 인프라입니다. 입력된 쿼리는 내부적으로 맵리듀스나 Tez 작업으로 변환되어 실행됩니다.
- Impala (임팔라):
- 원리: 하이브와 달리 무거운 맵리듀스 엔진을 거치지 않고 자체 분산 쿼리 데몬을 사용하여 메모리 상에서 HDFS 데이터를 직접 조회합니다. 이로 인해 분석 결과에 대한 실시간(Interactive) 응답 속도를 제공합니다.

4) NoSQL 분산 데이터베이스 (Data Storage)
HDFS는 대용량 파일을 한 번 쓰고 여러 번 읽는 순차적 접근에 최적화되어 있어, 특정 데이터의 무작위 읽기/쓰기(Random Read/Write)나 실시간 수정에는 부적합합니다. 생태계 내 NoSQL은 이를 보완합니다.
- HBase (에이치베이스):
- 원리: HDFS 위에 구축된 열 지향(Column-oriented) NoSQL 데이터베이스입니다. 수십억 개의 행과 수백만 개의 열을 가진 방대한 테이블에서 특정 조건의 데이터를 밀리초 단위로 검색하고 업데이트할 수 있습니다.
- 예시: 수많은 사용자의 프로필 정보, 단말기별 실시간 상태 정보 등을 빠르게 업데이트하고 개별적으로 조회해야 하는 서비스의 백엔드 저장소로 활용됩니다.

5) 워크플로우 관리 및 코디네이션 (Management & Coordination)
수많은 서버와 분산 처리 작업들을 안정적으로 운영하고 자동화합니다.
- ZooKeeper (주키퍼):
- 원리: 분산 환경에서 여러 서버 간의 동기화, 설정 정보 공유, 분산 락(Lock) 관리, 리더 선출 등을 담당하는 코디네이터 시스템입니다.
- 예시: 하둡 클러스터 내에서 네임노드의 활성(Active)/대기(Standby) 상태를 모니터링하다가 장애 발생 시 즉각 대기 노드를 활성 노드로 승격(Failover)시켜 서비스 중단을 막습니다.
- Airflow (에어플로우) / Oozie (우지):
- 원리: '데이터 수집 → 전처리 → 머신러닝 모델 학습 → DB 적재'와 같이 복잡하게 얽힌 작업(Job)들의 의존성(DAG)과 실행 순서를 정의하고, 정해진 스케줄에 맞춰 자동 실행 및 모니터링하는 워크플로우 도구입니다.

하둡 생태계 주요 구성요소 요약
| 분류 | 주요 도구 | 핵심 역할 및 특징 | 데이터 처리 방식 |
| 수집 | Kafka, Flume, Sqoop | 대규모 스트리밍/로그 데이터 및 RDBMS 연동 | 실시간 파이프라인, 배치 전송 |
| 저장 | HDFS, HBase | 페타바이트급 분산 파일 저장 및 NoSQL DB | 파일 기반 스토리지, 열 지향 실시간 조회 |
| 처리 | Spark, MapReduce | 대용량 데이터 병렬 변환 및 고속 연산 | 메모리 기반 통합 처리(Spark) |
| 분석 | Hive, Impala | SQL 기반 대화형 데이터 질의 및 추출 | 배치 중심 분석(Hive), 실시간 쿼리(Impala) |
| 관리 | ZooKeeper, Airflow | 분산 노드 상태 동기화 및 파이프라인 자동화 | 설정/상태 관리, 작업 스케줄링 |
'빅데이터' 카테고리의 다른 글
| 아파치 스톰(Apache Storm) (0) | 2026.02.19 |
|---|---|
| 하둡(Hadoop) 생태계와 맵리듀스의 관계 (0) | 2026.02.16 |
| 맵리듀스(MapReduce) (0) | 2026.02.16 |
| [데이터마이닝] 연관규칙 (Association) (0) | 2025.09.14 |
| [DW] OLAP (On-Line Analytical Processing) (0) | 2025.09.14 |