YARN 메모리 기본 지식 참고

 

 

아래 명령어로 yarn-site.xml 을 연다.

 

vi $HADOOP_HOME/etc/hadoop/yarn-site.xml

 

여기서 주목해야 할 값은

 

yarn.nodemanager.resource.memory-mb

yarn.scheduler.maximum-allocation-mb

 

값이다.

이 값에 의해 yarn 이 node 들에 주는 자원(container) 개수가 달라진다.

 

예를 들어보자.

내가 사용하는 Spark Docker Image 의 경우 

yarn.nodemanager.resource.memory-mb 값이 4g

yarn.scheduler.maximum-allocation-mb 값이 2g 이다.

 

노드 당 total memory 값이 4g 이고, container 에 줄 수 있는 최대 값이 2g 이므로,

yarn 자원 container 는 4/2 = 2 즉 1개 혹은 2개가 될 것이다.

 

만약

yarn.nodemanager.resource.memory-mb 값이 32g 이고

yarn.scheduler.maximum-allocation-mb 값이 2g 라면,

yarn 자원 container 는 32/2 = 16 즉 15개 혹은 16개가 될 것이다.

 

yarn 자원 container 가 많아지는 것이 무슨 의미가 있을까?

Spark 를 예로 들어보자.

Spark 는 코드를 실행하는 executor 를 yarn 이 준 자원 container 에 올려서 실행을 하는데

이 때 container 개수가 많다면 executor 가 그 만큼 많이 돌아간다.

많이 돌아가면 병렬처리 되어 실행 속도가 빨라진다.

 

비단 Spark 뿐 아니라, yarn 으로부터 자원을 받는 모든 app 들의 성능이 좋아진다.

왜냐하면 자원이 많아지기 때문에.

 

 

참고

https://stackoverflow.com/a/20022706/5868252

+ Recent posts