이번 포스팅에서는 Hadoop의 각 버전 별 특징과 HDFS에 대해 다뤄보도록 하겠다.
우선 현재 Hadoop은 v3까지 나왔으며, 간단하게 각 버전 별 특징에 대해 살펴보면 다음과 같다.
- Hadoop v1
- HDFS(분산 저장)과 MapReduce(병렬 처리)로 구성됨
- Hadoop v2
- Job Tracker의 병목 현상을 제거하기 위해, YARN 아키텍처를 도입함
- 클러스터 관리: Resoure Manager, Node Manager
- 작업 관리: App Master, Container
- Job Tracker의 병목 현상을 제거하기 위해, YARN 아키텍처를 도입함
- Hadoop v3
- Erasure Coding 지원
- 기존의 블록 복제를 대체하는 방식으로 HDFS 사용량 감소
- YARN 타임라인 서비스 v2 도입
- JAVA8 지원
- NameNode 이중화 기능 강화
- Erasure Coding 지원
다음으로 HDFS에 대해 알아보기 전에, 먼저 분산 파일 시스템이란 무엇인지 살펴보면,
분산 파일 시스템이란 네트워크로 연결된 여러 머신의 스토리지를 관리하는 파일 시스템을 의미하며, 이를 통해 하나의 머신에서 문제가 발생해도 다른 머신에서 대신 처리가 가능하도록 지원한다.
HDFS란 범용 하드웨어에서 동작하고, 장애 복구성을 가지는 분산 파일 시스템이라고 볼 수 있다.
(무슨 말인지 통 와닿지가 않는다...)
조금 구체적으로 HDFS의 특징을 정리해보면 아래와 같다.
- 범용 하드웨어를 사용하여 분산 파일 시스템 구성
- 블록 단위로 저장
- 하나의 파일을 여러 블록으로 저장
- 블록 사이즈가 적으면, 그만큼 더 많은 양의 메타데이터가 필요하기 때문임
- Hadoop v2에서는 기본 블록 사이즈가 128MB (Hadoop v1은 64MB)
- 일반적인 디스크 블록에 비해 사이즈가 큰데, 이는 탐색 비용을 최소화하기 위함
- 즉, 블록의 시작점을 탐색하는데 시간이 적게 걸림
- 하나의 파일을 여러 블록으로 저장
- 마스터 & 워커 구조
- NameNode
- 메타데이터 정보(어떤 DataNode에 어떤 블록 데이터가 담겨져 있는지)를 담고 있음
- FsImage(파일 시스템 이미지): 네임스페이스를 포함한 데이터의 모든 정보
- EditLog: DataNode에서 발생한 데이터 변환 내역
- DataNode를 관리하는 역할을 수행함
- 메타데이터 정보(어떤 DataNode에 어떤 블록 데이터가 담겨져 있는지)를 담고 있음
- Secondary NameNode
- FsImage와 EditLog를 주기적으로 병합해주는 역할을 수행함 (= 체크 포인트)
- 주기적으로 NameNode의 FsImage를 백업하는 역할도 수행함
- DataNode
- 실제 데이터를 담고 있음
- 하트비트를 통한 DataNode 동작 여부를 전달
- 저장하고 있는 블록의 목록을 주기적으로 NameNode에 보고
- NameNode
- 내고장성(Fault-tolerance) 제공
- 데이터를 복제하여 일부 장애가 발생하더라도 문제 없이 서비스를 할 수 있도록 지원
- 확장성 제공
- 하드웨어를 추가하면 용량이 선형적으로 증가
- 블록 캐싱 기능 제공
- DataNode에 저장된 데이터 중, 자주 읽는 블록을 블록 캐시로 명시 가능
- HDFS Federation 지원
- HDFS 내에 메타데이터가 많아지면 메모리 사용량이 증가하게 되는데, 이러한 문제를 해결하기 위한 방법으로 네임스페이스 단위로 NameNode를 등록하여 사용(HDFS Federation)하는 기능을 제공함
- 고가용성(HA) 지원
- HDFS는 NameNode에 문제가 발생하면 모든 작업이 중지되고, 파일을 읽거나 쓸 수 없게 되는 문제가 있음
- 이러한 문제를 해결하기 위해 Hadoop v2부터 HDFS 고가용성(HA)을 지원함
- HDFS 고가용성은 이중화된 두 대의 서버인 Active NameNode와 Standby NameNode를 이용하여 지원
- Active NameNode는 NameNode의 역할을 수행하고, Standby NameNode는 Active NameNode와 동일한 메타데이터 정보를 유지하다가, Active NameNode에 문제가 발생하면 Standby NameNode가 Active NameNode로 동작
※ 참고로 HDFS는 실시간 처리보다는 배치 처리를 위해 설계되었기 때문에, 빠른 데이터 응답 시간이 필요한 작업에는 적합하지 않다는 점 기억해두자!
<Reference>
1. [패스트캠퍼스] 한 번에 끝내는 빅데이터 처리 with Spark&Hadoop 강의
'Data Engineering > Hadoop Ecosystem' 카테고리의 다른 글
[Airflow Master Class] Docker 및 Airflow 설치 (0) | 2023.08.20 |
---|---|
[Airflow Master Class] WSL 설치 & 리눅스(Linux) 기본 명령어 (0) | 2023.08.20 |
[FastCampus-DE] 3. 빅데이터 플랫폼과 Hadoop Ecosystem (0) | 2022.07.26 |
[FastCampus-DE] 2. 데이터 파이프라인 (0) | 2022.07.26 |
[FastCampus-DE] 1. 빅데이터 플랫폼 & 아키텍처 (0) | 2022.07.25 |