EKS 上での Amazon EMR の Flink を用いたスポットインスタンスの適切な廃止 - Amazon EMR

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

EKS 上での Amazon EMR の Flink を用いたスポットインスタンスの適切な廃止

EKS 上の Amazon EMR で Flink を使用すると、タスクリカバリまたはスケーリング操作中のジョブの再起動時間を改善できます。

EKS リリース 6.15.0 以降上の Amazon EMR では、EKS 上の Amazon EMR スポットインスタンスのタスクマネージャーの、Apache Flink を用いることによる適切な廃止をサポートしています。この機能の一部として、EKS 上の Flink を搭載した Amazon EMR には以下の機能が備わっています。

  • ジャストインタイムチェックポイント - Flink のストリーミングジョブは、スポットインスタンスの中断に対応したり、実行中のジョブのジャストインタイム (JIT) チェックポイントを実行したり、これらのスポットインスタンスで追加のタスクをスケジュールしないようにできます。JIT チェックポイントは、デフォルトおよびアダプティブスケジューラーでサポートされています。

  • 複合再起動メカニズム - 複合再起動メカニズムは、ターゲットリソースの並列処理、または現在設定されているウィンドウの終わりに到達した場合に、ベストエフォートベースでジョブの再起動を試みます。これにより、複数のスポットインスタンス終了によりジョブが連続して再起動されるのを防ぐこともできます。複合再起動メカニズムはアダプティブスケジューラーでのみ使用できます。

これらの機能には次のメリットがあります。

  • スポットインスタンスを利用してタスクマネージャーを実行することで、クラスター費用を削減できます。

  • スポットインスタンスタスクマネージャーの活性が向上することで耐障害性が強化され、ジョブスケジューリング効率が向上します。

  • スポットインスタンス終了後の再起動回数が減るため、Flink ジョブのアップタイムが増えます。

以下の例を考えてみましょう。Apache Flink を実行している EKS クラスターに Amazon EMR をプロビジョニングし、ジョブマネージャーにはオンデマンドノードを、タスクマネージャーにはスポットインスタンスノードを指定するとします。終了の 2 分前に、タスクマネージャーは中断通知を受け取ります。

このシナリオでは、ジョブマネージャーはスポットインスタンスの中断信号を処理し、スポットインスタンス上の追加タスクのスケジューリングをブロックし、ストリーミングジョブの JIT チェックポイントを開始します。

次にジョブマネージャーは、現在の再起動間隔ウィンドウで現在のジョブの並列処理を満たす新しいリソースが十分に利用可能になった場合にのみ、ジョブグラフを再起動します。再起動ウィンドウ間隔は、スポットインスタンスの交換期間、新しいタスクマネージャーポッドの作成、およびジョブマネージャーへの登録に基づいて決定されます。

適切な廃止を使用するには、Apache Flink を実行している EKS クラスター上の Amazon EMR にストリーミングジョブを作成して実行します。次の例のように、少なくとも 1 つのスポットインスタンスでスケジュールされたアダプティブスケジューラーとタスクマネージャーを有効にします。ジョブマネージャーにはオンデマンドノードを使用する必要があります。また、スポットインスタンスが少なくとも 1 つあれば、タスクマネージャーにもオンデマンドノードを使用できます。

apiVersion: flink.apache.org/v1beta1 kind: FlinkDeployment metadata: name: deployment_name spec: flinkVersion: v1_17 flinkConfiguration: taskmanager.numberOfTaskSlots: "2" cluster.taskmanager.graceful-decommission.enabled: "true" execution.checkpointing.interval: "240s" jobmanager.adaptive-scheduler.combined-restart.enabled: "true" jobmanager.adaptive-scheduler.combined-restart.window-interval : "1m" serviceAccount: flink jobManager: resource: memory: "2048m" cpu: 1 nodeSelector: 'eks.amazonaws.com/capacityType': 'ON_DEMAND' taskManager: resource: memory: "2048m" cpu: 1 nodeSelector: 'eks.amazonaws.com/capacityType': 'SPOT' job: jarURI: flink_job_jar_path

このセクションでは、廃止のニーズに合わせて指定できる大部分の構成について説明します。

キー 説明 デフォルト値 許容値
cluster.taskmanager.graceful-decommission.enabled

タスクマネージャーの適切な廃止を有効にします。

true true, false
jobmanager.adaptive-scheduler.combined-restart.enabled

アダプティブスケジューラー内の複合、再起動メカニズムを有効にします。

false true, false
jobmanager.adaptive-scheduler.combined-restart.window-interval

ジョブのマージされた再起動を実行するための複合再起動ウィンドウ間隔。単位のない整数はミリ秒として解釈されます。

1m 例: 3060s3m1h