Amazon EMR クラスターを誤ったシャットダウンから保護するための終了保護の使用
終了保護は、クラスターを偶発的な終了から保護します。これは、重要なワークロードを処理する長時間稼働しているクラスターで特に役立ちます。長時間稼働クラスターで削除保護が有効になっていてもクラスターを終了することはできますが、最初にクラスターから明示的に削除保護を削除する必要があります。これにより、事故やエラーで EC2 インスタンスがシャットダウンされることがなくなります。削除保護はクラスターの作成時に有効にできます。また、実行中のクラスターで設定を変更することもできます。
終了保護が有効になっていると、Amazon EMR API の TerminateJobFlows
アクションは機能しません。ユーザーは、この API や AWS CLI の terminate-clusters
コマンドでクラスターを終了することはできません。この API はエラーを返し、CLI はゼロ以外のリターンコードで終了します。Amazon EMR コンソールを使用してクラスターを終了する場合、終了保護を無効にする追加ステップが示されます。
警告
終了保護は、ヒューマンエラーや回避策が発生した場合にデータが保持されることを保証するものではありません。例えば、SSH を使用してインスタンスに接続しているときにコマンドラインから再起動コマンドが発行された場合、インスタンスで実行されているアプリケーションまたはスクリプトによって再起動コマンドが発行された場合、または Amazon EC2 や Amazon EMR API が使用されて終了保護が無効にされた場合などです。これは、Amazon EMR リリース 7.1 以降を実行していて、インスタンスが異常で回復不能になった場合も同様です。終了保護が有効になっている場合でも、HDFS データを含むインスタンスストレージに保存されたデータは失われる可能性があります。Simple Storage Service (Amazon S3) のロケーションにデータ出力を書き込み、ビジネス継続性の要件に応じてバックアップ戦略を作成します。
削除保護は、以下のアクションによるクラスターリソースのスケールに影響することはありません。
-
AWS Management Consoleまたは AWS CLI を使用して手動でクラスターのサイズを変更する。詳細については、「実行中の Amazon EMR クラスターのサイズを手動で変更する」を参照してください。
-
スケールインポリシーと自動スケーリングを使用して、コアまたはタスクインスタンスグループからインスタンスを削除する。詳細については、「カスタムポリシーによる自動スケーリングを Amazon EMR のインスタンスグループに使用する」を参照してください。
-
ターゲット容量を減らしてインスタンスフリートからインスタンスを削除する。詳細については、「インスタンスフリートオプション」を参照してください。
終了保護と Amazon EC2
Amazon EMR クラスターでの終了保護設定は、クラスターのすべての Amazon EC2 インスタンスの DisableApiTermination
属性に対応します。例えば、EMR クラスターで終了保護を有効にすると、Amazon EMR は EMR クラスター内のすべての EC2 インスタンスに対して自動的に DisableApiTermination
を true に設定します。終了保護を無効にする場合も同様です。Amazon EMR は、EMR クラスター内のすべての EC2 インスタンスに対して DisableApiTermination
を false に自動的に設定します。Amazon EMR からクラスターを終了またはスケールダウンし、EC2 インスタンスの Amazon EC2 設定が競合する場合、Amazon EMR は Amazon EC2 の DisableApiStop
および DisableApiTermination
設定よりも Amazon EMR 設定を優先し、EC2 インスタンスを終了し続けます。
例えば、Amazon EC2 コンソールを使用して、終了保護が無効になっている EMR クラスター内の Amazon EC2 インスタンスで終了保護を有効にすることができます。Amazon EMR コンソール、AWS CLI、または Amazon EMR API を使用してクラスターを終了またはスケールダウンすると、Amazon EMR は DisableApiTermination
設定をオーバーライドし、false に設定し、他のインスタンスとともにインスタンスを終了します。
Amazon EC2 コンソールを使用して、終了保護が無効になっている EMR クラスター内の Amazon EC2 インスタンスで停止保護を有効にすることができます。クラスターを終了またはスケールダウンすると、Amazon EMR は Amazon EC2 で DisableApiStop
を false に設定し、他のインスタンスとともにインスタンスを終了します。
Amazon EMR は、クラスターを終了またはスケールダウンする場合にのみ、DisableApiStop
設定をオーバーライドします。EMR クラスターの終了保護を有効または無効にしても、Amazon EMR は各 EMR クラスター内の EC2 インスタンスの disableApiStop
設定を変更しません。
重要
終了保護を設定した Amazon EMR クラスターの一部としてインスタンスを作成し、DisableApiTermination
が false
になるように Amazon EC2 API または AWS CLI コマンドを使用してインスタンスを変更してから、Amazon EC2 API または AWS CLI コマンドで TerminateInstances
操作を実行した場合、Amazon EC2 インスタンスは終了します。
終了保護と異常な状態の YARN ノード
Amazon EMR は、クラスターのコアおよびタスクの Amazon EC2 インスタンスで実行されている Apache Hadoop YARN のノードのステータスを定期的にチェックします。ヘルスステータスは、NodeManager ヘルスチェッカーサービスUNHEALTHY
を報告すると、Amazon EMR のインスタンスコントローラーはノードを拒否リストに追加し、再び正常な状態になるまで YARN コンテナを割り当てません。終了保護、異常なノード置換、Amazon EMR リリースバージョンの状態に応じて、Amazon EMR は異常なインスタンスを置き換えるか、インスタンスへのコントローラーの割り当てを停止します。
ステップ実行の終了保護と終了
ステップ実行後の終了を有効にし、終了保護も有効にすると、Amazon EMR は終了保護を無視します。
クラスターにステップを送信するときに ActionOnFailure
プロパティを設定することにより、エラーが原因でステップの実行を完了できなかった場合に何が起きるのかを確認できます。この設定に使用できる値は、TERMINATE_CLUSTER
(以前のバージョンでは TERMINATE_JOB_FLOW
)、CANCEL_AND_WAIT
、および CONTINUE
です。詳細については、「作業を Amazon EMR クラスターに送信する」を参照してください。
ActionOnFailure
を CANCEL_AND_WAIT
に設定したステップが失敗した場合、ステップ実行後の終了が有効になっていると、クラスターは後続のステップを実行せずに終了します。
ActionOnFailure
が TERMINATE_CLUSTER
に設定されているステップが失敗した場合は、以下の設定の表で結果を確認してください。
ActionOnFailure | ステップ実行後の終了 | 終了保護 | 結果 |
---|---|---|---|
|
有効 |
無効 |
クラスターが終了 |
有効 |
有効 |
クラスターが終了 |
|
無効 |
有効 |
クラスターの稼働が継続 |
|
無効 |
無効 |
クラスターが終了 |
終了保護とスポットインスタンス
Amazon EMR の終了保護を有効にしても、スポット料金が最大スポット料金を超えた場合の Amazon EC2 スポットインスタンスの終了を防ぐことはできません。
クラスターを起動するときに終了保護を設定する
コンソール、AWS CLI または API を使用してクラスターを起動するときは、終了保護を有効または無効にすることができます。
単一ノードクラスターの場合、デフォルトの終了保護設定は次のとおりです。
-
Amazon EMR コンソールによるクラスターの起動 — 終了保護はデフォルトで無効になっています。
-
AWS CLI
aws emr create-cluster
によるクラスターの起動 —--termination-protected
が指定されている場合を除き、終了保護は無効になります。 -
Amazon EMR API RunJobFlow コマンドによるクラスターの起動 -
TerminationProtected
ブール値がtrue
に設定されていない限り、終了保護は無効になっています。
高可用性クラスターの場合、デフォルトの終了保護設定は次のとおりです。
-
Amazon EMR コンソールによるクラスターの起動 — 終了保護はデフォルトで有効になっています。
-
AWS CLI
aws emr create-cluster
によるクラスターの起動 —--termination-protected
が指定されている場合を除き、終了保護は無効になります。 -
Amazon EMR API RunJobFlow コマンドによるクラスターの起動 -
TerminationProtected
ブール値がtrue
に設定されていない限り、終了保護は無効になっています。
実行中のクラスターに対する終了保護の設定
コンソールまたは AWS CLI を使用して、実行中のクラスターに対して終了保護を設定することができます。