Flink HA ソリューションの紹介

1. Flink HA ソリューションの概要

各 Flink クラスターには JobManager が 1 つだけあり、単一障害点が存在します。FlinkにはYARN、スタンドアロン、ローカルの3つのモードがあり、このうちYARNとスタンドアロンはクラスタモード、ローカルはスタンドアロンモードを指します。ただし、Flink は、クラスターが障害から回復できるように、YARN モードとスタンドアロン モードに HA メカニズムを提供します。ここでは主にYARNモードでのHAソリューションを紹介します。

Flink は HA モードとジョブの例外回復をサポートします。これら 2 つの機能は ZooKeeper に大きく依存しています。これらを使用する前に、ユーザーは "flink-conf.yaml" 設定ファイルで ZooKeeper を設定する必要があります。ZooKeeper を設定するためのパラメータは次のとおりです。

high-availability: zookeeper
high-availability.zookeeper.quorum: ZooKeeperIP地址:24002
high-availability.storageDir: hdfs:///flink/recovery

ヤーンモード

Flink の JobManager と YARN の Application Master (略して AM) は同じプロセスの下にあります。YARN の ResourceManager は AM を監視します。AM が異常な場合、YARN は AM を再起動します。起動後、すべての JobManager メタデータが HDFS から復元されます。ただし、復旧期間中は古いサービスを実行したり、新しいサービスを送信したりすることはできません。ジョブの実行に関する情報など、ジョブマネージャーのメタデータは ZooKeeper 上にまだ存在しており、新しいジョブマネージャーに提供されます。TaskManager の失敗については、JobManager 上の Akka の DeathWatch メカニズムによって監視および処理されます。TaskManager が失敗した場合は、YARN からコンテナを再申請し、TaskManager を作成します。

スタンドアロンモード

スタンドアロン モードのクラスターの場合、複数のジョブ マネージャーを開始でき、ZooKeeper を通じてリーダーが実際のジョブ マネージャーとして選出されます。このモードでは、1 つのプライマリ ジョブ マネージャー (リーダー ジョブ マネージャー) と複数のスタンバイ ジョブ マネージャー (スタンバイ ジョブ マネージャー) を設定できます。これにより、プライマリ ジョブ マネージャーに障害が発生した場合に、スタンバイ ジョブ マネージャーの 1 つが主な責任を引き継ぐことができます。実行系ジョブマネージャーと待機系ジョブマネージャーの回復プロセスを次の図に示します。
回復プロセス
ここに画像の説明を挿入

タスクマネージャーの回復

TaskManager の失敗については、JobManager 上の Akka の DeathWatch メカニズムによって監視および処理されます。TaskManager が失敗すると、JobManager は新しい TaskManager を作成し、ビジネスを新しい TaskManager に移行する責任を負います。

JobManager の回復

Flink の JobManager と YARN の Application Master (略して AM) は同じプロセスの下にあります。YARN の ResourceManager は AM を監視します。AM が異常な場合、YARN は AM を再起動します。起動後、すべての JobManager メタデータが HDFS から復元されます。ただし、回復期間中は古いサービスを実行できず、新しいサービスを送信することもできません。

ジョブ回復

ジョブのリカバリでは、Flink 構成ファイルで再起動戦略を構成する必要があります。現在、再起動戦略には、固定遅延、失敗率、およびなしの 3 つがあります。ジョブは、固定遅延と失敗率が設定されている場合にのみ再開できます。さらに、再起動戦略が none に設定されているが、ジョブがチェックポイントに設定されている場合、再起動戦略はデフォルトで固定遅延に変更され、再試行回数は設定項目「restart-strategy.fixed-lay」になります。 .attempts」は「Integer. MAX_VALUE」として設定されます。
3 つの戦略に関する具体的な情報については、Flink 公式 Web サイト ( https://ci.apache.org/projects/flink/flink-docs-release-1.15/dev/task_failure_recovery.html ) を参照してください。構成戦略のリファレンスは次のとおりです。

restart-strategy: fixed-delay
restart-strategy.fixed-delay.attempts: 3
restart-strategy.fixed-delay.delay: 10 s

次のシナリオで異常が発生すると、ジョブが再開されます。

  • JobManager が失敗すると、新しい JobManager が起動するまですべてのジョブが停止し、すべてのジョブが再開されます。
  • タスクマネージャーが失敗すると、タスクマネージャー上のすべてのジョブが停止され、利用可能なリソースを待った後に再起動されます。
  • ジョブのタスクが失敗すると、ジョブ全体が再起動されます。

注:ジョブ構成の再起動戦略の詳細については、https://ci.apache.org/projects/flink/flink-docs-release-1.15/ops/jobmanager_high_availability.htmlを参照してください。

2. コンポーネント間の関係

Flink は YARN 管理に基づくクラスター モードをサポートしており、このモードでは、Flink は YARN 上のアプリケーションとして YARN に送信されて実行されます。Flink の YARN ベースのクラスター展開を以下の図に示します。

Flink の YARN ベースのクラスター展開
ここに画像の説明を挿入

  1. Flink YARN クライアントは、まず YARN クラスターを開始するのに十分なリソースがあるかどうかを確認し、リソースが十分である場合は、jar パッケージと構成ファイルを HDFS にアップロードします。
  2. Flink YARN Clientは、まずYARN Resource Managerと通信し、アプリケーションマスターのコンテナ(以下AM)の起動を申請し、AMを起動します。YARN のすべてのノード マネージャーが HDFS に jar パッケージと構成ファイルをダウンロードすると、AM が正常に開始されたことになります。
  3. 起動プロセス中に、AM は YARN の RM と対話し、RM から必要なタスク マネージャー コンテナーを申請し、タスク マネージャー コンテナーの申請後にタスク マネージャー プロセスを開始します。
  4. Flink YARN クラスターでは、AM と Flink JobManager は同じコンテナー内にあります。AM は、HDFS 共有を通じて各タスク マネージャーにジョブ マネージャーの RPC アドレスを通知し、タスク マネージャーが正常に起動すると、ジョブ マネージャーに登録されます。
  5. すべてのタスクマネージャーがジョブマネージャーに正常に登録され、Flink の YARN ベースのクラスターが正常に起動すると、Flink YARN クライアントは、後続のマッピング、スケジュール、計算処理のために Flink ジョブを Flink JobManager に送信できます。

おすすめ

転載: blog.csdn.net/weixin_43114209/article/details/131676607