공부한 내용을 적은 거라 틀린 부분이 있을 수 있습니다.

 

 

아래 그림을 전제로 하여 설명해본다.

https://www.researchgate.net/publication/318472941_Using_machine_learning_to_optimize_parallelism_in_big_data_applications

 

 

이해를 돕기 위해 하나의 상황을 가정해보자.

 

나는 총 세 대의 서버를 갖고 있고, 이 서버 위에 클러스터를 구축하여 빅데이터를 처리하는 application 을 실행한다고 해보자.

세 대의 서버 위에 구축된 클러스터에 Hadoop YARN 이 올라간다.

 

YARN 은 Resource Manager(이하 RM) 를 실행시킨다.

RM 은 클러스터 당 하나만 있다.

또한 YARN 은 클러스터를 구성하고 있는 각 노드에서 Node Manager 를 실행시킨다.

Node Manager(이하 NM)는 해당 노드의 Resource 를 관리하고 있다.

만약 RM 이 "3번 노드의 Resource 는 얼마나 있지?" 라고 3번 노드에게 물으면,

3번 노드의 NM 이 "cpu 85% 놀고 있고 여유 memory 3g 있슴돠" 이렇게 대답 할 것이다.

따라서 RM 은 NM 을 통해 전체 클러스터의 Resource 를 알고 관리할 수 있다.

 

Client(이하 Cli) 인 우리는 RM 에게 "나 MapReduce 하나 돌리고 싶다." 라고 말한다.

(이 작업은 Cli가 RM에게 Container Launched Context 를 보냄으로써 이루어진다고 한다.)

RM 은 요청 받은 작업을 실행하기 위해, Message Interface 를 통해 Application Master(이하 AM) 를 실행시킨다.

구체적으로 어떻게 실행시키는지 보자.

 

클러스터를 구축하고 있는 세 개의 노드 중 하나에 AM 을 실행시킨다.

위의 그림에서 보면 2번 노드에 AM 이 MapReduce(MR) 을 실행시키기 위해 만들어졌다.

AM 은 Cli 가 요청한 작업을 전적으로 맡아 수행 할 것이다.

AM 은 Cli 가 요청한 작업이 얼마만큼의 Resource 를 필요로 하는지 파악 한 후에

AM 은 RM 에게 "이 만큼의 Resource 가 작업하는 데 들어가니 할당 좀 해주세요" 라고 말한다.

RM 은 AM 에게 "알았다 Container 3개 만큼 만들 수 있도록 해줄께" 라고 말한다.

AM 은 각 노드의 NM 에게 Container 를 만들라고 지시하고 NM은 Container 를 만든다(실질적으로 Container 를 만드는 건 NM)

(위의 그림에서 빨간색 Container 3 개가 1번 노드에 하나, 3번 노드에 2개 만들어진 것을 확인할 수 있다.)

 

여기서 말하는 Container 를 Resource 라고 봐도 무방하다.

task 가 실행되기 위한 공간이다.

많으면 많을수록 task 가 많이 실행 될 것이다.

 

할당된 Container 들은 이제 AM 이 관리한다.

AM 의 세상이다.

RM 은 AM 이 작업을 할 수 있도록 환경을 구성해주었고,

AM 이 이제 Cli 가 요청한 작업 수행을 직접 관리한다.

AM 은 위의 세 개의 Container 들을 사용하여 Job Tracker, Task Tracker 등을 만들고 Cli 가 요청한 작업을 수행한다.

AM 은 각 노드의 NM에게 "너는 이런 task 를 실행하고, 너는 저런 task 를 실행해라" 라고 명령하고,

NM 은 그 명령에 따라 task 를 실행시킨다.

 

작업이 완료되면 AM 은 결과를 Cli 에게 보낸다.

또한 AM 은 RM 에게 "일 다 끝났어요!" 라고 말 하고 자신을 정지한다.

RM 은 AM 에게 할당한 Resource 들(빨간 박스들)을 모두 수거해간다. Resource 낭비를 막고 다른 AM 에게 주어 재사용하기 위해.

 

 

https://developer.ibm.com/tutorials/bd-yarn-intro/

 

 

 

위에선 Cli 가 요청한 작업으로 MapReduce 를 예로 들었지만, MapReduce 말고 다른 작업들,

이를 테면 Apache Spark, Hbase, Apache Storm 등이 대신 올 수 있다.

이때도 역시 RM 이 관여하여 Resource 를 할당해주고, 각 App 에 맞는 AM 이 구동된다.

(MapReduce 작업시에는 MapReduce AM 이 돌아가고, Spark 작업시에는 Spark AM 이 돌아간다)

아래와 같은 모양이 될 것이다.

 

 

 

 

결론적으로 YARN 은 Cluster 의 Resource 를 관리해주는 Cluster Resource Manager 가 된다.

이 위에 여러가지 형태의 작업들을 돌릴 수 있다.

 

YARN 의 목적은 이렇다.

서로 다른 서버 위에서 여러 작업들이 하나의 Resource Manager(YARN)에 의해 관리된다.

그렇게 함으로써 서버 Resource 낭비를 최소화할 수 있다.

 

 

 

 

 

간단한 기본 개념은 이렇고, 구체적으로 알아보기 위해선 구글링 하거나 아래 "참고" 문서들을 읽어보라!

 

 

 

 

 

 

 

 

 

참고

https://developer.ibm.com/tutorials/bd-yarn-intro/

 

Introduction to YARN

Apache Hadoop 2.0 offers several revolutionary features, including Yet Another Resource Negotiator (YARN), HDFS Federation, and a highly available NameNode, which make the cluster much more efficient, powerful, and reliable. In this article, learn about th

developer.ibm.com

https://www.researchgate.net/publication/318472941_Using_machine_learning_to_optimize_parallelism_in_big_data_applications

https://olpaemi.blog.me/140206667534

 

하둡 2.0 YARN의 컨셉에 대한 검토와 적용 방법

Main Source지금까지 다양한 적용사례나 아키텍쳐에 대한 검토를 할 때 자연스럽게 하둡 2.0 기...

blog.naver.com

https://www.popit.kr/what-is-hadoop-yarn/

 

YARN 무엇에 쓰는 물건인고? | Popit

Hadoop 을 처음 접하시는 분들은 HDFS에 대해서는 쉽게 이해하지만 YARN에 대해서는 개념을 잡기 어려워하시는 분들이 있습니다. 그 이유는 Hadoop하면 MapReduce를 많이 떠 올리시는데 MapReduce 따로 YARN 따로 있기 때문에 오는 혼선이 아닌가 생각합니다. 이 글에서는 YARN에 대한 간단한 개념 설명과 YARN에서 MapReduce를 사용하기 환경 설정은 어떻게 해야 하는지에 대해 설펴 보겠습니다.

www.popit.kr

https://eyeballs.tistory.com/82

 

[Spark] YARN 위에서 Application 을 실행하는 단계

1. 사용자는 spark-submit을 사용하여 애플리케이션을 제출한다. 2. spark-submit은 드라이버 프로그램을 실행하고 사용자가 정의한 main() 메소드를 호출한다. 3. 드라이버 프로그램은 클러스터 매니저에게 익스..

eyeballs.tistory.com

https://wikidocs.net/22899

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

 

+ Recent posts