Amazon EMR の「Exit status: -100.Diagnostics: Container released on a *lost* node」エラーを解決する方法を教えてください。

最終更新日: 2021 年 7 月 21 日

Amazon EMR ジョブが次のようなエラーメッセージで失敗します。

ExecutorLostFailure (executor 12 exited caused by one of the running tasks) Reason: Container marked as failed: container_1572839353552_0008_01_000002 on host: ip-xx-xxx-xx-xx Exit status: -100.Diagnostics: Container released on a *lost* node

簡単な説明

このエラーは、通常、次のいずれかの状況で発生します。

  • ディスク領域の使用率が高いためコアまたはタスクノードが終了した。
  • 長期的に高い CPU 使用率または使用可能なメモリの低下によってノードが応答しなくなる。

この記事では、ディスク容量の問題に焦点をあてます。

コアまたはタスクノードディスク (/mnt や /mnt1 など) のディスク使用率が 90% を超えると、そのディスクは異常と判断されます。正常なノードのディスクが 25% 未満になると、YARN ResourceManager がノードを正常に停止させます。この問題を解決するには、Amazon Elastic Block Store (Amazon EBS) の容量を EMR クラスターにさらに追加します。これは、新しいクラスターを起動するときに、または実行中のクラスターを変更することにより、実行できます。

解決方法

根本原因の特定

エラーの原因を特定するには、次の EMR クラスターの Amazon CloudWatch メトリクスを確認します。

  • MR の異常なノード: このメトリクスが異常なノードを示している場合、問題の原因はディスク容量の不足にあります。
  • MR の損失ノード: このメトリクスが失われたノードを示している場合、ハードウェア障害が原因でノードが失われたか、CPU またはメモリの使用率が高いためにノードに到達できなかったことを示しています。

ディスク容量の不足が原因で発生する損失ノードのエラーを解決するには、次のいずれかのオプションを使用します。

新しいクラスター: EBS 容量をさらに追加

EMR クラスターの起動時に EBS 容量を追加するには、より大きい Amazon Elastic Compute Cloud (Amazon EC2) インスタンスタイプを選択します。EC2 インスタンスが大きければそれだけ EBS のストレージ容量も増えます。詳細については、インスタンスのデフォルト EBS ストレージを参照してください。(クラスターの作成時に、選択したインスタンスタイプに関係なくボリュームサイズを変更したりボリュームを追加したりすることも可能です。)

新規または実行中のクラスター: コアノードまたはタスクノードをさらに追加

実行中のクラスター: EBS ボリュームをさらに追加

実行中のクラスターに EBS ボリュームをアタッチするには、以下の手順を実行します。

1.    EBS ボリュームを増やしても問題が解決しない場合は、コアノードとタスクノードに EBS ボリュームを添付します

2.    添付したボリュームをフォーマットしてマウントします。必ず、正しいディスク番号を使用します(/data の代わりに /mnt1 または /mnt2 など)。

3.    SSH を使用してノードに接続します

4.    パス /mnt1/yarn/etc/hadoop/conf/yarn-site.xmlyarn.nodemanager.local-dirs プロパティ内に追加します。例:

<property>
    <name>yarn.nodemanager.local-dirs</name>
    <value>/mnt/yarn,/mnt1/yarn</value>
</property>

5.    NodeManager サービスを再起動します。

sudo stop hadoop-yarn-nodemanager
sudo start hadoop-yarn-nodemanager

6.    終了保護を有効にします

ディスク容量の問題がまだ解決しない場合は、以下を試します。

  • 不要なファイルを削除する。
  • ディスク使用率のしきい値を 90% から 99% に増やす。これを行うには、すべてのノードで、yarn-default.xmlyarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage プロパティを変更します。次に、hadoop-yarn-nodemanager サービスを再起動します。