본문 바로가기

Hadoop/Apache Hadoop

mapred-site 설정 값 상세내용

mapred-site.xml에 들어가는 설정 중 메모리와 관련 된 값에 대해 자세히 알아보도록 하겠습니다.

 

** mapreduce.map.memory.mb - map 작업 ( 컨테이너 생성시 )에 사용하는 memory 용량

맵리듀스 애플리케이션이 실행되려면 애플리케이션 마스터, 맵리듀스 태스크가 실행되어야 하므로 최소 3개의 컨테이너가 필요합니다.
1.mapreduce.map.memory.mb 2.mapreduce.reduce.memory.mb 3.yarn.app.mapreduce.am.resource.mb 의 합계가
yarn.nodemanager.resource.memory-mb보다 작게 설정되어야합니다. 또한 각 속성값들은 반드시 yarn.scheduler.maximum-allocation-mb 값 이하로 설정해야 합니다.

DATANODE의 메모리가 256GB 인 서버 3대   
yarn.nodemanager.resource.memory-mb & yarn.scheduler.maximum-allocation-mb 가 211GB로 설정
이때, mapreduce.map.memory.mb = 55291 , mapreduce.reduce.memory.mb = 110592 로 설정.
map보다 reduce를 2배 더 크게 설정하는 게 일반적. 

** mapreduce.reduce.memory.mb
- mapreduce.map.memory.mb 보다 2배 설정

** mapreduce.map.java.opts ( = mapreduce.map.java.opts.max.heap 와 같은 설정 )
- 맵 컨테이너를 생성할 때 설정하는 자바 옵션
- Xmx 옵션을 통해 힙사이즈 설정
- 맵 컨테이너 메모리의 80%로 설정

** mapreduce.reduce.java.opts ( = mapreduce.reduce.java.opts.max.heap 와 같은 설정 )
- 리듀스 컨테이너를 생성할 때 설정하는 자바 옵션
- Xmx 옵션을 이용하여 힙사이즈를 설정
- 리듀스 컨테이너 메모리의 80%로 설정

** mapreduce.task.io.sort.mb
- 맵의 출력 데이터를 저장할 환형 버퍼의 메모리 크기
- 맵의 처리 결과를 설정한 메모리에 저장하고 있다가, io.sort.spill.percent 이상에 도달하면 임시 파일로 출력
- mapreduce.map.java.opts 보다 값이 작아야 한다. 값이 클 경우 java heap space 에러가 생김


** mapreduce.task.timeout
- 입력을 읽거나 출력을 쓰지 않고 상태 문자열을 업데이트하지 않는 경우 작업이 종료되기까지 걸리는 시간(밀리초)
- 값이 0이면 시간초과 비활성화
- 기본 hadoop은 300000로 되어있음.