

데이터 엔지니어 직무를 목표로 취업을 준비하면서 워크플로우 관리 도구인 Airflow, Observability를 위한 Grafana, 실시간 처리, 모니터링을 위한 EFK 스택 등을 경험해 봤지만, 대규모 분산 처리를 위한 Hadoop Ecosystem에 대한 이해나 실습 경험이 없었다...
그래서 이번 기회에 Hadoop Ecosystem을 중심으로 대용량 데이터 처리를 위한 기술 스택들을 공부해보려 합니다.
🐘 Hadoop이란?

온라인 서비스가 발전하면서 데이터의 양과 종류가 다양해졌습니다. 웹 로그와 같은 비정형 데이터를 기존의 RDBMS에 저장하기에는 데이터의 크기나 보관 측면에서 비용 부담이 컸고, 데이터 처리에 있어 RDBMS의 복잡하고 세밀한 기능이 반드시 필요한 상황도 아니었습니다.
그래서 하둡은 값비싼 고성능 서버 대신, 비싸지 않은 다수의 컴퓨터들(x86리눅스 서버)을 이용해 대량의 데이터를 병렬로 동시에 처리하기 위해 개발된 오픈소스 프레임워크입니다.
Hadoop의 구성 요소

기본 Hadoop 프레임워크는 다음과 같은 4개의 모듈로 구성되어 있습니다.
1. HDFS(Hadoop Distributed File System)
여러 Hadoop 노드 로컬 저장소에 있는 데이터에서 작동하는 분산 파일 시스템입니다. 대용량 파일을 블록 단위로 분할해 여러 노드에 분산 저장한다. 이 과정에서 동일한 데이터를 여러 노드에 복제함으로써 장애가 발생하더라도 데이터를 안전하게 유지할 수 있는 내결함성을 제공합니다.
2. YARN(Yet Another Resource Negotiator)
YARN은 Hadoop 클러스터의 컴퓨팅 리소스를 관리하고 작업을 스케줄링 합니다. MapReduce, Spark, Flink 등 다양한 처리 엔진을 지원합니다.
3. MapReduce
MapReduce는 대용량 데이터의 분산 처리를 위한 프로그래밍 모델입니다. 데이터를 변환하는 Map 단계와 결과를 집계하는 Reduce 단계로 구성됩니다.
4. Hadoop Common
Hadoop Common은 Hadoop의 다른 모듈에서 공통으로 사용하는 공통 Java 라이브러리와 유틸리티를 의미합니다.
Hadoop은 어떻게 작동하나요?

Hadoop을 사용하면 클러스터 서버의 모든 스토리지 및 처리 용량을 이용하여 대량의 데이터에 대해 분산 프로세스를 실행할 수 있습니다. 데이터의 처리는 여러 노드에서 동시에 병렬적으로 수행됩니다.
애플리케이션은 NameNode와 통신하여 파일 생성 및 메타데이터 관리를 요청하고, 실제 데이터는 NameNode가 결정한 DataNode들에 블록 단위로 분산 저장됩니다. 이후 데이터를 조회하거나 처리하기 위해 여러 맵으로 구성된 MapReduce 작업을 제출하면, 여러 Mapper와 Reducer 태스크가 DataNode에 분산 저장된 HDFS 데이터를 대상으로 병렬 실행됩니다.
실행 과정에서 필요한 클러스터 리소스 할당, 각 태스크의 스케줄링, 실행 관리는 YARN이 담당합니다.
Hadoop v1, v2 차이


Hadoop v1
2011년에 정식 발표된 Hadoop v1은 분산 파일 관리 시스템인 HDFS와 분산 데이터 처리를 위한 MapReduce 프레임워크만 제공했습니다.
분산저장은 네임노드와 데이터노드가 처리합니다. 네임노드는 블록정보를 가지고 있는 메타데이터와 데이터 노드를 관리하는 역할을 합니다. 데이터노드에서 데이터를 블록단위로 나누어서 저장합니다. 병렬처리는 잡트래커와 태스크트래커가 처리합니다. 잡트래커가 어플리케이션의 라이프사이클을 관리하고, 자원 관리도 처리하였습니다. 태스크트래커는 실제 작업을 처리하였습니다.
병렬처리의 작업 단위는 슬롯(slot)입니다. 맵 슬롯, 리듀스 슬롯의 개수가 정해져 있고, 실행 시점에 역할이 정해지면 슬롯의 용도를 변경할 수 없기 때문에 맵 작업이 진행중에는 리듀스 슬롯은 대기상태로 있었습니다. 이로 인해 클러스터가 100% 활용되지 않을때도 있었습니다.
Hadoop V2
클러스터의 자원관리와 어플리케이션의 라이프사이클 관리를 잡트래커가 모두 담당하여 병목현상이 발생하게 되었고, 이러한 병목현상을 개선하기 위해 YARN을 도입하였습니다. YARN은 잡트래커의 기능을 분리하여 자원관리는 리소스 매니저와 노드매니저가 담당하고, 애플리케이션의 라이프 사이클관리는 노드 매니저가 실행한 컨테이너 내부에서 동작하는 어플리케이션 마스터가 담당하며, 실제 작업(Map, Reduce 등)은 컨테이너 단위로 실행됩니다.
Hadoop v2에서도 노드와 파일 시스템은 HDFS를 근간으로 하지만, 그 이외에 모든 작업을 Yarn이라는 Resource Management 프레임워크를 이용해서 유연하게 분산 처리 작업을 작성하고 활용할 수 있는 아키텍처로 바꿨습니다.
'데이터엔지니어링' 카테고리의 다른 글
| [데이터엔지니어링] Hadoop HDFS에 대해서 알아보자 - (2편) (0) | 2026.01.25 |
|---|---|
| Github Actions(Self-Hosted Runner)를 이용한 ECR, ECS 배포 자동화하기 (3) (1) | 2025.04.27 |
| Github Actions를 이용한 ECR, ECS 배포 자동화하기 (2) (0) | 2025.03.16 |
| Github Actions를 이용한 ECR, ECS 배포 자동화하기 (1) (1) | 2025.03.16 |
| 서버리스 데이터 파이프라인 구축하면서 배운점! (0) | 2025.02.16 |