내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
기사 디렉토리
4. Yarn의 3가지 리소스 스케줄러의 특징 및 사용 시나리오
Apache Hadoop Yarn(Yet Another Reasource Negotiator, 또 다른 리소스 코디네이터)은 Hadoop2.x 버전 이후에 사용되는 리소스 관리자로, 상위 계층 애플리케이션에 통합 리소스 관리 플랫폼을 제공할 수 있습니다.
Yarn은 크게 ResourceManager, NodeManager, ApplicationMaster, Container로 구성됩니다.
리소스매니저
ResourceManager는 Yarn 클러스터의 중앙 관리자이며 전체 클러스터의 리소스 할당 및 스케줄링을 담당합니다. ResourceManager는 NodeManager 노드의 상태 모니터링, 클러스터 리소스 수집, 클라이언트가 제출한 작업에 대한 리소스 요청 처리, 각 애플리케이션에 대한 ApplicationMaster 시작 및 모니터링을 담당합니다.
노드매니저
NodeManager는 각 노드의 리소스(예: 메모리, CPU 등)를 관리하고 ResourceManager에 보고하는 역할을 담당합니다. ResourceManager가 NodeManager에 컨테이너(컨테이너)를 할당하면 NodeManager는 컨테이너 시작 및 컨테이너 작업 모니터링을 담당합니다. 또한 NodeManager는 각 애플리케이션에 대한 컨테이너(컨테이너)를 시작하는 ApplicationMaster 명령도 받습니다.
애플리케이션마스터
Yarn에서 실행되는 각 애플리케이션은 ResourceManager를 사용하여 리소스를 적용하고 애플리케이션 작업을 관리하는 해당 ApplicationMaster를 시작합니다. ApplicationMaster는 본질적으로 컨테이너이며, ResourceManager에 의해 시작되고 ApplicationMaster가 시작된 후 ResourceManager가 컨테이너 리소스를 할당한 후 ApplicationMaster가 해당 NodeManager에 연결됩니다. 컨테이너를 시작하고 컨테이너에서 실행되는 리소스를 관리합니다.
컨테이너
컨테이너(Container) 컨테이너는 애플리케이션 작업을 실행하는 데 사용되는 Yarn의 기본 실행 단위이며, 애플리케이션 코드, 종속성, 작업에 필요한 리소스(메모리, CPU, 디스크, 네트워크)를 포함하는 가상 환경입니다. 각 컨테이너는 ResourceManager에 의해 ApplicationMaster에 할당되고 NodeManager에 의해 해당 노드에서 시작 및 관리됩니다. 컨테이너의 리소스 사용량은 NodeManager에 의해 모니터링되고 필요한 경우 ResourceManager에 보고됩니다.
Yarn의 핵심은 ResourceManager 및 ApplicationMaster 프로세스에 의해 각각 구현되는 JobTracker의 리소스 관리 및 작업 예약 기능을 분리하는 것입니다. ResourceManager는 전체 클러스터의 리소스 관리 및 예약을 담당합니다. 애플리케이션 작업 스케줄링, 작업 모니터링 및 내결함성.
클라이언트가 MR 작업을 Yarn에 제출하면 MR 작업 리소스(분할, 리소스 구성, Jar 패키지 정보)가 먼저 HDFS에 업로드됩니다.
클라이언트는 ApplicationMaster를 시작하기 위해 ResourceManager에 적용됩니다.
ResourceManager는 상대적으로 사용량이 적은 NodeManager 노드를 선택하고 해당 노드에 ApplicationMaster(컨테이너)를 시작하도록 알립니다.
ApplicationMaster가 시작된 후 HDFS에서 로컬로 MR 작업 리소스 정보를 다운로드한 다음 ResourceManager에서 리소스를 신청하여 MR 작업을 시작합니다.
ResourceManager는 리소스 목록을 ApplicationMaster에 반환합니다.
그런 다음 ApplicationMaster는 해당 NodeManager에 컨테이너를 시작하도록 알립니다.
컨테이너가 시작된 후에는 ApplicationMaster에 역등록됩니다.
ApplicationMaster는 태스크를 실행하기 위해 컨테이너로 보내고, 태스크는 우리가 작성한 코드의 비즈니스 로직을 실행합니다.
FIFO 스케줄러(선입선출 스케줄러) , Yarn에서 가장 간단한 스케줄러입니다. FIFO 스케줄러는 제출된 애플리케이션을 제출 순서대로 선입선출 대기열에 넣습니다. 리소스를 할당할 때 리소스는 대기열의 최상위 애플리케이션에 먼저 할당된 후 다음 애플리케이션에 리소스를 할당합니다. 최상위 애플리케이션의 리소스 요구 사항이 충족됩니다. 애플리케이션은 리소스를 할당합니다. 이러한 종류의 스케줄러가 리소스를 예약할 때 리소스 요구 사항이 큰 애플리케이션이 모든 클러스터 리소스를 점유하여 다른 애플리케이션이 차단될 수 있습니다.
용량 스케줄러(Capacity Schduler) Yarn에 구성된 기본 리소스 스케줄러로, 멀티 테넌트가 대규모 클러스터를 안전하게 공유할 수 있도록 해줍니다. 용량 스케줄러는 여러 리소스 대기열 구성을 지원합니다. 리소스를 할당할 때 유휴 리소스는 "실제 리소스/예산 리소스" 비율이 가장 낮은 리소스에 우선순위가 지정됩니다. 각 리소스 큐는 내부적으로 FIFO 스케줄링 전략을 채택합니다.
페어 스케줄러각 애플리케이션에 Yarn 리소스를 공평하게 할당하는 리소스 스케줄링 방법입니다. 이 스케줄링 방법은 정의된 매개변수에 따라 모든 애플리케이션에 균등한 리소스 할당을 허용하는 것입니다.
Yarn의 FIFO, 용량 및 공정한 리소스 스케줄러의 차이점은 다음과 같습니다.
원사 리소스 스케줄러 | 특징 | 적용 가능한 장면 |
FIFO 스케줄러 | 1. 간단하고 이해하기 쉬우며 추가 구성이 필요하지 않습니다. 2. 지원서는 접수된 순서대로(선입선출) 진행됩니다. 3. 공유 클러스터에는 적합하지 않습니다. 각 애플리케이션은 실행 차례가 될 때까지 기다려야 합니다. | 비공유 클러스터, 작업 실행 순서에 대한 요구 사항이 높지 않은 시나리오입니다. 일반적으로 프로덕션 환경에서는 사용되지 않습니다. |
용량 스케줄러 (오픈소스 Yarn에서는 기본적으로 사용됨) | 1. 여러 조직이 클러스터 리소스를 공유할 수 있도록 허용하고 각 조직에는 전용 대기열이 있습니다. 2. 대기열의 계층적 분할과 대기열 리소스의 유연한 구성을 지원합니다. 3. 대기열의 최대 용량을 제한하고 리소스 경쟁을 완화할 수 있습니다. | 여러 조직이나 팀이 동일한 클러스터 리소스를 공유하는 공유 클러스터 시나리오. |
공정한 스케줄러 (기본적으로 CDH에서 사용됨) | 1. 실행 중인 모든 애플리케이션에 리소스를 공평하게 할당하고 여러 대기열 간에 공평한 리소스 공유를 지원합니다. 2. 대기열의 동적 생성을 지원하고 일련의 규칙 시스템을 통해 애플리케이션 배치를 결정합니다. 3. 자원의 공정한 분배를 위해 자원 선점 기능을 지원합니다. | 1. 여러 사용자 또는 조직이 공유 클러스터에서 공정하게 리소스를 확보해야 하는 시나리오. 2. 대기열 수준 리소스 제어 및 세분화된 예약 전략에 대한 요구 사항이 높은 환경. |