NO_SLAVE_LEFT で Amazon EMR クラスターが終了し、FAILED_BY_MASTER でコアノードが終了する
このエラーは通常、削除保護が無効になっており、すべてのコアノードが yarn-site.xml
ファイルに対応する yarn-site
設定分類の最大使用率しきい値で指定したディスクストレージ容量を超過したことが原因で発生します。この値のデフォルト値は 90% です。コアノードのディスク使用率が使用率のしきい値を超えると、YARN NodeManager のヘルスサービスにより、ノードが UNHEALTHY
として報告されます。この状態になっていると、Amazon EMR はノードを拒否リストに追加し、YARN コンテナを割り当てません。ノードの異常が 45 分間続いた場合、Amazon EMR は関連付けられている Amazon EC2 インスタンスを終了するために FAILED_BY_MASTER
のマークを付けます。コアノードに関連付けられているすべての Amazon EC2 インスタンスに終了のマークが付けられると、ジョブを実行するリソースがなくなるため、クラスターはステータス NO_SLAVE_LEFT
で終了します。
1 つのコアノードのディスク使用率がしきい値を超えると、連鎖反応が起きる可能性があります。HDFS が原因で 1 つのノードのディスク使用率がしきい値を超えた場合、他のノードのディスク使用率もしきい値に近づいていると考えられます。最初のノードのディスク使用率がしきい値を超えると、Amazon EMR はそのノードを拒否リストに追加します。これにより、拒否リストに追加されたノードで失った HDFS データを残りのノードがそれぞれの間でレプリケートし始めるため、ノードのディスク使用率が上昇します。その後、各ノードも同じように UNHEALTHY
の状態になり、最終的にはクラスターが終了します。
ベストプラクティスとレコメンデーション
クラスターハードウェアに十分なストレージを設定する
クラスターを作成するときに、十分な数のコアノードがあること、および各ノードに HDFS 用の十分なインスタンスストアと EBS ストレージボリュームがあることを確認します。詳細については、「クラスターの必要な HDFS 容量の計算」を参照してください。手動で、または Auto Scaling を使用して既存のインスタンスグループにコアインスタンスを追加することもできます。新しいインスタンスのストレージ設定は、インスタンスグループ内の他のインスタンスと同じになります。詳細については、「Amazon EMR クラスタースケーリングを使用してワークロードの変化に適応する」を参照してください。
終了保護を有効化する
削除保護を有効にします。このようにすると、コアノードが拒否リストに追加された場合に、SSH を使用して関連付けられている Amazon EC2 インスタンスに接続し、トラブルシューティングを行ってデータを復旧できます。終了保護を有効にすると、Amazon EMR が Amazon EC2 インスタンスを新しいインスタンスに置き換えなくなる点に注意してください。詳細については、「Amazon EMR クラスターを誤ったシャットダウンから保護するための終了保護の使用」を参照してください。
MRUnhealthyNodes CloudWatch メトリクスのアラームを作成する
このメトリクスは、ステータスが UNHEALTHY
のノードの数を報告します。これは、YARN メトリクス mapred.resourcemanager.NoOfUnhealthyNodes
と同等です。このアラームの通知を設定すれば、45 分のタイムアウトに達する前に異常が発生したノードに関する警告を受け取ることができます。詳細については、「CloudWatch で Amazon EMR のメトリクスをモニタリングする」を参照してください。
yarn-site を使用して設定を微調整する
以下の設定は、アプリケーションの要件に合わせて調整できます。たとえば、yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage
の値を増やすことにより、ノードが UNHEALTHY
と報告するディスク使用率のしきい値を上げることができます。
これらの値は、yarn-site
設定分類を使用してクラスターを作成するときに設定できます。詳細については、「Amazon EMR リリースガイドの」「アプリケーションの設定」を参照してください。SSH を使用してコアノードに関連付けられている Amazon EC2 インスタンスに接続し、テキストエディターを使用して /etc/hadoop/conf.empty/yarn-site.xml
に値を追加することもできます。変更を加えたら、以下のように hadoop-yarn-nodemanager を再起動する必要があります。
重要
クラスターの作成時に yarn-site
設定分類を使用して yarn.nodemanager.recovery.enabled
を true
に設定していなければ、NodeManager サービスを再起動するときにアクティブな YARN コンテナが強制終了されます。そのため、yarn.nodemanager.recovery.dir
プロパティを使用して、コンテナの状態を保存するディレクトリも指定する必要があります。
sudo /sbin/stop hadoop-yarn-nodemanager sudo /sbin/start hadoop-yarn-nodemanager
最新の yarn-site
プロパティとデフォルト値の詳細については、Apache Hadoop ドキュメントの「YARN のデフォルト設定
プロパティ | デフォルト値 | 説明 |
---|---|---|
yarn.nodemanager.disk-health-checker.interval-ms |
120000 |
ディスクのヘルスチェッカーを実行する頻度 (秒)。 |
yarn.nodemanager.disk-health-checker.min-healthy-disks |
0.25 |
NodeManager で新しいコンテナを起動するために正常でなければならないディスク数の最小比率。これは、yarn.nodemanager.local-dirs (デフォルトでは、Amazon EMR の |
|
90.0 |
ディスクが異常であるとマークされてから許容されるディス容量使用率の最大パーセンテージ。値の範囲は 0.0~100.0 です。この値が 100 以上になると、NodeManager によってディスク全体のチェックが行われます。これは、 |
|
0 |
使用するために最低限確保しておく必要があるディスク容量。これは、 |