복붙노트

[HADOOP] Apache Hadoop YARN에서 'mapreduce.map.memory.mb'와 'mapred.map.child.java.opts'의 관계는 무엇입니까?

HADOOP

Apache Hadoop YARN에서 'mapreduce.map.memory.mb'와 'mapred.map.child.java.opts'의 관계는 무엇입니까?

mapreduce.map.memory.mb와 mapred.map.child.java.opts 매개 변수 사이의 관계를 알고 싶습니다.

mapreduce.map.memory.mb> mapred.map.child.java.opts입니까?

감사, 케왈.

해결법

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

    1.mapreduce.map.memory.mb는 Hadoop이 매퍼에 할당 할 수있는 상위 메모리 제한 (MB)입니다. 기본값은 512입니다. 이 제한을 초과하면 Hadoop은 다음과 같은 오류로 매퍼를 종료합니다.

    mapreduce.map.memory.mb는 Hadoop이 매퍼에 할당 할 수있는 상위 메모리 제한 (MB)입니다. 기본값은 512입니다. 이 제한을 초과하면 Hadoop은 다음과 같은 오류로 매퍼를 종료합니다.

    Hadoop 매퍼는 자바 프로세스이며 각 Java 프로세스는 mapred.map.child.java.opts (또는 Hadoop 2+의 mapreduce.map.java.opts)를 통해 구성된 자체 힙 메모리 최대 할당 설정을 갖습니다. 매퍼 프로세스에서 힙 메모리가 부족한 경우 매퍼는 다음과 같은 예외 상황에서 Java를 throw합니다.

    따라서 Hadoop과 Java 설정이 관련되어 있습니다. Hadoop 설정은 리소스 적용 / 제어 중 하나이며 Java는 리소스 구성 중 하나입니다.

    자바 코드를위한 예비 메모리가 필요하기 때문에 자바 힙 설정은 Hadoop 컨테이너 메모리 한계보다 작아야한다. 일반적으로 코드에 20 %의 메모리를 예약하는 것이 좋습니다. 따라서 설정이 정확하다면 Java 기반 Hadoop 작업이 Hadoop에 의해 절대 중단되지 않아야하므로 위와 같은 "Killing container"오류가 나타나지 않아야합니다.

    Java 메모리 부족 오류가 발생하면 두 가지 메모리 설정을 모두 늘려야합니다.

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

    2.다음 등록 정보를 사용하면 작업을 실행하는 JVM에 전달할 옵션을 지정할 수 있습니다. 이들은 -Xmx와 함께 사용하여 사용 가능한 힙을 제어합니다.

    다음 등록 정보를 사용하면 작업을 실행하는 JVM에 전달할 옵션을 지정할 수 있습니다. 이들은 -Xmx와 함께 사용하여 사용 가능한 힙을 제어합니다.

    Hadoop 0.x, 1.x (deprecated)       Hadoop 2.x
    -------------------------------    --------------------------
    mapred.child.java.opts            
    mapred.map.child.java.opts         mapreduce.map.java.opts
    mapred.reduce.child.java.opts      mapreduce.reduce.java.opts
    

    이들 중 첫 번째에 해당하는 직접적인 Hadoop 2는 없습니다. 소스 코드의 조언은 다른 두 가지를 사용하는 것입니다. mapred.child.java.opts는 여전히 지원됩니다 (그러나 존재하는 경우 다른 두 개의 특정 설정에 의해 무시됩니다).

    다음과 같이 보완하면 힙, 스택 및 클래스 정의를 포함하여 작업에 사용할 수있는 총 메모리 (가상 가능)를 제한 할 수 있습니다.

    Hadoop 0.x, 1.x (deprecated)       Hadoop 2.x
    -------------------------------    --------------------------
    mapred.job.map.memory.mb           mapreduce.map.memory.mb
    mapred.job.reduce.memory.mb        mapreduce.reduce.memory.mb
    

    memoryMb 값의 75 %로 -Xmx를 설정하는 것이 좋습니다.

    YARN 클러스터에서 작업은 서버 측 구성 yarn.scheduler.maximum-allocation-mb보다 많은 메모리를 사용하지 않아야합니다. 그렇지 않으면 해당 작업이 종료됩니다.

    이들의 기본값과 우선 순위를 확인하려면 Hadoop 소스 코드의 JobConf 및 MRJobConfig를 참조하십시오.

    문제 해결

    mapred-site.xml은 이러한 설정에 대한 기본값을 제공 할 수 있습니다. 혼란 스러울 수 있습니다. mapred-site.xml이 mapreduce.map.java.opts 또는 mapreduce.reduce.java.opts를 설정하면 작업이 mapred.child.java.opts를 프로그래밍 방식으로 설정하면 mapred-site.xml이 mapreduce.map.java.opts를 설정하면 아무 효과가 없습니다. 대신 mapred-site.xml을 덮어 쓰려면 해당 등록 정보를 작업에 설정해야합니다. 작업의 구성 페이지 ( 'xmx'검색)를 확인하여 적용된 값과 그 값의 출처를 확인하십시오.

    응용 프로그램 마스터 메모리

    YARN 클러스터에서 다음 두 가지 속성을 사용하여 ApplicationMaster에서 사용할 수있는 메모리 양을 제어 할 수 있습니다 (입력 된 분할, 작업 상태 등에 대한 세부 정보 보유).

    Hadoop 0.x, 1.x                    Hadoop 2.x
    -------------------------------    --------------------------
                                       yarn.app.mapreduce.am.command-opts
                                       yarn.app.mapreduce.am.resource.mb
    

    다시 말하지만, -Xmx (이전의 경우)를 resource.mb 값의 75 %로 설정할 수 있습니다.

    기타 구성

    메모리 제한과 관련하여 다른 많은 구성이 있지만 그 중 일부는 사용되지 않습니다 (JobConf 클래스 참조). 유용한 하나 :

    Hadoop 0.x, 1.x (deprecated)       Hadoop 2.x
    -------------------------------    --------------------------
    mapred.job.reduce.total.mem.bytes  mapreduce.reduce.memory.totalbytes
    

    MapOutputCopier.shuffleInMemory에서 OutOfMemoryError를 치는 경우 강제로 디스크에 셔플을 발생 시키려면이 값을 작은 값 (10)으로 설정하십시오.

  3. from https://stackoverflow.com/questions/24070557/what-is-the-relation-between-mapreduce-map-memory-mb-and-mapred-map-child-jav by cc-by-sa and MIT license