EMR 5.19.0 버전부터 적용된 노드 레이블 설정에 따라서 YARN에 작업을 전달해도 클러스터를 100% 사용하지 못하는 경우가 발생할 수 있습니다.
클러스터의 구성이 CORE 10대 TASK 40대로 구성된 경우 노드레이블은 CORE, DEFAULT 로 구성되며 CORE는 CORE레이블, TASK는 DEFAULT 레이블로 구성됩니다. 이때 AM(Application Master)하나에 컨테이너 하나를 필요로 하는 작업을 실행하면 기본설정(yarn.node-labels.am.default-node-label-expression
)에서 CORE 레이블에 AM이 실행되게 설정되어 클러스터의 자원에 여유가 있어도 작업을 실행하지 않고 대기하게 됩니다. 아래와 같이 AM Partition = CORE
인 상태로 작업이 대기하게 됩니다.
[Wed Nov 13 07:02:17 +0000 2019]
Application is Activated, waiting for resources to be assigned for AM.
Last Node which was processed for the application : ip-1-1-1-1.ap-northeast-2.compute.internal:8041
( Partition : [CORE], Total resource : <memory:12288, vCores:8>, Available resource : <memory:1024, vCores:3> ).
Details : AM Partition = CORE ;
Partition Resource = <memory:122880, vCores:80> ;
Queue's Absolute capacity = 70.0 % ;
Queue's Absolute used capacity = 99.166664 % ; Queue's Absolute max capacity = 100.0 % ;
설정
모든 노드에 대한 yarn-site(yarn-site.xml)
설정 | 기본값 | 설명 |
---|---|---|
yarn.node-labels.enabled | true | 노드레이블 사용 여부 |
yarn.node-labels.am.default-node-label-expression | 'CORE' | 애플리케이션 마스터가 사용할 레이블 |
yarn.node-labels.fs-store.root-dir | '/apps/yarn/nodelabels' | 노드 레이블 관련 정보를 저장할 디렉토리 |
yarn.node-labels.configuration-type | 'distributed' | 노드 레이블 설정 타입 |
마스터 및 코어 노드에 대한 yarn-site(yarn-site.xml)
설정 | 기본값 | 설명 |
---|---|---|
yarn.nodemanager.node-labels.provider | 'config' | yRM에서 "yarn.node-labels.configuration-type"이 "distributed"로 구성된 경우 관리자는 NM에서이 매개 변수를 구성하여 노드 레이블의 제공자를 구성 할 수 있습니다. 관리자는“config”,“script”또는 공급자의 클래스 이름을 구성 할 수 있습니다. 구성된 클래스는 org.apache.hadoop.yarn.server.nodemanager.nodelabels.NodeLabelsProvider를 확장해야합니다. "config"가 구성된 경우 "ConfigurationNodeLabelsProvider"및 "script"가 구성된 경우 "ScriptNodeLabelsProvider"가 사용됩니다. |
yarn.nodemanager.node-labels.provider.configured-node-partition | 'CORE' | “yarn.nodemanager.node-labels.provider”가“config”로 구성된 경우 ConfigurationNodeLabelsProvider는이 매개 변수에서 파티션 레이블을 가져옵니다. |
모든 노드에 대한 capacity-scheduler(capacity-scheduler.xml)
설정 | 기본값 | 설명 |
---|---|---|
yarn.scheduler.capacity.root.accessible-node-labels | '*' | root에 접근 가능한 노드 레이블 |
yarn.scheduler.capacity.root.accessible-node-labels.CORE.capacity | 100 | CORE 노드 레이블이 사용할 수 있는 용량 |
yarn.scheduler.capacity.root.default.accessible-node-labels | '*' | default큐에 접근할 수 있는 노드 레이블 |
yarn.scheduler.capacity.root.default.accessible-node-labels.CORE.capacity | 100 | default큐가 CORE 레이블에서 사용할 수 있는 용량 |
해결방법
yarn.node-labels.am.default-node-label-expression
설정을 삭제하여 DEFAULT 파티션에서 AM이 실행될 수 있게 설정yarn.node-labels.am.default-node-label-expression
설정을 삭제하고, CORE 레이블을 삭제하여 모든 노드가 DEFAULT 파티션으로 설정
# CORE 레이블을 삭제
$ yarn rmadmin -removeFromClusterNodeLabels "CORE"
참고
반응형
'AWS > EMR' 카테고리의 다른 글
[EMR] AWS EMR의 클러스터 정보확인 위치 (0) | 2020.01.13 |
---|---|
[EMR] S3 503 Slow Down 오류 발생시 해결방법 (0) | 2019.12.16 |
[EMR] AWS EMR의 hive cli에서 tez.queue.name가 설정되지 않는 문제 해결 방법 (0) | 2019.11.04 |
[EMR] AWS EMR의 버전 선택 (0) | 2019.11.01 |
[AWS-EMR] EMR의 하이브메타스토어 재시작 (0) | 2019.10.10 |