YARN & MRv2 리소스 설정

이전에 바이너리 설치 시 정리해 놓았던 자료. 현재는 Ambari or CDM를 통하여 설치하면 알아서 설정해주니 별 필요는 없을 것 같다.

각 파일 별 설정 값 설명

1. yarn-env.sh

  YARN_NODEMANAGER_HEAPSIZE : 노드 매니저의 JAVA HEAP SIZE

* YARN_NODEMANAGER_HEAPSIZE가 yarn.nodemanager.resource.memory-mb 값보다 커야된다고 하는 자료가 많은데 이 둘은 관계가 없다. HEAP_SIZE는 Nodemanager의 프로세스가 사용하는 메모리이고 yarn.nodemanager.resource.memory-mb 값은 컨테이너에 할당할 수 있는 최대 메모리임. Nodemanager와 컨테이너는 각기 다른 프로세스이므로 두 파라미터 간의 상관관계는 없음.

2. yarn-site.xml

  yarn.nodemanager.resource.memory-mb : 노드 매니저가 컨테이너 할당에 사용할 수 있는 메모리 사이즈
  yarn.scheduler.minimum-allocation-vcores : 컨테이너에 할당 할 수 있는 최소 Vcore 개수
  yarn-scheduler.maximum-allocation-vcore : 컨테이너에 할당 할 수 있는 최대 Vcore 개수
  yarn.scheduler.minimum-allocation-mb : 컨테이너에 할당 할 수 있는 최소 memory 용량
  yarn.scheduler.maximum-allocation-mb : 컨테이너에 할당 할 수 있는 최대 memory 용량
  yarn.scheduler.increment-allocation-vcores : 컨테이너에 추가 할당 할 수 있는 Vcore 수
  yarn.scheduler.increment-allocation-mb : 컨테이너에 추가 할당 할 수 memory 용량


3. mapred-site.xml

  yarn.app.mapreduce.am.resource.cpu-vcores : Application Master에 할당 하는 Vcore 개수
  yarn.app.mapreduce.am.resource.mb : Application Master에 할당 하는 memory 용량
  mapreduce.map.cpu.vcores : Map 작업에 사용하는 Vcore 개수
  mapreduce.map.memory.mb : Map 작업에 사용하는 memory 용량
  mapreduce.map.java.opts.max.heap : Mapper의 JAVA HEAP SIZE
  mapreduce.reduce.cpu.vcores : Reduce 작업에 사용하는 Vcore 개수
  mapreduce.reduce.memory.mb : Reduce 작업에 사용하는 memory 용량
  mapreduce.reduce.java.opts : Reducer의 JAVA HEAP SIZE
  mapreduce.task.io.sort.mb : Split/Sort 작업을 위한 예약 메모리



서비스 별 메모리 할당 체크리스트

1.YARN CHECK LIST
 1) YARN Container 체크 리스트
yarn-scheduler.maximum-allocation-vcores >= yarn.scheduler.minimum-allocation-vcores
yarn.scheduler.maximum-allocation-mb >= yarn.scheduler.minimum-allocation-mb
yarn.scheduler.minimum-allocation-vcores >= 0
yarn.scheduler.minimum-allocation-vcores <= HostsVCores
yarn-scheduler.maximum-allocation-vcores >= 1
yarn-scheduler.maximum-allocation-vcores <= HostsVcores
yarn.scheduler.minimum-allocation-mb < 1024 MB

2.MAP REDUCE CHECK LIST
 1) Application Master 체크 리스트
yarn.app.mapreduce.am.resource.cpu-vcores >= yarn.scheduler.minimum-allocation-vcores
yarn.app.mapreduce.am.resource.cpu-vcores <= yarn-scheduler.maximum-allocation-vcores
yarn.app.mapreduce.am.resource.mb >= yarn.scheduler.minimum-allocation-mb
yarn.app.mapreduce.am.resource.mb <= yarn.scheduler.maximum-allocation-mb
yarn.app.mapreduce.am.resource.mb = ApplicationMaster Java Heap (must be close)

 2) Map Task 체크 리스트
mapreduce.map.cpu.vcores >= yarn.scheduler.minimum-allocation-vcores
mapreduce.map.cpu.vcores <= yarn-scheduler.maximum-allocation-vcores
mapreduce.map.cpu.memory.mb >= yarn.scheduler.minimum-allocation-mb
mapreduce.map.cpu.memory.mb <= yarn.scheduler.maximum-allocation-mb
mapreduce.map.memory.mb = mapreduce.map.java.opts.max.heap (must be close)
mapreduce.task.io.sort.mb << mapreduce.map.java.opts.max.heap

 3) Reduce Task 체크 리스트
mapreduce.reduce.cpu.vcores >= yarn.scheduler.minimum-allocation-vcores
mapreduce.reduce.cpu.vcores <= yarn-scheduler.maximum-allocation-vcores
mapreduce.reduce.cpu.memory.mb >= yarn.scheduler.minimum-allocation-mb
mapreduce.reduce.cpu.memory.mb <= yarn.scheduler.maximum-allocation-mb
mapreduce.reduce.java.opts = mapreduce.reduce.memory.mb (must be close)


아래 파일은 Cloudera에서 만든 Excel에 위의 한글 내용을 추가한 것. 클러스터 리소스를 어떻게 할당할 지 대략적으로 계산해 준다.
https://www.dropbox.com/s/38reez543rh9xsv/yarn-tuning-guide.xlsx?dl=0


댓글

이 블로그의 인기 게시물

Apache Superset(incubating) 정리

자주 쓰이는 Ambari REST API 정리