Amazon EMR ジョブが "Container released on a lost node" エラーで失敗します。
簡単な説明
ディスク容量の使用率が高いために 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-##-###-##-## Exit status: -100.Diagnostics: Container released on a lost node"
また、CPU 使用率が長引いたり、使用可能なメモリが少なくなったりして、ノードが応答しなくなった場合も、前述のエラーが表示されることがあります。
ディスク容量が不足し、MR 異常ノードメトリクスに異常な状態のノードが表示される場合の解決策として、エラーを解決する手順を次に示します。
解決策
コアまたはタスクノードディスク (たとえば、/mnt や /mnt1 のディスク使用量が 90% を超えると、ディスクは異常状態になります。正常に稼働しているノードのディスクが 25% 未満の場合、YARN ResourceManager はノードを正常に停止します。この問題を解決するには、EMR クラスターに Amazon Elastic Block Store (Amazon EBS) の容量を増やしてください。
根本原因の特定
エラーの原因を特定するには、EMR クラスターの Amazon CloudWatch メトリクスの MR 異常ノードと MR ロストノードを確認します。
MR 異常ノードメトリクスに異常なノードが表示される場合は、ディスク容量が不足していることが問題の原因です。
MR ロストノード メトリクスがノードの喪失を示している場合、ノードの喪失はハードウェア障害が原因です。または、CPU またはメモリの使用率が高いため、Amazon EMR がノードにアクセスできていません。
新しいクラスター用に Amazon EBS 容量を追加する
Amazon EMR クラスターを起動するときに Amazon EBS の容量を増やすには、より大きな Amazon Elastic Compute Cloud (Amazon EC2) インスタンスタイプを選択してください。詳細については、「Default EBS Storage for Instances (インスタンスのデフォルト EBS ストレージ)」を参照してください。クラスターを作成するときに、ボリュームサイズを変更したり、ボリュームを追加したりすることもできます。
新規または実行中のクラスター用のコアノードまたはタスクノードをさらに追加する
新しいクラスターを起動するときは、より多くのコアノードまたはタスクノードを選択してください。または、実行中のクラスターにコアノードまたはタスクノードをさらに追加します。
実行中のクラスター用に Amazon EBS ボリュームをさらに追加する
Amazon EBS ボリュームを大きくしても問題が解決しない場合は、実行中のクラスターに追加の Amazon EBS ボリュームをアタッチします。
次の手順を実行します。
-
コアノードとタスクノードにさらに多くの Amazon EBS ボリュームをアタッチします。
-
アタッチしたボリュームをフォーマットし、マウントします。必ず正しいディスク番号を使用してください。たとえば、/data の代わりに /mnt1 または /mnt2 と入力します。
-
SSH を使用してインスタンスに接続します。
-
パス /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>
-
NodeManager サービスを再起動します。
sudo stop hadoop-yarn-nodemanager
sudo start hadoop-yarn-nodemanager
-
終了保護を有効にします。
それでもディスク容量の問題が解決しない場合は、次の操作を実行してください。
- 不要なファイルを削除します。
- ディスク使用率のしきい値を 90% から 99% に増やします。これを行うには、すべてのノードの yarn-default.xml の yarn.nodemanager.disk-health-checker.max-disk-lization-per-disk-percentage プロパティを変更します。次に、hadoop-yarn-nodemanager サービスを再起動します。
関連情報
Amazon EMR cluster terminates with NO_SLAVE_LEFT and core nodes FAILED_BY_MASTER (NO_SLAVE_LEFT で Amazon EMR クラスターが終了し、FAILED_BY_MASTER でコアノードが終了する)
Amazon EMR クラスターのコアノードでディスク容量が不足する原因を教えてください