Managed Service for Apache Flink に耐障害性を実装する - Managed Service for Apache Flink

Amazon Managed Service for Apache Flink は、以前は Amazon Kinesis Data Analytics for Apache Flink と呼ばれていました。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Managed Service for Apache Flink に耐障害性を実装する

チェックポインティングは、Amazon Managed Service for Apache Flink でフォールトトレランスを実装するために使用される方法です。チェックポイントは、 up-to-date実行中のアプリケーションのバックアップであり、予期しないアプリケーションの中断やフェイルオーバーからすぐに復旧するために使用されます。

Apache Flink アプリケーションでのチェックポイントの詳細については、Apache Flink ドキュメントの「チェックポイント」を参照してください。

「スナップショット」は、アプリケーションの状態を手動で作成して管理するバックアップです。スナップショットを使うと、「UpdateApplication」の呼び出しによってアプリケーションを以前の状態に復元できます。詳細については、「スナップショットを使用してアプリケーションのバックアップを管理する」を参照してください。

アプリケーションのチェックポイント機能が有効になっていると、アプリケーションが予期せず再起動した場合にアプリケーションデータのバックアップを作成して読み込むことができるため、耐障害性が確保されます。このような予期しないアプリケーションの再起動は、ジョブの予期しない再起動、インスタンスの障害などが原因である可能性があります。これにより、アプリケーションは、これらの再起動時に無障害実行と同じセマンティクスを持つことになります。

スナップショットがアプリケーションに対して有効で、アプリケーションの を使用して設定されている場合ApplicationRestoreConfiguration、サービスはアプリケーションの更新中、またはサービス関連のスケーリングやメンテナンス中に、厳密に 1 回処理セマンティクスを提供します。

Managed Service for Apache Flink でチェックポイントを設定する

アプリケーションのチェックポインティング動作を構成できます。チェックポイントの状態を持続させるかどうか、チェックポイントに状態を保存する頻度、1 つのチェックポイント操作の終了から別のチェックポイント操作の開始までの最小間隔を定義できます。

CreateApplication または UpdateApplicationAPIオペレーションを使用して、次の設定を行います。

  • CheckpointingEnabled」— アプリケーションでチェックポイントが有効になっているかどうかを示します。

  • CheckpointInterval」— チェックポイント (パーシスタンス) 操作の間隔をミリ秒単位で含みます。

  • ConfigurationType」— デフォルトのチェックポイント動作を使用するには、この値を「DEFAULT」に設定します。この値を「CUSTOM」に設定すると、他の値を設定できます。

    注記

    デフォルトのチェックポイント動作は次のとおりです。

    • CheckpointingEnabled: true

    • CheckpointInterval: 60,000

    • MinPauseBetweenCheckpoints: 5000

    ConfigurationType を に設定するとDEFAULT、 を使用するか、アプリケーションコードの値を設定して他の値に設定しても AWS Command Line Interface、前述の値が使用されます。

    注記

    Flink 1.15 以降では、Apache Flink 用 Managed Serviceは、アプリケーションの更新、スケーリング、停止などの自動スナップショット作成時に stop-with-savepoint を使用します。

  • MinPauseBetweenCheckpoints — 1 つのチェックポイント操作が終了してから別のチェックポイント操作が開始されるまでの最小時間 (ミリ秒単位)。この値を設定すると、チェックポイントオペレーションが CheckpointInterval よりも時間がかかる場合でも、アプリケーションは継続的にチェックポイント機能を実行できなくなります。

チェックポイントAPIの例を確認する

このセクションでは、アプリケーションのチェックポイントを設定するためのAPIアクションのリクエスト例を示します。API アクションの入力にJSONファイルを使用する方法については、「」を参照してくださいManaged Service for Apache Flink APIのサンプルコード

新しいアプリケーションのチェックポイントを設定する

以下の「CreateApplication」アクションのリクエスト例では、アプリケーションの作成時にチェックポインティングを設定しています。

{ "ApplicationName": "MyApplication", "RuntimeEnvironment":"FLINK-1_19", "ServiceExecutionRole":"arn:aws:iam::123456789123:role/myrole", "ApplicationConfiguration": { "ApplicationCodeConfiguration":{ "CodeContent":{ "S3ContentLocation":{ "BucketARN":"arn:aws:s3:::amzn-s3-demo-bucket", "FileKey":"myflink.jar", "ObjectVersion":"AbCdEfGhIjKlMnOpQrStUvWxYz12345" } }, "FlinkApplicationConfiguration": { "CheckpointConfiguration": { "CheckpointingEnabled": "true", "CheckpointInterval": 20000, "ConfigurationType": "CUSTOM", "MinPauseBetweenCheckpoints": 10000 } } }

新しいアプリケーションのチェックポイントを無効にする

以下の「CreateApplication」アクションのリクエスト例では、アプリケーションの作成時にチェックポインティングを無効にします。

{ "ApplicationName": "MyApplication", "RuntimeEnvironment":"FLINK-1_19", "ServiceExecutionRole":"arn:aws:iam::123456789123:role/myrole", "ApplicationConfiguration": { "ApplicationCodeConfiguration":{ "CodeContent":{ "S3ContentLocation":{ "BucketARN":"arn:aws:s3:::amzn-s3-demo-bucket", "FileKey":"myflink.jar", "ObjectVersion":"AbCdEfGhIjKlMnOpQrStUvWxYz12345" } }, "FlinkApplicationConfiguration": { "CheckpointConfiguration": { "CheckpointingEnabled": "false" } } }

既存のアプリケーションのチェックポイントを設定する

以下の「UpdateApplication」アクションリクエスト例では、既存のアプリケーションのチェックポインティングを設定しています。

{ "ApplicationName": "MyApplication", "ApplicationConfigurationUpdate": { "FlinkApplicationConfigurationUpdate": { "CheckpointConfigurationUpdate": { "CheckpointingEnabledUpdate": true, "CheckpointIntervalUpdate": 20000, "ConfigurationTypeUpdate": "CUSTOM", "MinPauseBetweenCheckpointsUpdate": 10000 } } } }

既存のアプリケーションのチェックポイントを無効にする

以下の「UpdateApplication」アクションのリクエスト例では、既存のアプリケーションのチェックポインティングを無効にします。

{ "ApplicationName": "MyApplication", "ApplicationConfigurationUpdate": { "FlinkApplicationConfigurationUpdate": { "CheckpointConfigurationUpdate": { "CheckpointingEnabledUpdate": false, "CheckpointIntervalUpdate": 20000, "ConfigurationTypeUpdate": "CUSTOM", "MinPauseBetweenCheckpointsUpdate": 10000 } } } }