Hadoop 실행 이 container 메모리 크기 때문에 잘못 되 었 습 니 다.

4698 단어 빅 데이터
본문 전재:http://blog.chinaunix.net/uid-25691489-id-5587957.html
Hadoop 실행 중 다음 이상 던 지기:
Container [pid=41355,containerID=container_1451456053773_0001_01_000002] is running beyond physical memory limits. 
Current usage: 2.0 GB of 2 GB physical memory used; 5.2 GB of 4.2 GB virtual memory used. Killing container. 
Dump of the process-tree for container_1451456053773_0001_01_000002 : |- PID PPID PGRPID SESSID CMD_NAME USER_MODE_TIME(MILLIS) 
SYSTEM_TIME(MILLIS) VMEM_USAGE(BYTES) RSSMEM_USAGE(PAGES) FULL_CMD_LINE |- 41538 41355 41355 41355 (java) 3092 243 5511757824 526519 
/usr/jdk64/jdk1.7.0_67/bin/java -server -XX:NewRatio=8 -Djava.net.preferIPv4Stack=true 
-Dhadoop.metrics.log.level=WARN -Xmx4506m 
-Djava.io.tmpdir=/diskb/hadoop/yarn/local/usercache/hdfs/appcache/application_1451456053773_0001/container_1451456053773_0001_01_000002/tmp 
-Dlog4j.configuration=container-log4j.properties 
-Dyarn.app.container.log.dir=/diska/hadoop/yarn/log/application_1451456053773_0001/container_1451456053773_0001_01_000002 
-Dyarn.app.container.log.filesize=0 -Dhadoop.root.logger=INFO,CLA 
org.apache.hadoop.mapred.YarnChild 10.111.32.92 61224 attempt_1451456053773_0001_m_000000_0 2 |- 41355 37725 41355 

아마도 job 가 map 와 reduce 가 설정 한 메모리 크기 를 초과 하여 작업 에 실 패 했 습 니 다.map 와 reduce 의 내용 을 추 가 했 습 니 다.문 제 는 제 외 했 습 니 다.일부 매개 변 수 는 다음 과 같 습 니 다.RM 의 메모리 자원 설정 은 주로 아래 의 두 매개 변 수 를 통 해 이 루어 집 니 다(이 두 값 은 Yarn 플랫폼 특성 이 므 로 yarn-site.xml 에서 설정 해 야 합 니 다):yarn.scheduler.minimum-allocation-mb
yarn.scheduler.maximum-allocation-mb
      설명:하나의 용기 가 신청 할 수 있 는 최소 와 최대 메모리 입 니 다.신청 메모 리 를 실행 할 때 최대 치 를 초과 할 수 없고 최소 치 보다 작 으 면 최소 치 를 분배 합 니 다.이런 측면 에서 볼 때 최소 치 는 운영 체제 의 페이지 를 원 합 니 다.최소 값 은 또 다른 용도 가 있 습 니 다.한 노드 의 최대 container 수 주 를 계산 합 니 다.이 두 값 은 설정 을 통 해 동적 으로 바 꿀 수 없습니다(여기 서 말 하 는 동적 변 화 는 응용 이 실 행 될 때 를 말 합 니 다).
