Amazon EMR YARN 스케줄러 대기열을 사용하여 노드 레이블링을 구성하거나 수정하려면 어떻게 해야 하나요?

3분 분량
0

Amazon EMR Apache YARN 스케줄러 대기열을 사용하여 노드 레이블링을 구성하거나 수정하고 싶습니다.

간략한 설명

EMR 클러스터의 기본 YARN 노드 레이블 설정은 다음과 같습니다.

Amazon EMR-5.x.x 시리즈의 Amazon EMR 버전 5.19.x 이상:

YARN 노드 레이블 기능이 기본적으로 켜져 있습니다. 즉, 다음과 같은 속성을 가진 코어 노드에 대해 CORE 노드 레이블이 생성됩니다. YARN Application-Master 컨테이너는 코어 노드에만 할당됩니다. 다른 모든 컨테이너에는 파티션 제한이 없습니다. 코어 또는 태스크 노드에 컨테이너를 할당할 수 있습니다.

yarn.node-labels.enabled: true
yarn.node-labels.am.default-node-label-expression: 'CORE'

Amazon EMR 버전 6.X 이상:

YARN 노드 레이블 기능이 기본적으로 꺼져 있습니다. 애플리케이션 마스터 프로세스는 코어 노드와 태스크 노드 모두에서 실행할 수 있습니다.

해결 방법

참고: 프로덕션 환경에서 진행하기 전에 테스트 환경에서 변경을 수행하는 것이 가장 좋습니다. 또한 YARN 노드 레이블 기능을 끄면 Application-Master 컨테이너가 코어 또는 태스크와 같은 모든 노드 유형에서 실행됩니다. 태스크 노드에는 제한이 없습니다. 스팟 인스턴스로 태스크 노드를 구성하는 경우, 스팟 용량 제한으로 인해 태스크 노드가 다운되면 실행 중인 작업이 실패할 수 있습니다.

Amazon EMR-5.x.x 시리즈의 Amazon EMR 버전 5.19.x 이상에서 YARN 레이블 기능 비활성화

새 EMR 클러스터를 생성할 때 기본 YARN 레이블 기능을 끕니다.

1.    Edit software settings(소프트웨어 설정 편집), Enter configuration(구성 입력) 섹션에 다음 속성을 추가합니다.

[
  {
    "Classification": "yarn-site",
    "Properties": {
      "yarn.node-labels.enabled": "false",
      "yarn.node-labels.am.default-node-label-expression": ""
    }
  }
]

2.    다음 콘텐츠를 사용하여 확장명이 .sh인 스크립트를 생성하고 이를 Amazon Simple Storage Service(S3) 버킷에 업로드합니다.

3.    Bootstrap Actions(부트스트랩 작업) 섹션에서 새로 만든 스크립트를 사용자 지정 작업으로 추가하고 클러스터 생성을 진행합니다.

#!/bin/bash
sudo sed -i 's/yarn rmadmin -addToClusterNodeLabels "CORE(exclusive=false)"/echo "NO LABELS"/g' /var/aws/emr/bigtop-deploy/puppet/modules/hadoop/manifests/init.pp

4.    클러스터 생성이 완료된 후 프라이머리 노드에서 다음 명령을 실행하여 변경 사항이 적용되었는지 확인합니다.

yarn cluster --list-node-labels

다음은 노드 레이블에 빈 값을 표시하는 이전 명령의 예상 출력입니다.

<<<<< Node Labels: >>>>>>

기존 EMR 클러스터에서 기본 YARN 레이블 기능을 끕니다.

1.    SSH를 사용하여 Amazon EMR 프라이머리 노드에 연결합니다.

2.    기존 yarn-site.xml 파일의 백업을 생성합니다. 경로는 :/etc/hadoop/conf/yarn-site.xml입니다.

3.    다음 명령을 사용하여 파일 편집기 모드에서 yarn-site.xml을 엽니다.

sudo su vi yarn-site.xml

4.    yarn.node-labels.enabled 속성 값을 false로 변경합니다.

<property>
<name>yarn.node-labels.enabled</name>
<value>false</value>
</property>

5.    다음 예와 같이 yarn.node-labels.am.default-node-label-expression 속성에서 CORE 값을 제거합니다.

<property>
    <name>yarn.node-labels.am.default-node-label-expression</name>
    <value></value>
  </property>

6.    YARN ResourceManger 서비스를 다시 시작합니다.

sudo systemctl restart hadoop-yarn-resourcemanager.service

sudo systemctl status hadoop-yarn-resourcemanager.service

7.    다음 명령을 사용하여 변경 사항이 성공적으로 적용되었는지 확인합니다.

yarn cluster --list-node-labels

다음은 노드 레이블에 빈 값을 표시하는 이전 명령의 예상 출력입니다.

<<<<< Node Labels: >>>>>>

Amazon EMR 버전 6.x 이상에서는 YARN 레이블 기능 활성화

새 EMR 클러스터를 생성할 때 YARN 레이블 기능을 켭니다.

1.    Edit software settings(소프트웨어 설정 편집), Enter configuration(구성 입력) 섹션에 다음 속성을 추가한 다음 클러스터 생성을 진행합니다.

[
  {
    "Classification": "yarn-site",
    "Properties": {
      "yarn.node-labels.enabled": "true",
      "yarn.node-labels.am.default-node-label-expression": "CORE"
    }
  }
]

2.    클러스터 생성이 완료된 후 프라이머리 노드에서 다음 명령을 실행하여 변경 사항이 적용되었는지 확인합니다.

yarn cluster --list-node-labels

다음은 위의 명령에 대한 예상 출력입니다.

<<<<< Node Labels: <CORE:exclusivity=false>  >>>>>

기존 EMR 클러스터에서 YARN 레이블 기능을 켭니다.

1.    Amazon EMR 콘솔에서 Clusters(클러스터)를 선택한 다음 편집하려는 클러스터를 선택합니다.

2.    Configurations(구성) 탭을 선택합니다.

3.    Reconfigure(재구성) 탭에서 Edit in JSON(JSON으로 편집) 옵션을 선택하고 다음 속성을 추가합니다.

[
  {
    "Classification": "yarn-site",
    "Properties": {
      "yarn.node-labels.enabled": "true",
      "yarn.node-labels.am.default-node-label-expression": "CORE"
    }
  }
]

4.    이 구성을 모든 활성 인스턴스 그룹에 적용(Apply this configuration to all active instance groups) 옵션을 선택한 다음 변경 내용을 저장합니다.

5.    프라이머리 노드에서 다음 명령을 실행하여 변경 사항이 적용되었는지 확인합니다.

yarn cluster --list-node-labels

다음은 위의 명령에 대한 예상 출력입니다.

<<<<< Node Labels: <CORE:exclusivity=false>  >>>>>>

AWS 공식
AWS 공식업데이트됨 일 년 전