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> >>>>>>