NM 의 메모리 자원 설정 은 주로 다음 두 개의 매개 변 수 를 통 해 이 루어 집 니 다.(이 두 값 은 Yarn 플랫폼 특성 이 므 로 yarn-sit.xml 에서 설정 해 야 합 니 다):yarn.nodemanager.resource.memory-mb yarn.nodemanager.vmem-pmem-ratio     설명:노드 마다 사용 할 수 있 는 최대 메모리 입 니 다.RM 의 두 값 은 이 값 을 초과 해 서 는 안 됩 니 다.이 수 치 는 container 의 최대 수 를 계산 하 는 데 사용 할 수 있 습 니 다.즉,이 값 을 RM 의 최소 용기 메모리 로 나 누 는 것 입 니 다.가상 메모리 율 은 task 가 사용 하 는 메모리 의 백분율 을 차지 하고 기본 값 은 2.1 배 입 니 다.메모:첫 번 째 매개 변 수 는 수정 할 수 없습니다.설정 하면 전체 실행 과정 에서 동적 으로 수정 할 수 없습니다.이 값 의 기본 크기 는 8G 입 니 다.컴퓨터 메모리 가 8G 가 부족 하 더 라 도 8G 메모리 로 사용 합 니 다.AM 메모리 설정 에 관 한 매개 변 수 는 MapReduce 를 예 로 들 어 설명 합 니 다(이 두 값 은 AM 특성 이 므 로 mapred-site.xml 에 설정 해 야 합 니 다).다음 과 같 습 니 다:mapreduce.map.memory.mb mapreduce.reduce.memory.mb    설명:이 두 매개 변 수 는 MapReduce 에 사용 할 두 작업(Map and Reduce task)의 메모리 크기 를 지정 합 니 다.그 값 은 RM 의 최대 최소 container 사이 에 있어 야 합 니 다.설정 이 없 으 면 다음 과 같은 간단 한 공식 을 통 해 획득:max(MINCONTAINER_SIZE,(Total Available RAM)/containers)일반적인 reduce 는 map 의 2 배 일 것 입 니 다.주:이 두 값 은 응용 이 시 작 될 때 매개 변 수 를 통 해 변경 할 수 있 습 니 다.AM 에서 메모리 와 관련 된 다른 매개 변수,그리고 JVM 과 관련 된 매개 변 수 는 다음 과 같은 옵션 을 통 해 설정 할 수 있 습 니 다.mapreduce.map.java.opts mapreduce.reduce.java.opts      설명:이 두 참 조 는 주로 JVM 프로그램(자바,scala 등)을 실행 하기 위해 준비 한 것 입 니 다.이 두 설정 을 통 해 JVM 에 파 라 메 터 를 전달 할 수 있 습 니 다.메모리 와 관련 된 것 은-Xmx,-Xms 등 옵션 입 니 다.이 수치 크기 는 AM 의 map.mb 와 reduce.mb 사이 에 있어 야 합 니 다.우 리 는 위의 내용 을 정리 합 니 다.Yarn 메모 리 를 설정 할 때 주로 다음 과 같은 세 가지 측면 을 설정 합 니 다.모든 Map 과 Reduce 는 물리 적 메모리 제한 을 사용 할 수 있 습 니 다.각 작업 의 JVM 크기 제한;가상 메모리 의 제한.다음은 구체 적 인 오류 실례 를 통 해 메모리 관련 설명 을 하 겠 습 니 다.오 류 는 다음 과 같 습 니 다.Container[pid=41884,containerID=container1405950053048_0016_01_000284] is running beyond virtual memory limits. Current usage: 314.6 MB of 2.9 GB physical memory used; 8.7 GB of 6.2 GB virtual memory used. Killing container.
설정 은 다음 과 같 습 니 다:
	
            yarn.nodemanager.resource.memory-mb
            100000
        
        
            yarn.scheduler.maximum-allocation-mb
            10000
        
        
            yarn.scheduler.minimum-allocation-mb
            3000
        
       
            mapreduce.reduce.memory.mb
            2000
        

  설정 을 통 해 알 수 있 듯 이 용기 의 최소 메모리 와 최대 메모 리 는 각각 3000 m 와 10000 m 이 고 reduce 설정 의 기본 값 은 2000 m 보다 작 으 며 map 는 설정 되 지 않 았 기 때문에 두 값 은 모두 3000 m 이다.즉,log 의'2.9GB physical memory used'이다.기본 가상 메모리 율(즉 2.1 배)을 사 용 했 기 때문에 Map Task 와 Reduce Task 에 대한 전체 가상 메모 리 는 3000*2.1=6.2G 이다.응용 가상 메모리 가 이 수 치 를 초과 해서 오류 가 발생 했 습 니 다.해결 방법:Yarn 을 시작 할 때 가상 메모리 율 을 조절 하거나 실행 할 때 메모리 크기 를 조절 합 니 다.

좋은 웹페이지 즐겨찾기