MapReduce 작업 및 자원 할당 개념 정리 [2] – CDH 설정 적용
YARN -> 구성 -> 리소스 관리
ApplicationMaster 메모리 (yarn.app.mapreduce.am.resource.mb) = 3GB
ApplicationMaster Java 최대 힙 크기 = 2.4GB (위 값의 7~80%)
Map 작업 메모리 (mapreduce.map.memory.mb) = 3GB
Map 작업 최대 힙 크기 (mapreduce.map.java.opts.max.heap) = 2.4GB (위 값의 80%)
Map 작업 CPU 가상 코어 (mapreduce.map.cpu.vcores) = 1
Reduce 작업 메모리 (mapreduce.reduce.memory.mb) = 3GB
Reduce 작업 최대 힙 크기 (mapreduce.reduce.java.opts.max.heap) = 2.4GB (위 값의 80%)
Reduce 작업 CPU 가상 코어 (mapreduce.reduce.cpu.vcores) = 1
클라이언트 Java 힙 크기 = 2.4GB (map, reduce 작업 메모리의 80%)
컨테이너 메모리 (yarn.nodemanager.resource.memory-mb) = 6GB (각 노드에서 MR에 할당할 전체 메모리 크기)
컨테이너 가상 CPU 코어 (yarn.nodemanager.resource.cpu-vcores) = 2 (각 노드에서 MR에 할당할 CPU core 수)
Map, Reduce 메모리를 많이 키우거나, 줄일 경우 아래 변수도 변경 필요
최소 컨테이너 메모리 (yarn.schedule.minimum-allocation-mb) = 1GB
컨테이너 메모리 증가 (yarn.schedule.increment-allocation-mb) = 512MB
최대 컨테이너 메모리 (yarn.schedule.maximum-allocation-mb) = 3GB
상기와 같이 설정될 경우 아래의 공식이 성립됨
Map (or Reduce) 작업에 3GB 메모리, 1 vcpu 할당
노드에 MR 에 할당된 전체 메모리 크기가 6GB 이므로 노드당 2개 작업 실행 가능
total 실행 갯수는 2 * 노드 수 (실제 MR 실행 수는 좀 더 낮을 수 있음, MR task 실행 시 기본 ApplicationMaster 가 구동됨으로…)