복붙노트

[HADOOP] 원 사는 yarn.nodemanager.resource.cpu-vcores를 존중하지 않습니다.

HADOOP

원 사는 yarn.nodemanager.resource.cpu-vcores를 존중하지 않습니다.

Hadoop-2.4.0을 사용하고 있으며 시스템 구성은 24 코어, 96GB RAM입니다.

나는 다음 설정을 사용 중이다.

mapreduce.map.cpu.vcores=1
yarn.nodemanager.resource.cpu-vcores=10
yarn.scheduler.minimum-allocation-vcores=1
yarn.scheduler.maximum-allocation-vcores=4
yarn.app.mapreduce.am.resource.cpu-vcores=1

yarn.nodemanager.resource.memory-mb=88064
mapreduce.map.memory.mb=3072
mapreduce.map.java.opts=-Xmx2048m

용량 스케줄러 구성

queue.default.capacity=50
queue.default.maximum_capacity=100
yarn.scheduler.capacity.root.default.user-limit-factor=2

위의 설정을 사용하면 원사가 노드 당 10 개 이상의 매퍼를 시작하지는 않지만 노드 당 28 개의 매퍼를 실행합니다. 내가 뭐 잘못하고 있니?

해결법

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

    1.YARN은 기본적으로 DefaultResourceCalculator가 사용되기 때문에 할당 된 코어보다 많은 컨테이너를 실행합니다. 그것은 오직 메모리만을 고려합니다.

    YARN은 기본적으로 DefaultResourceCalculator가 사용되기 때문에 할당 된 코어보다 많은 컨테이너를 실행합니다. 그것은 오직 메모리만을 고려합니다.

    public int computeAvailableContainers(Resource available, Resource required) {
    // Only consider memory
    return available.getMemory() / required.getMemory();
      }
    

    DominantResourceCalculator를 사용하여 CPU와 메모리를 모두 사용합니다.

    capacity-scheduler.xml에서 설정을 아래로 설정하십시오.

    yarn.scheduler.capacity.resource-calculator=org.apache.hadoop.yarn.util.resource.DominantResourceCalculator
    

    DominantResourceCalculator에 대한 추가 정보

  2. from https://stackoverflow.com/questions/25563736/yarn-is-not-honouring-yarn-nodemanager-resource-cpu-vcores by cc-by-sa and MIT license