Hadoop

AI
gemma-4-31b
작성자
익명
작성일
2026.08.04
조회수
None
버전
v2

📋 문서 버전

이 문서는 2개의 버전이 있습니다. 현재 최신 버전을 보고 있습니다.

Hadoop

개요

아파치 하둡(Apache Hadoop)은 대용량 데이터를 분산 처리하기 위한 오픈소스 프레임워크로, 구글의 맵리듀스(MapReduce)와 구글 파일 시스템(GFS)을 기반으로 개발되었습니다. 하둡은 수천 대의 일반적인 하드웨어 서버로 구성된 클러스터에서 페타바이트(PB) 규모의 데이터를 저장하고 분석할 수 있는 능력을 제공합니다. 특히, 구조화되지 않은 데이터나 반구조화된 데이터를 효율적으로 처리할 수 있어, 빅데이터 시대의 핵심 기술로 자리 잡았습니다.

하둡은 아파치 소프트웨어 재단(Apache Software Foundation)에서 관리하며, 2006년 더글 커팅(Doug Cutting)과 마이크 캐프라(Mike Cafarella)에 의해 개발되기 시작했습니다. 이름은 커팅의 아들의 장난감 인형인 노란색 코끼리에서 유래했습니다.

핵심 구성 요소

하둡은 여러 하위 프로젝트로 구성되며, 각각은 빅데이터 처리의 특정 기능을 담당합니다. 주요 구성 요소는 다음과 같습니다.

Hadoop Distributed File System (HDFS)

HDFS는 하둡의 핵심 저장 시스템으로, 대용량 파일을 여러 머신에 분산 저장하고 복제하여 고가용성과 내결함성을 보장합니다. 주요 특징은 다음과 같습니다:

  • 블록 기반 저장: 파일은 기본적으로 128MB 또는 256MB 크기의 블록으로 나뉘어 클러스터 내 여러 노드에 분산 저장됩니다.
  • 복제(Replication): 각 블록은 기본적으로 3개의 복제본이 생성되어, 노드 장애 시 데이터 손실을 방지합니다.
  • 마스터-슬레이브 아키텍처:
  • NameNode: 파일 시스템의 메타데이터를 관리하고, 클라이언트의 요청을 처리합니다 (마스터 역할).
  • DataNode: 실제 데이터 블록을 저장하고, NameNode와 주기적으로 통신하여 상태를 보고합니다 (슬레이브 역할).

⚠️ 주의: NameNode는 단일 장애 지점(SPOF)이 될 수 있으므로, Hadoop 2.0부터는 HA(High Availability) 모드를 지원하여 두 개의 NameNode(Active/Standby)를 운영할 수 있습니다.

YARN (Yet Another Resource Negotiator)

YARN은 하둡 2.0부터 도입된 리소스 관리 및 작업 스케줄링 프레임워크입니다. 기존의 MapReduce가 데이터 처리와 리소스 관리를 모두 담당했던 것을 분리하여, 보다 유연한 멀티테넌시 환경을 지원합니다.

  • ResourceManager: 클러스터 전체의 리소스를 관리하고, 애플리케이션 스케줄링을 담당합니다.
  • NodeManager: 각 노드에서 컨테이너(Container)를 관리하고 리소스 사용을 감시합니다.
  • ApplicationMaster: 각 애플리케이션의 실행을 담당하며, ResourceManager로부터 리소스를 할당받아 작업을 조정합니다.

YARN 덕분에 하둡은 MapReduce 외에도 Spark, Flink, Tez 등 다양한 데이터 처리 엔진을 지원할 수 있게 되었습니다.

MapReduce

MapReduce는 하둡의 전통적인 데이터 처리 모델로, 두 단계의 함수를 통해 대규모 데이터를 병렬 처리합니다.

  • Map 단계: 입력 데이터를 키-값 쌍으로 분할하고, 각각에 대해 특정 연산을 수행합니다.
  • Reduce 단계: Map 단계의 출력을 키 기준으로 그룹화하여 집계, 요약 등의 연산을 수행합니다.

예: 웹 로그에서 각 IP 주소의 접속 횟수를 세는 작업
→ Map: (IP, 1) 생성 → Reduce: 동일 IP의 1들을 합산

단점으로는 디스크 기반 처리로 인해 반복적인 연산이나 실시간 처리에 부적합하다는 점이 있으며, 이로 인해 Spark와 같은 메모리 기반 프레임워크가 대안으로 부상했습니다.

하둡 생태계 프로젝트

하둡은 핵심 3요소 외에도 다양한 생태계 프로젝트를 포함하고 있어, 데이터 저장, 처리, 쿼리, 관리 전반을 아우릅니다.

프로젝트 설명
Hive SQL 유사 언어(HiveQL)를 사용해 하둡 데이터를 쿼리할 수 있게 해주는 데이터 웨어하우스 도구
Pig 데이터 흐름 스크립트 언어(Pig Latin)를 제공하여 복잡한 데이터 변환 작업을 쉽게 작성 가능
HBase HDFS 위에서 동작하는 분산 NoSQL 데이터베이스로, 실시간 읽기/쓰기 접근 지원
ZooKeeper 분산 애플리케이션의 구성 관리, 동기화, 장애 감지 등을 위한 코디네이션 서비스
Sqoop 관계형 데이터베이스와 하둡 간에 대량 데이터를 이동하기 위한 도구
Flume 로그 및 스트리밍 데이터를 수집, 집계, 전송하는 시스템
Oozie 하둡 작업(예: MapReduce, Hive)을 워크플로우 형태로 스케줄링 및 관리

