Amazon EMR で YARN ノードのラベル付けを設定または変更する方法を教えてください。

所要時間2分
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.19.x 以降の Amazon EMR-5.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公式
AWS公式更新しました 3ヶ月前
コメントはありません

関連するコンテンツ