본문 바로가기

data engineering/hadoop

Hadoop Ecosystem 쓱 보기 -2 (Mapreduce2, YARN)

https://nani-log.tistory.com/158

 

Hadoop Ecosystem -1 (HDFS, MapReduce1)

데이터 웨어하우스를 공부하다보니, 분산시스템의 근간인 하둡 에코시스템을 대체해 사용자가 관리하는 부분을 데이터 웨어하우스가 대신해주고 테이블을 생성하고 쿼리를 튜닝하는 부분만

nani-log.tistory.com

 

 

이번 포스트에서는 Mapreduce2와 YARN에 중점을 두고 살펴보고자 한다. Hadoop 1.0이 2.0으로 발전하면서, Mapreduce1의 단점을 보완하고자 YARN이 등장했다. 앞선 포스트에서 언급했듯이 Mapreduce1은 클라이언트가 하나의 Job인 데이터 처리를 요청하면 Job Tracker가 여러개의 태스크로 나누고 여러 Task Tracker들에게 일을 분배한다

 

언뜻 보면 '그냥 일을 잘 분배하고 있는데 왜 YARN이 필요해?'라고 생각할 수 있겠지만 사실 하나의 컴퓨터로 데이터를 저장하고 처리하기 어려워서 등장한 하둡 입장에서 리소스를 관리하고 각 태스크를 모니터링하는 것을 하나의 서버에서 관리한다는 것은 굉장한 부하가 걸리는 일이었을 것이다. 또 Job Tracker는 단일 장애점(Single Point of Failure, 동작하지 않으면 전체 시스템이 중단되는 요소)으로 실패시 전체 시스템이 중단되어 버리는 단점 또한 있었다

 

이 문제를 해결하기 위해 등장한 것이 YARN(Yet Another Resource Negotiator)다

[출처] https://www.geeksforgeeks.org/difference-between-hadoop-1-and-hadoop-2/

 

 

YARN(Yet Another Resource Negotiator)

YARN은 이름에서 알 수 있듯이 리소스 협상가라는 타이틀을 달고 있다. 이 타이틀을 봤을때 딱 봐도 리소스를 관리한다는 것을 알 수 있다. 그럼 Mapreduce1과 어떤 차이가 있을까? 표로 살펴보면 다음과 같다

 

Mapreduce1 YARN
Job Tracker 리소스 매니저, 애플리케이션 마스터, 타임라인 서버
Task Tracker 노드 매니저

 

Job Tracker의 기능은 크게 Job들을 스케줄링하고, 태스크 진행을 모니터링하고, Job이 실행된 이력을 저장하는 것이 있었다. 이 기능들을 YARN에선 리소스 매니저(Job 스케줄링), 애플리케이션 마스터(태스크 모니터링), 타임라인 서버(Job 실행 이력 저장)가 각각 담당하게 되면서 소위 업무 부담을 완화시켰다

 

Task Tracker는 노드 매니저로 대체되었다. Mapreduce1에선 리소스를 고정된 단위인 슬롯으로 map과 reduce에 해당하는 태스크에 리소스를 미리 할당해 유연성이 떨어졌다. 하지만 YARN에서는 컨테이너 기반으로 리소스 풀을 관리해 동적으로 리소스를 할당하게 되었고 이를 노드 매니저가 관리해 유연성있게 리소스를 운영할 수 있게 되었다

 

이로 인해, Mapreduce2는 YARN을 기반으로 동작하는 데이터 처리 프레임워크로만 남게 되었다

 

 

 

Mapreduce1 → Mapreduce2 + YARN으로의 장점

YARN이 등장하면서의 장점은 다음과 같다

 

1. Mapreduce1은 Job Tracker가 잡/태스크 모두 관리하기 때문에 4,000노드 혹은 40,000 태스크를 넘어서면 병목이 발생한다. 이에 비해 YARN은 각 업무를 분담했기 때문에 10,000 노드 혹은 100,000 태스크까지 확장 가능하다

 

2. Mapreduce1은 고정 크기의 '슬롯'을 맵/리듀스 슬롯으로 설정해 유연성이 부족했지만, YARN의 노드 매니저는 정해진 갯수의 슬롯 대신 리소스 풀을 관리하기 때문에 태스크에 적절한 리소스를 배정할 수 있게 되었다

 

3. Mapreduce1은 Mapreduce를 통한 데이터 처리만 가능했다. 하지만 YARN을 기반으로 동작하게 되면서 다양한 애플리케이션(Spark, Tez, ...)을 통해 데이터 처리가 가능해졌다

 

 

 

정리

결국 YARN은 'mapreduce가 가지고 있었던 한계를 어떻게 해결할 수 있을까?'하는 고민에서 나왔다. 이로 인해 여러 애플리케이션의 확장이 가능해졌고 가용성이 현저히 커졌다. 다음 포스트에서는 사용자 입장에서의 사용성을 더 높이기 위해 등장한 Hive와 쿼리 엔진들에 대해서 알아볼 예정이다