どうすれば "終了ステータス :-100。診断: *lost* ノードでコンテナが解放されました"の Amazon EMR のエラーを解決できますか?

最終更新日: 2019 年 12 月 9 日

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 サービスを再起動します。