Amazon EMR でノードラベルと YARN ResourceManager が失敗する場合の解決方法を教えてください。

所要時間1分
0

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

関連情報

ノードタイプ (マスター、コア、タスクノード) を理解する

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