내용으로 건너뛰기

Amazon EMR에서 YARN 노드 레이블을 구성하거나 수정하려면 어떻게 해야 합니까?

4분 분량
0

Amazon EMR에서 Apache Hadoop YARN 노드 레이블을 구성하거나 수정하려고 합니다.

간략한 설명

기본 YARN 노드 레이블 설정은 사용 중인 Amazon EMR 버전에 따라 다릅니다.

Amazon EMR-5.x 릴리스 버전의 Amazon EMR 버전 5.19.x 이상

YARN 노드 레이블 기능은 기본적으로 활성화되어 있습니다. 이 기능을 활성화하면 다음 속성을 가진 코어 노드에 대해 CORE 노드 레이블이 생성됩니다.

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

YARN ApplicationMaster 컨테이너는 코어 노드에만 할당됩니다. 다른 모든 컨테이너의 경우 파티션 제한이 없습니다. 코어 노드 또는 작업 노드에 컨테이너를 할당할 수 있습니다.

Amazon EMR 버전 6.x 이상

YARN 노드 레이블 기능은 기본적으로 비활성화되어 있습니다. 애플리케이션의 기본 프로세스는 코어 노드와 태스크 노드 모두에서 실행할 수 있습니다.

해결 방법

참고: 프로덕션 환경에서 YARN 노드 레이블을 구성하기 전에 테스트 환경에서 구성하는 것이 좋습니다. YARN 노드 레이블 기능을 비활성화하면 Application-Master 컨테이너가 모든 노드 유형에서 시작됩니다. 태스크 노드에는 제한이 없습니다. Amazon Elastic Compute Cloud(Amazon EC2) 스팟 인스턴스로 구성된 태스크 노드의 경우, 스팟 용량 제약으로 인해 태스크 노드가 다운되면 작업 실행이 실패할 수 있습니다.

Amazon EMR-5.x 릴리스 버전의 Amazon EMR 버전 5.19.x 이상에서 YARN 레이블 비활성화

EMR 클러스터를 생성할 때 YARN 레이블 기능 비활성화

다음 단계를 완료하십시오.

  1. 소프트웨어 설정 편집 섹션의 구성 입력에서 다음 속성을 추가합니다.

    [  
      {  
        "Classification": "yarn-site",  
        "Properties": {  
          "yarn.node-labels.enabled": "false",  
          "yarn.node-labels.am.default-node-label-expression": ""  
        }  
      }  
    ]
  2. .sh 확장자를 사용하여 다음 스크립트를 생성한 다음 Amazon Simple Storage Service (Amazon S3) 버킷에 스크립트를 업로드합니다.

    #!/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
  3. 부트스트랩 작업 섹션에서 스크립트를 사용자 지정 작업으로 추가한 다음 클러스터를 생성합니다.

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

    yarn cluster --list-node-labels

    출력에서 노드 레이블에 빈 값이 표시됩니다.

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

기존 Amazon 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. 클러스터 버전이 5.29.0 이후인 경우 다음 명령을 실행하여 ResourceManager를 다시 시작합니다.

    sudo systemctl restart hadoop-yarn-resourcemanager.service
    sudo systemctl status hadoop-yarn-resourcemanager.service

    -또는-
    클러스터 버전이 5.29.0 이하인 경우 다음 명령을 실행하여 ResourceManager를 다시 시작합니다.

    sudo stop hadoop-yarn-resourcemanager
    sudo start hadoop-yarn-resourcemanager
  7. 변경 사항이 적용되었는지 확인하려면 다음 명령을 실행합니다.

    yarn cluster --list-node-labels

    출력에서 노드 레이블에 빈 값이 표시됩니다.

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

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

EMR 클러스터를 생성할 때 YARN 레이블 기능 활성화

  1. 소프트웨어 설정 편집 섹션의 구성 입력에서 다음 속성을 추가합니다.

    [  
      {  
        "Classification": "yarn-site",  
        "Properties": {  
          "yarn.node-labels.enabled": "true",  
          "yarn.node-labels.am.default-node-label-expression": "CORE"  
        }  
      }  
    ]
  2. 클러스터를 생성합니다.

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

    yarn cluster --list-node-labels

    출력에서 노드 레이블에 빈 값이 표시됩니다.

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

기존 EMR 클러스터에서 YARN 레이블 기능 활성화

다음 단계를 완료하십시오.

  1. Amazon EMR 콘솔을 엽니다.

  2. 탐색 창에서 클러스터를 선택한 다음 편집하려는 클러스터를 선택합니다.

  3. 구성 탭을 선택합니다.

  4. 인스턴스 그룹 구성에서 인스턴스 그룹을 선택합니다.

  5. 재구성 아이콘을 선택하고 JSON 편집을 선택한 후 다음 속성을 추가합니다.

    [  
      {  
        "Classification": "yarn-site",  
        "Properties": {  
          "yarn.node-labels.enabled": "true",  
          "yarn.node-labels.am.default-node-label-expression": "CORE"  
        }  
      }  
    ]
  6. 모든 활성 인스턴스 그룹에 이 구성 적용을 선택한 다음 변경 사항을 저장합니다.

  7. 프라이머리 노드에서 hadoop 사용자로 다음 명령을 실행합니다.

    yarn rmadmin -addToClusterNodeLabels "CORE(exclusive=false)"
  8. 변경 사항이 적용되었는지 확인하려면 프라이머리 노드에서 다음 명령을 실행합니다.

    yarn cluster --list-node-labels

    출력에서 노드 레이블에 빈 값이 표시됩니다.

    <<<<< Node Labels: <CORE:exclusivity=false>  >>>>>>
AWS 공식업데이트됨 일 년 전