[HADOOP] Apache Hadoop YARN에서 'mapreduce.map.memory.mb'와 'mapred.map.child.java.opts'의 관계는 무엇입니까?
HADOOPApache 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.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.다음 등록 정보를 사용하면 작업을 실행하는 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)으로 설정하십시오.
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
'HADOOP' 카테고리의 다른 글
[HADOOP] 원본 파일을 제거하지 않고 HDFS에서 하이브로 데이터를로드하는 방법? (0) | 2019.06.01 |
---|---|
[HADOOP] spark.sql.shuffle.partitions와 spark.default.parallelism의 차이점은 무엇입니까? (0) | 2019.06.01 |
[HADOOP] MapReduce 정렬 알고리즘은 어떻게 작동합니까? (0) | 2019.05.31 |
[HADOOP] Hadoop, HBase, Hive 및 Pig를 언제 사용합니까? (0) | 2019.05.31 |
[HADOOP] spark-submit을 통해 추가 병을 Spark에 전달 (0) | 2019.05.31 |