[라오시리] YARN 종합자원관리 시스템
Apache Hadoop YARN(Yet Another Resource Negotiator, 또 다른 리소스 코디네이터)은 상위 계층 애플리케이션 및 스케줄링에 대한 통합 리소스 관리를 제공할 수 있는 새로운 Hadoop 리소스 관리 시스템입니다. 도입은 활용도, 통합 리소스 관리 및 데이터 공유 측면에서 클러스터에 큰 이점을 가져왔습니다.
Mapreduce1.0 검토
1. 클라이언트는 클러스터에 작업을 제출할 책임이 있습니다.
Mapreduce1.0 검토
p>
2. ResourceManager는 클러스터 리소스의 통합 관리 및 예약을 담당하며 JobTracker의 역할을 맡습니다. 일반적으로 RM은 다음과 같은 기능을 갖습니다. >
3. NodeManager는 YARN 클러스터의 각 노드를 관리합니다. 클러스터 전체에 여러 개가 있을 수 있습니다. 단일 노드에서 리소스의 관리 및 사용을 담당합니다(구체적으로 애플리케이션 마스터가 신청한 것보다 더 많은 컴퓨팅 리소스를 사용하는 것을 방지하기 위해 컴퓨팅 노드에서 컨테이너의 시작, 모니터링 및 관리를 담당합니다). NM에는 다음과 같은 기능이 있습니다.
4. 각 애플리케이션에는 애플리케이션의 전체 수명주기 관리를 담당하는 하나의 ApplicationMaster가 있습니다.
ApplicationMaster는 ResourceManager의 리소스를 조정하고 NodeManager를 통해 컨테이너 실행 및 리소스 사용량(CPU, 메모리 등의 리소스 할당)을 모니터링하는 역할을 담당합니다. 현재 리소스는 더 전통적이지만(CPU 코어, 메모리) 미래에는 새로운 리소스 유형(예: 그래픽 처리 장치 또는 특수 처리 장치)이 지원될 예정입니다. AM에는 다음과 같은 기능이 있습니다.
5. 컨테이너는 YARN의 리소스 추상화입니다. 이는 메모리, CPU, 디스크, 네트워크 등 특정 노드의 다차원 리소스를 캡슐화합니다. RM의 리소스 RM에서 AM에 대해 반환된 리소스는 컨테이너로 표시됩니다. YARN은 각 작업에 컨테이너를 할당하며, 작업은 컨테이너에 설명된 리소스만 사용할 수 있습니다. 컨테이너에는 다음과 같은 기능이 있습니다.
MapReduce 작업 운영 메커니즘 분석
1. 작업 제출
2. 작업 초기화
3. 작업 할당
4. 작업 실행
5. 진행 상황 및 상태 업데이트
6. 작업 완료
단순 버전 워크플로
워크플로의 세부 버전
1단계: 사용자는 ApplicationMaster 프로그램, ApplicationMaster 시작, 사용자 프로그램 등을 포함하여 YARN에 애플리케이션을 제출합니다.
2단계: ResourceManager는 첫 번째 컨테이너를 애플리케이션에 할당하고 해당 NodeManager와 통신하여 이 컨테이너에서 애플리케이션의 ApplicationMaster를 시작하도록 요청합니다.
3단계: ApplicationMaster는 먼저 ResourceManager에 등록하므로 사용자는 ResourceManager를 통해 애플리케이션의 실행 상태를 직접 확인할 수 있습니다. 그런 다음 각 작업에 대한 리소스를 신청하고 작업이 끝날 때까지 실행 상태를 모니터링합니다. , 즉 4~7단계를 반복합니다.
4단계: ApplicationMaster는 폴링을 사용하여 RPC 프로토콜을 통해 ResourceManager에서 리소스를 신청하고 수신합니다.
5단계: 애플리케이션이 리소스를 신청하면 해당 NodeManager와 통신하여 작업 시작을 요청합니다.
6단계: NodeManager는 환경 변수, JAR 패키지, 바이너리 프로그램 등을 포함하여 작업의 실행 환경을 설정한 다음 작업 시작 명령을 다른 스크립트에 쓰고 스크립트를 실행하여 작업을 시작합니다. .
7단계: 각 작업은 RPC 프로토콜을 통해 ApplicationMaster에 상태와 진행 상황을 보고합니다. ApplicationMaster는 언제든지 각 작업의 실행 상태를 추적하여 작업이 완료되면 작업을 다시 시작할 수 있습니다. 실패합니다. 애플리케이션이 실행되는 동안 사용자는 언제든지 RPC 프로토콜인 ApplicationMaster를 통해 애플리케이션의 현재 실행 상태를 쿼리할 수 있습니다.
8단계: 애플리케이션이 완료된 후 ApplicationMaster는 ResourceManager에서 로그아웃하고 자체적으로 닫힙니다.
1.YARN HA
2.hdfs HA
Namenode와 Resourcemanager HA의 두 가지 가장 큰 차이점은 다음과 같습니다.
1 .ZKFC 은 ResourceManager의 프로세스이고 Hadoop의 외부 데몬 프로세스입니다.
hadoop1.0에서 hadoop2.0으로의 전환
MapReduce의 작업 실행 더 많은 제어(아직 명확하지 않음)
1. 스케줄러의 기본 기능
노드 리소스(슬롯, 컨테이너) 사용량 및 작업 실행 요구 사항에 따라 각 노드에 작업을 예약합니다.
2 . 작업 스케줄러가 고려하는 요소
1. 작업 우선순위. 작업의 우선순위가 높을수록 더 많은 리소스(슬롯 수)를 얻을 수 있습니다. Hadoop은 VERY_HIGH, HIGH, NORMAL, LOW 및 VERY_LOW라는 5가지 작업 우선순위를 제공하며, 이는 mapreduce.job.priority 속성을 통해 또는 JobClient의 setJobPriority() 메서드를 사용하여 설정됩니다.
2. 숙제 제출 시간. 이름에서 알 수 있듯이 작업이 더 일찍 제출될수록 더 빨리 실행됩니다.
3. 작업이 위치한 대기열의 리소스 제한 사항입니다. 스케줄러는 여러 대기열로 나눌 수 있으며 다양한 제품 라인이 다양한 대기열에서 실행됩니다. 서로 다른 대기열은 에지 제한을 설정할 수 있으므로 서로 다른 대기열은 자체적인 독립적인 리소스를 가지며 리소스 선점이나 남용이 없습니다.
3. Hadoop의 자체 작업 스케줄러
4. 스케줄러를 구성하고 사용하는 방법은 무엇입니까?
JAR 파일을 Hadoop 클래스 경로(classpath)에 배치합니다.
그런 다음 mapred.jobtracker.taskScheduler 속성(yarn.resourcemanager.scheduler.class) 값을 org.apache로 설정합니다. .yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
애플리케이션 마스터는 MapReduce 작업을 구성하는 개별 작업을 실행하는 방법을 결정합니다. 작업이 소규모인 경우 동일한 JVM에서 작업을 실행하도록 선택하세요.
소규모 작업(Uber 작업 또는 소규모 작업이라고도 함)이란 어떤 종류의 작업인가요?
기본적으로 소규모 작업은 10개 미만의 매퍼와 1개의 리듀서만 있고 입력 크기가 HDFS 블록보다 작은 작업을 의미합니다.
관련 속성 구성은 다음과 같습니다.