소개
미래 로봇 공장에서 최첨단 기술과 정밀 엔지니어링이 만나는 곳에서, 당신은 로봇 유지 보수 기술자의 역할을 맡게 됩니다. 당신의 주요 목표는 공장의 복잡한 네트워크 내에서 컴퓨팅 자원의 효율적인 할당 및 관리를 보장하는 것입니다. 이 네트워크는 로봇의 인지 기능을 강화하여 로봇이 비교할 수 없는 정확성과 속도로 복잡한 작업을 수행할 수 있도록 합니다.
공장의 컴퓨팅 인프라는 Hadoop 생태계, 특히 YARN (Yet Another Resource Negotiator) 구성 요소에 의존합니다. 당신의 목표는 Hadoop YARN 의 기본적인 설정을 마스터하여 공장의 계산 워크로드를 여러 노드에 원활하게 분산 및 관리하고 최적의 성능과 자원 활용을 보장하는 것입니다.
YARN 아키텍처 탐색
이 단계에서는 YARN 아키텍처와 주요 구성 요소를 살펴보고, Hadoop 생태계 내에서 자원을 관리하고 할당하는 방식을 이해하기 위한 기반을 다질 것입니다.
YARN 아키텍처는 두 가지 주요 구성 요소로 구성됩니다.
ResourceManager (RM): ResourceManager 는 클러스터 전체에서 사용 가능한 자원 (CPU, 메모리 등) 을 중재하고 할당하는 중앙 권한입니다. 다음 두 가지 구성 요소로 구성됩니다.
- Scheduler (스케줄러): 미리 정의된 스케줄링 정책에 따라 다양한 실행 중인 애플리케이션에 자원을 할당하는 역할을 합니다.
- ApplicationsManager (애플리케이션 관리자): 작업 제출을 수락하고, ApplicationMaster 를 실행하기 위한 첫 번째 리소스 컨테이너를 협상하며, ApplicationMaster 컨테이너가 실패할 경우 다시 시작하는 서비스를 제공하는 역할을 합니다.
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
이 스크립트는 클러스터의 적절한 노드에서 ResourceManager 및 NodeManager 데몬을 시작합니다.
다음 명령을 사용하여 YARN 서비스의 프로세스를 확인합니다.
jps
NodeManager 및 ResourceManager 서비스가 출력에 표시되어야 합니다.
다음 명령을 사용하여 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 에 대한 실질적인 이해를 제공했을 뿐만 아니라 현대 컴퓨팅 인프라에서 리소스 관리 및 스케줄링의 중요성을 강조했습니다. 미래형 공장의 로봇 유지 보수 기술자로서 이러한 기술을 습득하면 공장의 컴퓨팅 리소스의 성능과 효율성을 최적화하여 로봇의 원활하고 안정적인 운영을 보장할 수 있습니다.



