아래 명령어로 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 들의 성능이 좋아진다.
왜냐하면 자원이 많아지기 때문에.
참고
'Hadoop' 카테고리의 다른 글
[Hadoop] Docker 로 Hadoop Cluster 설치하기 (0) | 2019.12.03 |
---|---|
[HDFS] master:9000 failed on connection exception 에러 (0) | 2019.11.20 |
[YARN] 어떤 노드가 동작중인지 보고싶을 때 사용하는 명령어 (0) | 2019.11.16 |
[HDFS] slaves 노드 상에 block 위치 알아내는 명령어 (1) | 2019.11.15 |
[HDFS] 관리 명령어 모음 링크 (0) | 2019.11.15 |