Amazon EMR で異常なノードを置き換える
Amazon EMR は、定期的に Apache Hadoop の NodeManager ヘルスチェッカーサービス
注記
ノードが異常になる一般的な原因は、ディスク容量が不足していることです。コアノードのディスク容量がほぼ不足している場合の詳細については、re:Post Knowledge Center の記事を参照してください: 「Why is the core node in my Amazon EMR cluster running out of disk space?
注記
Hadoop では、カスタマイズされたノードヘルスチェックを実行できます。これは、NodeManager
Amazon EMR が異常なノードを終了するか、クラスターに保持するかを選択できます。異常なノードの交換をオフにすることにより、それらは拒否リストに残り、引き続きクラスター容量にカウントされます。引き続き設定と復旧のために Amazon EC2 のコアインスタンスに接続し、クラスターのサイズを変更してキャパシティを追加できます。ノードの交換と終了の仕組みの詳細については、「Using termination protection」を参照してください。
異常なノード置換がオンの場合、Amazon EMR は異常なコアノードを終了し、インスタンスグループのインスタンス数またはインスタンスフリートのターゲット容量に基づいて新しいインスタンスをプロビジョニングします。コアノードが 45 分以上異常である場合、Amazon EMR はノードを正常に置き換えます。ノードの正常な廃止が 1 時間以内に完了しない場合、ノードは強制的に終了します。ただし、終了することにより、クラスターがレプリケーション係数または HDFS 容量の制約を下回る場合は除きます。
重要
ノードが正常に廃止または終了されるまでにかかる時間は変更される可能性があることに注意してください。
異常なノード置換はデータ損失の可能性を大幅に軽減しますが、リスクを完全に排除するわけではありません。HDFS データは、異常なコアインスタンスの正常な置き換え中に完全に失われる可能性があります。常にデータをバックアップすることをお勧めします。
異常な状態のノードを特定して復旧する方法の詳細については、「Resource errors」を参照してください。さらに、クラスターの状態を維持するために従うことができるその他のベストプラクティスについては、Amazon EMR クラスターが NO_SLAVE_LEFT とコアノード FAILED_BY_MASTER で終了するリソースエラーに関する以下のドキュメントを参照してください。
Amazon EMR は、異常なノード置換のために Amazon CloudWatch Events を発行するため、異常なコアインスタンスで何が起こっているかを追跡できます。詳細については、「unhealthy node replacement events」を参照してください。
デフォルトのノード置換と終了の保護設定
異常なノード置換はすべての Amazon EMR リリースで使用できますが、デフォルト設定は選択したリリースラベルによって異なります。これらの設定は、新しいクラスターを作成するときに異常なノード置換を設定するか、いつでもクラスター設定に移動することで変更できます。
Amazon EMR リリース 7.0 以下を実行している単一ノードクラスターまたは高可用性クラスターを作成する場合、異常なノード置換のデフォルト設定は終了保護によって異なります。
終了保護を有効にすると、異常なノード置換が無効になります。
終了保護を無効にすると、異常なノード置換が有効になります。
クラスターの起動時に異常なノードを設定する
コンソール、AWS CLI または API を使用してクラスターを起動するときは、異常なノード置換を有効または無効にすることができます。
デフォルトの異常なノード置換設定は、クラスターの起動方法によって異なります。
-
Amazon EMR コンソール — 異常なノード置換はデフォルトで有効になっています。
-
AWS CLI
aws emr create-cluster—--no-unhealthy-node-replacementを指定しない限り、異常のあるノード置換はデフォルトで有効になっています。 -
Amazon EMR RunJobFlow API コマンド —
UnhealthyNodeReplacementブール値をTrueまたはFalseに設定しない限り、異常なノード置換はデフォルトで有効になっています。
実行中のクラスターに異常なノード置換を設定する
コンソール、AWS CLI、または API を使用して、実行中のクラスターで異常なノード交換をオンまたはオフにできます。