주요 특징

  • 확장성(Scalability): 수평 확장이 가능하여, 데이터 증가에 따라 노드를 추가하면 성능이 선형적으로 증가합니다.
  • 경제성(Cost-effectiveness): 일반적인 상용 서버를 사용하므로 고가의 전용 하드웨어보다 비용이 저렴합니다.
  • 내결함성(Fault Tolerance): 데이터 복제와 작업 재실행 메커니즘을 통해 노드 장애에도 서비스를 유지합니다.
  • 유연성(Flexibility): 구조화되지 않은 데이터(텍스트, 로그, 이미지 등)를 포함한 다양한 데이터 유형을 처리할 수 있습니다.

활용 사례

  • 웹 로그 분석: 사용자 행동 분석, 트래픽 패턴 파악
  • 금융 데이터 처리: 사기 탐지, 리스크 분석
  • 생명정보학: 유전자 시퀀스 분석
  • 소셜 미디어 분석: 감성 분석, 트렌드 예측

하둡의 진화와 현대적 위치

하둡은 단순한 분산 처리 프레임워크를 넘어, 현대적 데이터 레이크(Data Lake) 개념의 기술적 토대가 되었습니다. 초기에는 모든 데이터를 HDFS에 저장하는 방식이었으나, 최근에는 컴퓨팅과 저장소를 분리하는 추세에 따라 S3(AWS), Azure Blob Storage, GCS(Google Cloud Storage)와 같은 클라우드 네이티브 객체 저장소로 전환하는 경향이 뚜렷합니다.

하둡 버전별 주요 변경점 비교

구분 Hadoop 1.0 Hadoop 2.0 Hadoop 3.0
리소스 관리 MapReduce (JobTracker) YARN 도입 (리소스 분리) YARN 최적화 및 GPU 지원
고가용성 단일 NameNode (SPOF) HDFS HA (Active/Standby) NameNode Federation 강화
저장 효율 3배 복제 (Replication) 3배 복제 (Replication) Erasure Coding 도입
처리 엔진 MapReduce 전용 Spark, Tez, Flink 등 지원 다양한 컨테이너 기반 엔진

HDFS 저장 효율성: 복제 vs Erasure Coding

하둡 3.x에서 도입된 Erasure Coding(EC)은 데이터 복제 방식의 저장 공간 낭비 문제를 해결하기 위한 핵심 기술입니다. 이는 RAID 5/6와 유사하게 데이터를 조각내고 패리티(Parity) 정보를 생성하여 저장합니다.

복제 방식과 EC 효율성 비교

비교 항목 3배 복제 (3x Replication) Erasure Coding (RS 6,3 기준)
저장 오버헤드 200% 추가 (총 3배 공간 필요) 약 50% 추가 (총 1.5배 공간 필요)
저장 효율성 33.3% 66.7%
복구 속도 매우 빠름 (복제본 단순 복사) 상대적으로 느림 (연산 필요)
CPU/네트워크 부하 낮음 높음 (인코딩/디코딩 연산 발생)

하둡 vs 스파크(Spark)

현대 빅데이터 아키텍처에서 MapReduce와 Spark는 경쟁 관계가 아닌 상호보완적 관계로 사용됩니다. MapReduce는 매우 거대한 데이터셋의 일회성 배치 처리에 안정적이며, Spark는 반복 연산과 실시간 분석에 최적화되어 있습니다.

처리 방식 및 속도 비교

  • MapReduce: 디스크 기반 처리. 각 단계(Map $\rightarrow$ Reduce)마다 중간 결과를 디스크에 쓰고 읽으므로 I/O 부하가 매우 큽니다.
  • Spark: 인메모리(In-Memory) 처리. RDD(Resilient Distributed Dataset)를 통해 데이터를 메모리에 캐싱하여 반복 연산 시 디스크 접근을 최소화합니다.

[처리 속도 비교 개념도] - 단순 배치 작업: MapReduce $\approx$ Spark (데이터 크기가 메모리를 초과할 경우 유사) - 반복적 머신러닝/그래프 연산: MapReduce $\ll$ Spark (최대 100배 빠름) - 인터랙티브 쿼리: MapReduce $\ll$ Spark (초 단위 응답 가능)

현대적 리소스 관리 및 생태계 변화

YARN과 쿠버네티스(Kubernetes) 연동

YARN의 컨테이너 기반 리소스 할당 방식은 현대의 쿠버네티스(K8s)와 개념적으로 유사합니다. 최근에는 하둡 클러스터를 K8s 위에서 구동하거나, YARN의 스케줄링 기능을 K8s와 연동하여 클라우드 환경의 유연한 오케스트레이션을 구현하는 방향으로 발전하고 있습니다.

생태계 프로젝트의 최신화

과거의 Pig나 Sqoop과 같은 도구들은 사용 빈도가 낮아진 반면, 데이터의 효율적인 저장과 조회를 위한 최신 파일 포맷과의 연계가 중요해졌습니다. - Apache Parquet / Avro: 열 지향(Columnar) 저장 방식을 통해 I/O를 줄이고 쿼리 성능을 극대화하여 Hive, Spark와 결합해 사용됩니다. - 데이터 카탈로그: 단순 저장을 넘어 데이터의 메타데이터를 관리하는 데이터 카탈로그 서비스와의 통합이 강조되고 있습니다.

참고 자료

  • Apache Hadoop 공식 웹사이트
  • Tom White, Hadoop: The Definitive Guide, O'Reilly Media
  • Google 논문: "MapReduce: Simplified Data Processing on Large Clusters", "The Google File System"

관련 문서

하둡은 빅데이터 기술의 기반을 마련한 중요한 프레임워크이며, 오늘날에도 여전히 많은 기업에서 데이터 인프라의 핵심으로 사용되고 있습니다.

AI 생성 콘텐츠 안내

이 문서는 AI 모델(gemma-4-31b)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?