복붙노트

[HADOOP] 얀 컨테이너 이해 및 튜닝

HADOOP

얀 컨테이너 이해 및 튜닝

안녕하세요, 최근에 mr1에서 원사로 업그레이드했습니다. 나는 컨테이너가 추상적 인 개념이라는 것을 알고 있지만, 하나의 컨테이너가 산란 할 수있는 다른 jvm 태스크 (map, reduce, filter etc)가 mutltiple 맵 전체에서 재사용 가능한 컨테이너인지 또는 태스크를 줄이는지를 이해하지 못한다. 나는 다음 블로그를 읽었다 : YARN의 컨테이너 란 무엇인가?

"매 매퍼와 감속기는 정확하기 위해 자체 컨테이너에서 실행됩니다!" 즉, 내가 AM 로그를 보면 컨테이너의 수가 (실패한 | 성공한)지도 작업의 수와 같고 배당 된 작업의 수는 올바른지 확인해야합니다.

AM 요청, 분할, 스케줄러 등을 기반으로 응용 프로그램 수명주기 동안 컨테이너 수가 변경되었음을 안다.

그러나 주어진 응용 프로그램에 대한 최소 컨테이너 수를 요청하는 방법이 있습니다. 하나의 방법은 fair-scheduler queue를 설정하는 것이라고 생각합니다. 그러나 이것을 지시 할 수있는 다른 것이 있습니까?

MR의 경우 mapreduce.map.memory.mb = 3gb이고 mapreduce.map.cpu.vcores = 4. 나는 또한 yarn.scheduler.minimum-allocation-mb = 1024m과 yarn.scheduler.minimum-allocation-vcores = 1을 가지고있다.

그렇다면 하나의 코어에 4 개의 코어 또는 4 개의 컨테이너가있는 컨테이너 하나를 얻을 수 있습니까?

또한 어디에 mapreduce.map.memory.mb와 mapreduce.map.cpu.vcores를 지정할 수 있는지 명확하지 않습니다. 클라이언트 노드에 설정해야합니까? 아니면 응용 프로그램마다 설정할 수 있습니까?

또한 RM UI 또는 AM UI에서 주어진 응용 프로그램에 대해 현재 할당 된 컨테이너를 볼 수있는 방법이 있습니까?

해결법

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

    1.예 : 필자는 Mapreduce 응용 프로그램을 사용하여 10 개의 매퍼를 생성합니다.

    예 : 필자는 Mapreduce 응용 프로그램을 사용하여 10 개의 매퍼를 생성합니다.

    나는 8 개의 vCores를 가진 단일 호스트에서 이것을 실행하고있다. (이 값은 구성 매개 변수에 의해 결정된다 : yarn.nodemanager.resource.cpu-vcores). 기본적으로이 값은 8로 설정되어 있습니다. "YarnConfiguration.java"를 확인하십시오.

      /** Number of Virtual CPU Cores which can be allocated for containers.*/
      public static final String NM_VCORES = NM_PREFIX + "resource.cpu-vcores";
      public static final int DEFAULT_NM_VCORES = 8;
    

    10 개의 매퍼와 1 개의 응용 프로그램 마스터가 있으므로 스폰 된 컨테이너의 총 수는 11 개입니다.

    따라서 각지도 / 축소 작업마다 다른 컨테이너가 시작됩니다.

    그러나 Yarn에서 MapReduce 작업의 경우 Uber 작업 개념이 있습니다. 사용자가 여러 매퍼와 하나의 감속기에 대해 단일 컨테이너를 사용할 수 있습니다 (https://hadoop.apache.org/docs/r2.4.1/). hadoop-yarn / hadoop-yarn-common / yarn-default.xml : 현재 코드는 하나의 감축을 지원할 수없고 큰 값은 무시합니다.).

  2. from https://stackoverflow.com/questions/33004487/yarn-container-understanding-and-tuning by cc-by-sa and MIT license