Amazon EMR YARN スケジューラキューでノードラベリングを設定または変更する方法を教えてください。

所要時間2分
0

Amazon EMR Apache YARN スケジューラキューを使用してノードラベリングを設定または変更したい。

簡単な説明

EMR クラスターのデフォルトの YARN ノードラベル設定は次のとおりです。

Amazon EMR-5.x.x シリーズのアマゾン EMR バージョン 5.19.x 以降:

YARN ノードラベル機能はデフォルトでオンになっています。つまり、コアノードラベルは次のプロパティを持つコアノード用に作成されます。YARN アプリケーションマスターコンテナはコアノードにのみ割り当てられます。他のすべてのコンテナには、パーティションの制限はありません。コンテナはコアノードまたはタスクノードに割り当てることができます。

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.    「ソフトウェア設定の編集」、「構成の入力」セクションに次のプロパティを追加します。

[
  {
    "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) バケットにアップロードします。

3.    ブートストラップアクションセクションで、新しく作成したスクリプトをカスタムアクションとして追加し、クラスターの作成を続行します。

#!/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 リソースマネージャーサービスを再起動します。

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.    次のプロパティを [ソフトウェア設定の編集]、[構成の入力] セクションに追加し、クラスターの作成を続行します。

[
  {
    "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 コンソールから [クラスター] を選択し、編集するクラスターを選択します。

2.    [設定] タブを選択します。

3.    [再構成] タブの [JSON で編集] オプションを選択し、次のプロパティを追加します。

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

4.    [この設定をすべてのアクティブなインスタンスグループに適用] オプションを選択し、変更を保存します。

5.    マスターノードで以下のコマンドを実行して、変更が適用されていることを確認します。

yarn cluster --list-node-labels

前述のコマンドで期待される出力は次のとおりです。

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

AWS公式
AWS公式更新しました 1年前