본문 바로가기
AWS/EMR

[EMR] CORE 노드 레이블에 맞는 클러스터 활용 설정

by hs_seo 2019. 11. 19.

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"

참고

반응형