Amazon EMR クラスターでノードラベルを有効にしました。その後、YARN ResourceManager が失敗するようになりました。
簡単な説明
この問題は、Amazon EMR リリースバージョン 5.19.0~5.21.0 で発生します。これらのバージョンの Amazon EMR では、ノードラベルファイルを HDFS に保存します。
- DEFAULT_DIR_NAME = "node-labels"
- MIRROR_FILENAME = "nodelabel.mirror"
- EDITLOG_FILENAME = "nodelabel.editlog"
Amazon EMR は、すべてのノードにおいてこれらのファイルを、yarn-site.xml 内の次の場所に保存します : yarn.node-labels.fs-store.root-dir: '/apps/yarn/nodelabels'。この問題は、サイズ変更オペレーション中にファイルのブロックを含むすべてのノードが失われ、対象のファイルが破損した場合に発生します。これにより再起動した ResourceManager が再起動ループ内でスタックすると、CommonNodeLabelsManager が例外をスローします。
例外を見つけるには、/var/log/hadoop-yarn/yarn-yarn-resourcemanager-*.log の中で、「org.apache.hadoop.yarn.nodelabels.CommonNodeLabelsManager」を検索します。
このエラーを解決するには、ノードラベルファイルを削除します。その上で、ResourceManager を再起動しファイルを再作成します。
解決方法
1. ファイルシステムの状態を確認し、ブロックを見つけます。
hdfs fsck /apps/yarn/nodelabels/ -locations -blocks -files
2. ファイルを削除します。
hdfs dfs -rm -skipTrash /apps/yarn/nodelabels/*
3. ResourceManager を再起動します。
sudo stop hadoop-yarn-resourcemanager
sudo start hadoop-yarn-resourcemanager
4. ResourceManager が再起動すると、ノードラベルファイルが再作成されます。これにより、再起動ループが解決されます。ただし、この段階では YARN アプリケーションを送信することはできません。YARN アプリケーション送信の前に、手動でノードラベルエントリを追加する必要があります。
yarn rmadmin -addToClusterNodeLabels "CORE(exclusive=false)"
5. ラベルを一覧表示して、ResourceManager がノードラベルファイルを再作成したことを確認します。
yarn cluster --list-node-labels
関連情報
ノードタイプ (マスター、コア、タスクノード) を理解する