기회적 컨테이너

기회적 컨테이너 (Opportunistic Containers)

YARN은 리소스 할당 시 보장(guaranteed) 컨테이너와 기회적(opportunistic) 컨테이너라는 두 가지 실행 유형을 지원합니다. 이 문서는 기회적 컨테이너가 무엇인지, 어떻게 구성하고 실행하는지 설명합니다.

출처: 문서

본문

소개

기회적 컨테이너(Opportunistic containers)는 보장된 리소스 할당을 기다리지 않고, 노드에서 사용 가능한 남은 리소스(capacity leftover)를 사용해 실행되는 컨테이너입니다. 보장(guaranteed) 컨테이너는 클러스터 리소스에 대한 강한 보장을 받지만, 리소스가 없으면 할당될 때까지 큐에서 대기할 수 있습니다. 반면 기회적 컨테이너는 즉시 또는 짧은 대기 후 실행될 수 있지만, 리소스가 회수될 경우 종료될 수 있습니다.

기회적 컨테이너는 대기 시간(latency)을 낮추고 클러스터 리소스 사용률을 높이는 데 유용합니다. 특히 짧은 실행 작업이나 유휴 리소스를 활용하고자 할 때 유용합니다.

기회적 컨테이너 실행 모델

기회적 컨테이너는 ResourceManager가 아닌 노드의 로컬 스케줄러(노드에서 실행되는 분산 스케줄러)가 실행을 승인합니다. 실행 수락(acceptance)은 노드에서 수행되므로, ResourceManager의 부담을 줄이고 더 빠른 실행을 가능하게 합니다.

구성

기회적 컨테이너를 활성화하려면 ResourceManager의 conf/yarn-site.xml에 다음을 설정합니다.

| Property | Default | Description | | yarn.resourcemanager.opportunistic-container-allocation.enabled | false | 기회적 컨테이너 할당을 활성화한다. | yarn.resourcemanager.distributed-scheduling.enabled | false | 노드 분산 스케줄링(분산 스케줄러)을 활성화한다. 활성화하면 노드가 기회적 컨테이너 실행을 스스로 수락한다.

예:

<property>
  <name>yarn.resourcemanager.opportunistic-container-allocation.enabled</name>
  <value>true</value>
</property>
<property>
  <name>yarn.resourcemanager.distributed-scheduling.enabled</name>
  <value>true</value>
</property>

실행 유형 지정

애플리케이션은 로컬/원격 클라이언트를 통해 컨테이너 요청 시 ExecutionType을 GUARANTEED 또는 OPPORTUNISTIC으로 지정할 수 있습니다. 기본값은 GUARANTEED입니다. OPPORTUNISTIC으로 지정된 컨테이너 요청은 가능한 경우 즉시 실행됩니다.

더 알아보기 (Learn more)