시작하며
Apache Hadoop은 대량의 데이터를 저장하고 계산을 수행하기 위한 오픈소스 소프트웨어 프로그래밍 프레임워크다.
이 글에서는 HADOOP이 여러 버전을 거쳐 발전해 오면서 어떤 변화들이 있었는지 살펴본다.
Hadoop 버전별 아키텍처
Hadoop Version 1
Main : HDFS + MAPREDUCE(Resource Management + Data Processing)

HADOOP 1은 하둡의 가장 초기 형태로 HDFS(하둡 분산 파일 시스템)와 MapReduce(자원 관리 및 데이터 처리)로 이루어져 있다. HADOOP 1 에서는 MapReduce가 Resource-Management와 Data-Processing 작업을 함께 수행한다.
Hadoop 1의 동작방식은 다음과 같다.
Client에서 내용을 읽거나 쓰고 싶은 경우에 NameNode에 이를 요청한다.- MapReduce Job을 제출하는 경우에는 JobTracker를 요청하고, JobTracker는 이를 스케줄링하여 TaskTracker를 선정한 뒤 전달한다.
- 여기서
JobTracker는 메인 클러스터의 리소스와 잡스케줄링을 담당하고,TaskTracker는 각 노드와 담당 Task를 수행한다.
하지만 HADOOP 1은 다음과 같은 한계점들을 가지고 있었다.
- NameNode가 단일 장애 지점이다. Secondary NameNode가 존재하는 경우도 있지만, Sync 과정에 시간차가 발생하여 데이터 유실 가능성이 높아진다.
- JobTracker와 TaskTracker의 부하가 너무 크게 발생한다.
Tip
단일 실패 지점(single point of failure) 혹은단일 장애 지점은 시스템 구성 요소 중에서 일부가 동작하지 않으면 전체 시스템이 중단되는 요소를 말한다. Hadoop 2 이후부터는 NameNode의 다중화를 지원함으로써SPOF문제를 해결했다.
Hadoop Version 2
Main : HDFS + YARN + MAPREDUCE + Others


HADOOP 2는 HADOOP 1에서 보였던 SPOF나 부하 문제를 개선하기 위해 아래와 같은 개선점들이 추가되었다.
- 단일 장애 지점이었던 NameNode의 이중화(active-standby)를 지원하게 되었다.
- JobTracker, TaskTracker가 사라지고, 이를
ResourceManager와NodeManager가 대체하게 되었다. 또한 NodeManager는Container와 ApplicationMaster로 구성됨으로써 다양한 작업을 지원할 수 있게 되었다.
Hadoop Version 3
Main : HADOOP 2 And More

HADOOP 3에서는 HADOOP 2와 구성요소는 동일하지만 다양한 기능들이 추가되었다.
- Erasure Coding을 지원하게 되었다. 이전 HDFS에서는 replica가 3이라면 그만큼의 디스크 공간을 차지해야 했지만, 그보다 적은 공간으로도 같은 수의 복제본을 유지할 수 있게 되었다.
- YARN Timeline Service v2가 도입되었다. application의 일반적인 정보를 REST API를 통해 조회하는 기능을 개선하여 더 다양한 퍼포먼스를 지원하게 되었다.
- 최소 지원하는 JAVA 버전이 JAVA 8로 업그레이드되었다.
- NameNode 이중화 기능이 더 강화되었다. HADOOP 2에서의 NameNode 이중화는 정확히
2개의 이중화를 의미하지만,HADOOP 3에서는2개 이상의 NameNode를 지원하게 되었다.
정리하며
Hadoop은 버전을 거듭하면서 SPOF 문제 해결, 자원 관리 분리, 다양한 프레임워크 지원이라는 방향으로 발전해 왔다. HADOOP 1의 단순한 HDFS + MapReduce 구조에서 HADOOP 2의 YARN 도입, HADOOP 3의 Erasure Coding과 다중 NameNode 지원으로 이어지는 흐름을 이해하면 하둡 생태계 전반을 파악하는 데 도움이 된다. 다음 글에서는 HDFS와 YARN에 대해 더 깊이 살펴본다.