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.xml の yarn.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.xml の yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage プロパティを変更します。次に、hadoop-yarn-nodemanager サービスを再起動します。
関連情報
NO_SLAVE_LEFT と Core Nodes FAILED_BY_MASTER でクラスターが終了する
Amazon EMR クラスターのコアノードがディスク容量不足になる原因を教えてください。