복붙노트

[HADOOP] YARN에서 독점적 인 FIFO 응용 프로그램 대기열을 구성하는 방법은 무엇입니까?

HADOOP

YARN에서 독점적 인 FIFO 응용 프로그램 대기열을 구성하는 방법은 무엇입니까?

hadoop 클러스터에서 YARN 응용 프로그램의 병렬 실행을 비활성화해야합니다. 이제 YARN에는 기본 설정이 있으므로 여러 작업을 병렬로 실행할 수 있습니다. 두 가지 작업이 모두 느리게 실행되기 때문에 이점이 없습니다.

이 설정 yarn.scheduler.capacity.maximum-applications는 최대 응용 프로그램 수를 제한하지만 제출 된 응용 프로그램과 실행중인 응용 프로그램 (docs에 명시된대로) 모두에 영향을 미칩니다. 현재 실행중인 애플리케이션이 완료되지 않을 때까지 제출 된 앱을 대기열에 보관하고 싶습니다. 어떻게 할 수 있습니까?

해결법

  1. ==============================

    1.1) 스케줄러를 FairScheduler로 변경

    1) 스케줄러를 FairScheduler로 변경

    Hadoop 배포판은 기본적으로 CapacityScheduler를 사용합니다 (Cloudera는 FairScheduler를 기본 스케줄러로 사용함). yarn-site.xml에이 속성 추가

    <property>
      <name>yarn.resourcemanager.scheduler.class</name>
      <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
    </property>
    

    2) 기본 대기열 설정

    공정한 스케줄러는 사용자별로 큐를 생성합니다. I.E., 세 명의 다른 사용자가 작업을 제출하면 세 개의 개별 대기열이 생성되고 자원은 세 개의 대기열간에 공유됩니다. yarn-site.xml에이 속성을 추가하여 비활성화하십시오.

    <property>
      <name>yarn.scheduler.fair.user-as-default-queue</name>
      <value>false</value>
    </property>
    

    이렇게하면 모든 작업이 하나의 기본 대기열에 저장됩니다.

    3) 최대 응용 프로그램 제한

    이제는 작업 대기열이 하나의 기본 대기열로 제한되었습니다. 해당 응용 프로그램의 최대 수를 해당 대기열에서 실행할 수있는 1로 제한하십시오.

    $ HADOOP_CONF_DIR 아래에 fair-scheduler.xml 파일을 만들고이 항목을 추가하십시오

    <allocations>
       <queueMaxAppsDefault>1</queueMaxAppsDefault>
    </allocations>
    

    또한 yarn-site.xml에이 속성을 추가하십시오.

    <property>
      <name>yarn.scheduler.fair.allocation.file</name>
      <value>$HADOOP_CONF_DIR/fair-scheduler.xml</value>
    </property>
    

    이 등록 정보를 추가 한 후 YARN 서비스를 다시 시작하십시오.

    여러 응용 프로그램을 제출할 때 먼저 ACCEPTED 응용 프로그램은 활성 응용 프로그램으로 간주되고 나머지는 보류 응용 프로그램으로 대기합니다. 이러한 보류중인 응용 프로그램은 실행 응용 프로그램이 완료 될 때까지 계속 ACCEPTED 상태가됩니다. 활성 애플리케이션은 사용 가능한 모든 리소스를 활용할 수 있습니다.

    참조 : Hadoop : 공정한 스케줄러

  2. ==============================

    2.귀하의 질문에 대한 나의 이해에 따라. 위 코드 줄 / 설정 만 도움이되지 않을 수 있습니다. 기존 설정으로 코드 아래에서 확인할 수 있습니까?

    귀하의 질문에 대한 나의 이해에 따라. 위 코드 줄 / 설정 만 도움이되지 않을 수 있습니다. 기존 설정으로 코드 아래에서 확인할 수 있습니까?

    <allocations>
      <defaultQueueSchedulingPolicy>fair</defaultQueueSchedulingPolicy>
    
      <queue name="<<Your Queue Name>>"
        <weight>40</weight>
        <schedulingPolicy>fifo</schedulingPolicy>
      </queue>
    
      <queue name=<<Your Queue Name>>>
        <weight>60</weight>
        <queue name=<<Your Queue Name>> />
        <queue name=<<Your Queue Name>> />
      </queue>
    
      <queuePlacementPolicy>
        <rule name="specified" create="false" />
        <rule name="primaryGroup" create="false" />
        <rule name="default" queue=<<Your Queue Name>> />
      </queuePlacementPolicy>
    </allocations>
    
  3. from https://stackoverflow.com/questions/43098085/how-to-configure-monopolistic-fifo-application-queue-in-yarn by cc-by-sa and MIT license