Hadoop YARN 기본 설정

HadoopHadoopBeginner
지금 연습하기

💡 이 튜토리얼은 영어로 번역되었습니다. 원본을 보려면 영어로 전환

소개

미래 로봇 공장에서 최첨단 기술과 정밀 엔지니어링이 만나는 곳에서, 당신은 로봇 유지 보수 기술자의 역할을 맡게 됩니다. 당신의 주요 목표는 공장의 복잡한 네트워크 내에서 컴퓨팅 자원의 효율적인 할당 및 관리를 보장하는 것입니다. 이 네트워크는 로봇의 인지 기능을 강화하여 로봇이 비교할 수 없는 정확성과 속도로 복잡한 작업을 수행할 수 있도록 합니다.

공장의 컴퓨팅 인프라는 Hadoop 생태계, 특히 YARN (Yet Another Resource Negotiator) 구성 요소에 의존합니다. 당신의 목표는 Hadoop YARN 의 기본적인 설정을 마스터하여 공장의 계산 워크로드를 여러 노드에 원활하게 분산 및 관리하고 최적의 성능과 자원 활용을 보장하는 것입니다.

YARN 아키텍처 탐구

이 단계에서는 YARN 아키텍처와 주요 구성 요소를 살펴보고, Hadoop 생태계 내에서 자원을 관리하고 할당하는 방식을 이해하기 위한 기반을 다질 것입니다.

YARN 아키텍처는 두 가지 주요 구성 요소로 구성됩니다.

  1. ResourceManager (RM): ResourceManager 는 클러스터 전체에서 사용 가능한 자원 (CPU, 메모리 등) 을 중재하고 할당하는 중앙 권한입니다. 다음 두 가지 구성 요소로 구성됩니다.

    • Scheduler (스케줄러): 미리 정의된 스케줄링 정책에 따라 다양한 실행 중인 애플리케이션에 자원을 할당하는 역할을 합니다.
    • ApplicationsManager (애플리케이션 관리자): 작업 제출을 수락하고, ApplicationMaster 를 실행하기 위한 첫 번째 리소스 컨테이너를 협상하며, ApplicationMaster 컨테이너가 실패할 경우 다시 시작하는 서비스를 제공하는 역할을 합니다.
  2. NodeManager (NM): NodeManager 는 클러스터의 각 노드에서 실행되며, 해당 노드의 자원을 관리하고 해당 노드에서 실행 중인 컨테이너를 모니터링하는 역할을 합니다.

YARN 아키텍처를 더 잘 이해하기 위해 Hadoop 구성 디렉토리로 이동하여 관련 구성 파일을 살펴보겠습니다.

하지만 먼저 사용자를 전환해야 합니다.

su - hadoop

Hadoop 구성 디렉토리로 이동합니다.

cd /home/hadoop/hadoop/etc/hadoop/

vim 도구를 사용하여 yarn-site.xml 파일을 엽니다.

<configuration>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  </property>
</configuration>

이 구성 파일에서 NodeManager 에 대해 mapreduce_shuffle 보조 서비스가 활성화된 것을 볼 수 있습니다. 이 서비스는 MapReduce 작업에서 셔플 작업을 관리하여 맵 및 리듀스 단계 간의 효율적인 데이터 전송을 보장합니다.

YARN 서비스 시작

이제 YARN 아키텍처와 구성을 살펴보았으므로, Hadoop 클러스터에서 YARN 서비스를 시작해 보겠습니다.

먼저, 다음 명령을 사용하여 YARN 서비스를 시작합니다.

start-yarn.sh

이 스크립트는 클러스터의 적절한 노드에서 ResourceManagerNodeManager 데몬을 시작합니다.

다음 명령을 사용하여 YARN 서비스의 프로세스를 확인합니다.

jps

NodeManagerResourceManager 서비스가 출력에 표시되어야 합니다.

다음 명령을 사용하여 YARN 서비스의 상태를 확인할 수 있습니다.

yarn node -list

이 명령은 클러스터에서 활성 NodeManager 목록과 해당 상태 및 사용 가능한 리소스를 표시합니다.

2024-03-17 19:27:30,108 INFO client.DefaultNoHARMFailoverProxyProvider: Connecting to ResourceManager at /0.0.0.0:8032
Total Nodes:1
         Node-Id	     Node-State	Node-Http-Address	Number-of-Running-Containers
iZj6cdofomqja8ye7wk8kzZ:43689	        RUNNING	iZj6cdofomqja8ye7wk8kzZ:8042	                           0

위의 출력에서 하나의 활성 NodeManager 가 실행 중인 것을 확인할 수 있습니다.

YARN 작업 제출

YARN 서비스가 실행 중이므로, YARN 의 리소스 할당 및 스케줄링 기능을 테스트하기 위해 샘플 작업을 제출해 보겠습니다.

먼저, 단어 수를 계산할 텍스트 내용이 포함된 input.txt라는 입력 텍스트 파일을 Hadoop 파일 시스템에 준비합니다.

echo -e "Hello World\nHello Hadoop\nYARN is cool" > input.txt
hadoop fs -put input.txt /input.txt

그런 다음, 예제 프로그램의 JAR 파일은 Hadoop 설치 디렉토리에서 찾을 수 있으며, 일반적으로 $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar에 위치합니다. 이 JAR 파일을 사용하여 Word Count 프로그램을 실행할 수 있습니다.

yarn jar /home/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /input.txt /output

이 명령은 MapReduce 작업을 YARN ResourceManager 에 제출하며, ResourceManager 는 사용 가능한 NodeManager 에서 리소스를 할당하고 작업을 예약합니다.

작업이 완료되면 /output 디렉토리에서 출력을 볼 수 있습니다.

hdfs dfs -cat /output/part-r-00000

이것은 단어 수 출력을 표시해야 합니다.

Hadoop	1
Hello	2
World	1
YARN	1
cool	1
is	1

요약

이 랩에서는 YARN 아키텍처와 주요 구성 요소를 살펴보고, YARN 서비스를 구성하고 시작하는 방법을 배우고, YARN 클러스터에 샘플 MapReduce 작업을 제출했습니다. 이 랩을 완료함으로써 Hadoop YARN 의 기본 설정 및 운영에 대한 실질적인 경험을 얻었으며, 분산 환경에서 컴퓨팅 리소스를 효율적으로 관리하고 할당할 수 있게 되었습니다.

이 랩은 YARN 에 대한 실질적인 이해를 제공했을 뿐만 아니라 현대 컴퓨팅 인프라에서 리소스 관리 및 스케줄링의 중요성을 강조했습니다. 미래형 공장의 로봇 유지 보수 기술자로서 이러한 기술을 습득하면 공장의 컴퓨팅 리소스의 성능과 효율성을 최적화하여 로봇의 원활하고 안정적인 운영을 보장할 수 있습니다.