Amazon EMR クラスターを誤ったシャットダウンから保護するための終了保護の使用 - Amazon EMR

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) のロケーションにデータ出力を書き込み、ビジネス継続性の要件に応じてバックアップ戦略を作成します。

削除保護は、以下のアクションによるクラスターリソースのスケールに影響することはありません。

終了保護と 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 クラスターの一部としてインスタンスを作成し、DisableApiTerminationfalse になるように 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 クラスターに送信する」を参照してください。

ActionOnFailureCANCEL_AND_WAIT に設定したステップが失敗した場合、ステップ実行後の終了が有効になっていると、クラスターは後続のステップを実行せずに終了します。

ActionOnFailureTERMINATE_CLUSTER に設定されているステップが失敗した場合は、以下の設定の表で結果を確認してください。

ActionOnFailure ステップ実行後の終了 終了保護 結果

TERMINATE_CLUSTER

有効

無効

クラスターが終了

有効

有効

クラスターが終了

無効

有効

クラスターの稼働が継続

無効

無効

クラスターが終了

終了保護とスポットインスタンス

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 に設定されていない限り、終了保護は無効になっています。

Console
コンソールでクラスターを作成するときに、終了保護のオンとオフを切り替えるには
  1. AWS Management Consoleにサインインし、Amazon EMR コンソール (https://console.aws.amazon.com/emr) を開きます。

  2. 左側のナビゲーションペインの [EMR on EC2] で、[クラスター] を選択し、[クラスターの作成] を選択します

  3. [EMR リリースバージョン] で、[emr-6.6.0] 以降を選択します。

  4. [クラスターの終了とノードの置換] で、[終了保護を使用] があらかじめ選択されていることを確認するか、選択を解除して無効にします。

  5. クラスターに適用するその他のオプションを選択します。

  6. クラスターを起動するには、[クラスターの作成] を選択します。

AWS CLI
AWS CLI を使用してクラスターを作成するときに終了保護のオンとオフを切り替えるには
  • AWS CLI を使用して、create-cluster コマンドと --termination-protected パラメータで終了保護を有効にしたクラスターを起動できます。削除保護はデフォルトで無効になっています。

    次の例では、削除保護を有効にしたクラスターを作成します。

    注記

    読みやすくするために、Linux 行連続文字 (\) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。

    aws emr create-cluster --name "TerminationProtectedCluster" --release-label emr-7.3.0 \ --applications Name=Hadoop Name=Hive Name=Pig \ --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge \ --instance-count 3 --termination-protected

    AWS CLI での Amazon EMR コマンドの使用の詳細については、https://docs.aws.amazon.com/cli/latest/reference/emr を参照してください。

実行中のクラスターに対する終了保護の設定

コンソールまたは AWS CLI を使用して、実行中のクラスターに対して終了保護を設定することができます。

Console
コンソールで、実行中のクラスターの終了保護のオンとオフを切り替えるには
  1. AWS Management Consoleにサインインし、Amazon EMR コンソール (https://console.aws.amazon.com/emr) を開きます。

  2. 左側のナビゲーションペインの [EMR on EC2][クラスター] を選択し、更新するクラスターを選択します。

  3. クラスターの詳細ページの [プロパティ] タブで、[クラスターの終了] を見つけて [編集] を選択します。

  4. [終了保護を使用] チェックボックスを選択または選択解除」して、機能をオンまたはオフにします。次に [変更の保存] を選択して確定します。

AWS CLI
AWS CLI を使用して実行中のクラスターの終了保護のオンとオフを切り替えるには
  • AWS CLI を使用して実行中のクラスターで終了保護を有効にするには、modify-cluster-attributes コマンドと --termination-protected パラメータを使用します。削除保護を無効にするには、--no-termination-protected パラメータを使用します。

    次の例では、ID j-3KVTXXXXXX7UG のクラスターで削除保護を有効にします。

    aws emr modify-cluster-attributes --cluster-id j-3KVTXXXXXX7UG --termination-protected

    次の例では、同じクラスターで削除保護を無効にします。

    aws emr modify-cluster-attributes --cluster-id j-3KVTXXXXXX7UG --no-termination-protected