이번 강좌에서는 하둡에서 리소스 관리 및 작업 스케줄링을 담당하는 YARN의 개념과 작동 원리를 설명하고, YARN을 통해 작업을 실행하는 실습을 해보자.
YARN은 하둡의 핵심 컴포넌트로, 클러스터의 리소스를 관리하고 작업을 스케줄링하는 역할을 한다.
이전에는 하둡의 MapReduce가 리소스 관리와 작업 실행을 모두 담당했지만, 하둡 2.x 버전부터 YARN이 리소스 관리 역할을 분리해 더욱 효율적인 분산 처리가 가능하게 되었다.
YARN의 구조는 크게 ResourceManager, NodeManager, ApplicationMaster 세 가지 컴포넌트로 나눌 수 있다.
YARN의 중앙 관리자로, 클러스터 전체의 리소스를 관리하고 스케줄링하는 역할을 한다.
ResourceManager는 다음 두 가지 핵심 기능을 담당한다.
NodeManager는 각 노드에서 실행되며, 해당 노드의 리소스를 관리하고, ResourceManager로부터 받은 명령에 따라 컨테이너(Container)를 시작하고 종료하는 역할을 한다.
각 애플리케이션은 자체적인 ApplicationMaster를 가지며, 애플리케이션의 실행과 리소스 요구를 관리한다.
각 작업의 실행을 조율하고, ResourceManager와 통신하여 필요한 리소스를 요청한다.
YARN에서 작업이 실행되는 기본적인 흐름은 다음과 같다:
하둡에서는 YARN과 관련된 다양한 명령어를 제공한다.
YARN에서 작업을 실행하고 관리하는 방법을 알아보자.
YARN 클러스터의 상태를 확인하려면 다음 명령어를 사용할 수 있다.
yarn cluster
이 명령어는 YARN 클러스터의 상태와 활성 노드, 작업 수 등을 보여준다.
현재 실행 중인 애플리케이션을 확인하려면:
yarn application -list
이 명령어는 클러스터에서 실행 중인 모든 애플리케이션의 목록을 출력한다.
특정 애플리케이션을 종료하려면:
yarn application -kill <application ID>
애플리케이션 ID는 yarn application -list
명령어로 확인할 수 있다.
YARN에서 작업을 실행하려면 yarn jar
명령어를 사용하여 애플리케이션을 제출한다.
yarn jar <JAR 파일 경로> <메인 클래스> <입력 파일 경로> <출력 경로>
예를 들어, WordCount 프로그램을 YARN에서 실행하려면 다음과 같이 한다.
yarn jar wordcount-1.0.jar WordCountDriver /user/hadoop/input /user/hadoop/output
이 명령어는 HDFS에 저장된 /user/hadoop/input
데이터를 읽어 단어 빈도수를 계산하고, 결과를 /user/hadoop/output
디렉토리에 저장한다.
이번 실습에서는 YARN을 통해 MapReduce 작업을 실행하고, 작업 상태를 모니터링하는 방법을 알아보자.
HDFS에 사용할 샘플 데이터를 업로드한다.
echo "Hadoop YARN is a resource manager" > input.txt
echo "MapReduce runs on top of YARN" >> input.txt
hdfs dfs -put input.txt /user/hadoop/input
YARN을 통해 WordCount 프로그램을 실행해보자.
yarn jar target/wordcount-1.0.jar WordCountDriver /user/hadoop/input /user/hadoop/output
이 명령어는 HDFS에서 입력 파일을 읽어 단어 빈도수를 계산한 후, 결과를 출력한다.
실행 중인 애플리케이션의 상태를 확인하기 위해 다음 명령어를 사용한다.
yarn application -list
애플리케이션이 완료된 후에는 출력 디렉토리에서 결과를 확인할 수 있다.
hdfs dfs -cat /user/hadoop/output/part-r-00000
출력은 다음과 같이 각 단어의 빈도수를 나타낸다.
Hadoop 1
YARN 2
is 1
a 1
resource 1
manager 1
MapReduce 1
runs 1
on 1
top 1
YARN은 웹 인터페이스를 통해 애플리케이션 상태와 클러스터 상태를 모니터링할 수 있다. 브라우저에서 YARN의 웹 UI에 접속하려면:
http://<ResourceManager_IP>:8088
http://<NodeManager_IP>:8042
YARN은 클러스터의 리소스를 효율적으로 사용하기 위해 다양한 설정을 제공한다. 주요 설정은 다음과 같다:
yarn-site.xml
파일에서 조정할 수 있다.이번 강좌에서는 YARN의 개념과 구조를 살펴보고, 실제로 YARN을 통해 작업을 실행하고 관리하는 방법을 배웠다.
YARN은 하둡 클러스터에서 리소스를 관리하고 여러 작업을 동시에 실행할 수 있도록 도와주는 중요한 역할을 한다.
다음 강좌에서는 하둡 에코시스템의 또 다른 중요한 컴포넌트인 Hive를 다루며, 대규모 데이터 쿼리 처리와 분석에 대해 알아보자.