2017-05-07 1 views
9

yarn.scheduler.maximum-allocation-mbyarn.nodemanager.resource.memory-mb의 차이점은 무엇입니까?`yarn.scheduler.maximum-allocation-mb`과`yarn.nodemanager.resource.memory-mb`의 차이점은 무엇입니까?

나는이 두 가지를 yarn-site.xml에 표시하고 설명은 here입니다.

yarn.scheduler.maximum-allocation-mb 다음 정의가 제공됩니다. RM에서 모든 컨테이너 요청에 대한 최대 할당 (MB). 이보다 높은 메모리 요청은 InvalidResourceRequestException을 던집니다. resourcemanager에 대한 메모리 요청 만이이 값으로 제한됩니까?

yarn.nodemanager.resource.memory-mb의 정의는 다음과 같습니다. 컨테이너에 할당 할 수있는 실제 메모리 크기 (MB). 전체 클러스터의 모든 컨테이너에 대한 합계를 의미합니까?

그러나 나는 아직도 이들을 구분할 수 없습니다. 그 설명은 그들이 똑같다고 생각하게합니다.

훨씬 더 혼란 스럽지만 기본값은 8192MB입니다. 이 차이점을 어떻게 알 수 있습니까? 고맙습니다.

답변

15

48GB RAM을 가진 각 시스템마다 클러스터를 설정하는 경우를 고려해보십시오. 이 RAM 중 일부는 운영 체제 및 기타 설치된 응용 프로그램 용으로 예약되어 있어야합니다.

yarn.nodemanager.resource.memory-MB : 컨테이너에 할당 될 수 MB의 실제 메모리

양. 이는 YARN이이 노드에서 사용할 수있는 메모리 양을 의미하므로이 속성 은 해당 시스템의 총 메모리보다 작아야합니다.

<name>yarn.nodemanager.resource.memory-mb</name> 
<value>40960</value> <!-- 40 GB --> 

다음 단계는 컨테이너에 사용 가능한 총 자원을 파괴하는 방법에 대한 원사의 지침을 제공하는 것입니다. 컨테이너에 할당 할 RAM의 최소 단위를 지정하면됩니다. yarn-site.xml에서

<name>yarn.scheduler.minimum-allocation-mb</name> <!-- RAM-per-container -> 
<value>2048</value> 

yarn.scheduler.maximum 할당-MB :

그것은 MB

의 컨테이너에 사용할 수있는 최대 메모리 할당을 정의 가

는 RM을 의미 "yarn.scheduler.minimum-allocation-mb" 단위로 컨테이너에 메모리를 할당 할 수 있으며 "yarn.scheduler.maximum-allocation-mb"을 초과하지 않고 메모리를 할당 할 수 있습니다. d는 노드의 총 할당 메모리보다 많지 않아야합니다. 맵리 듀스 애플리케이션의 경우 yarn-site.xml

<name>yarn.scheduler.maximum-allocation-mb</name> <!-Max RAM-per-container-> 
<value>8192</value> 

에서

, 원사 프로세스 각 맵 또는 용기에 단일 시스템에서 작업을 줄일 수 컨테이너의 개수가있을 수 있습니다. 각 노드에 최대 20 개의 컨테이너를 허용하려면 컨테이너 당 20GB의/컨테이너 20 개 = 컨테이너 당 최소 2GB가 필요합니다. yarn.scheduler.minimum-allocation-mb

다시 제한하고 싶습니다. 하나의 작업지도 컨테이너 당 2천49메가바이트 메모리 (mapreduce.map.memory.mb=2048 set in mapred-site.xml)를 요청하는 경우 자산 예를 들어 "yarn.scheduler.maximum-allocation-mb"

에 의해 제어되는 컨테이너의 최대 메모리 사용률, RM은 하나 4,096메가바이트 (2*yarn.scheduler.minimum-allocation-mb) 용기를 줄 것이다.

9999MB 맵 컨테이너를 묻는 거대한 MR 작업이있는 경우 작업이 오류 메시지와 함께 종료됩니다.

+0

굉장한 답변 !! – Candic3

+0

' '- 나는 'spark.executor.memory'가 컨테이너 당 얼마나 많은 메모리가 설정되어 있다고 생각하기 때문에 반드시 "컨테이너 당 RAM"이라고 생각하지 않는다. /집행자. – Candic3

+0

이러한 설정은 스파크와 상호 작용합니까? 스파크가이 설정을 무시할 거라고 생각해. 맞지? 특히 용량 스케줄러를 사용하는 경우 .... – Candic3

관련 문제