1. ジョブ実行のフォールトトレランスFlink のエラー回復メカニズムは、実行レベルのフェイルオーバー戦略と実行グラフ レベルのジョブ再開戦略という複数のレベルに分かれています。エラーが発生すると、Flink はまず小規模なエラー回復メカニズムの起動を試みます。それでも対処できない場合は、より大規模なエラー回復メカニズムにアップグレードします。詳細については、以下のシーケンス図を参照してください。 タスク エラーが発生すると、TaskManager は RPC を介して JobManager に通知し、対応する実行のステータスを失敗に変更して、フェイルオーバー戦略をトリガーします。フェイルオーバー ポリシーが満たされた場合、JobManager は実行を再開します。それ以外の場合は、ExecutionGraph の失敗にアップグレードされます。 ExecutionGraph が失敗すると、失敗状態になり、再起動戦略によって再起動するか (再起動状態)、異常終了するか (失敗状態) が決定されます。 1.1 タスクフェイルオーバー戦略現在、タスク フェイルオーバー戦略には、RestartAll、RestartIndividualStrategy、RestartPipelinedRegionStrategy の 3 つがあります。 RestartAll: すべてのタスクを再起動することは、ジョブの一貫性を回復するための最も安全な戦略であり、他のフェイルオーバー戦略が失敗した場合のフォールバック戦略として使用されます。現在、デフォルトのタスク フェイルオーバー戦略です。 RestartPipelinedRegionStrategy: エラー タスクが配置されているリージョン内のすべてのタスクを再起動します。タスク領域は、タスクのデータ送信によって決定されます。データ送信のあるタスクは同じ領域に配置され、異なる領域間でのデータ交換は行われません。 RestartIndividualStrategy: 単一のタスクを再開します。タスクにデータ ソースが含まれていない場合、データを再ストリームできず、データが失われる可能性があります。少なくとも 1 回の配信セマンティクスの提供を考慮すると、この戦略の使用範囲は比較的限定されており、タスク間でデータ転送がないジョブにのみ適用されます。 1.2 ジョブ再開戦略タスク エラーによって最終的に完全な再起動がトリガーされた場合、ジョブの再起動戦略によってジョブを再開する必要があるかどうかが制御されます。 Flink は、ジョブ固有の 3 つの再起動戦略を提供します。 FixedDelayRestartStrategy: 指定された回数以内であれば実行の失敗を許可します。この回数を超えると、ジョブは失敗します。 FixedDelayRestartStrategy 再起動では、一定の遅延を設定して、頻繁な再試行によって発生する外部システムの負荷と不要なエラー ログを軽減できます。 FailureRateRestartStrategy: 指定された時間枠内で、指定された回数だけ実行が失敗することを許可します。この頻度を超えると、ジョブは失敗します。同様に、FailureRateRestartStrategy でも一定の再起動遅延を設定できます。 NoRestartStrategy: 実行が失敗した場合にジョブを直接失敗させます。 2. デーモンフォールトトレランスYARN 上の Flink のデプロイメント モードでは、主要なデーモンは JobManager と TaskManager です。JobManager の主な役割は、リソースを調整し、ジョブの実行を管理することです。これは、それぞれ ResourceManager デーモン スレッドと JobMaster デーモン スレッドによって実行されます。次の図に、3 つの関係を示します。 2.1 タスクマネージャーのフォールトトレランスResourceManager は、ハートビート タイムアウトによって TaskManager の障害を検出するか、クラスター マネージャーから通知を受けた場合、対応する JobMaster に通知し、新しい TaskManager を起動して置き換えます。 ResourceManager は Flink ジョブを気にしないことに注意してください。Flink ジョブがどのように反応するかを管理するのは JobMaster の責任です。 JobMaster は、ResourceManager からの通知を通じて TaskManager の障害を知ったり、ハートビートのタイムアウトを検出したりした場合、まず TaskManager をスロット プールから削除し、TaskManager で実行中のすべてのタスクを失敗としてマークします。これにより、Flink ジョブ実行のフォールト トレランス メカニズムがトリガーされ、ジョブが回復されます。 TaskManager のステータスはチェックポイントに書き込まれており、再起動後に自動的に復元されるため、データの不整合の問題は発生しません。 2.2. リソースマネージャのフォールトトレランスTaskManager がハートビート タイムアウトによって ResourceManager の障害を検出した場合、または ResourceManager がリーダーシップを失ったという通知を Zookeeper から受信した場合、TaskManager は新しいリーダーを探し、ResourceManager はタスクの実行を中断することなく、再起動してそのリーダーに登録します。 JobMaster がハートビート タイムアウトによって ResourceManager の障害を検出した場合、または ResourceManager がリーダーシップを失ったという通知を Zookeeper から受け取った場合、JobMaster は新しい ResourceManager がリーダーになるまで待機し、すべての TaskManager を再要求します。 TaskManager も正常に回復する可能性があることを考慮して、JobMaster によって新たに要求された TaskManager は、一定期間アイドル状態になった後に解放されます。 ResourceManager は、アクティブなコンテナー、使用可能な TaskManager、TaskManager と JobMaster 間のマッピング関係など、多くのステータス情報を保持します。ただし、この情報は真実ではなく、JobMaster と TaskManager とのステータス同期から取得できるため、この情報を永続化する必要はありません。 2.3 ジョブマスターのフォールトトレランスTaskManager がハートビート タイムアウトによって JobMaster の障害を検出した場合、または JobMaster がリーダーシップを失ったという通知を Zookeeper から受信した場合、TaskManager は独自のエラー回復をトリガーし、新しい JobMaster を待機します。一定期間経過しても新しい JobMaster が表示されない場合、TaskManager はそのスロットを空きとしてマークし、ResourceManager に通知します。 ResourceManager がハートビート タイムアウトによって JobMaster の障害を検出した場合、または JobMaster がリーダーシップを失ったという通知を Zookeeper から受信した場合、ResourceManager は TaskManager に障害を通知し、他のアクションは処理しません。 JobMaster はジョブ実行に重要な多くの状態を保存します。その中でも、JobGraph とユーザー コードは HDFS などの永続ストレージから取得され、チェックポイント情報は Zookeeper から取得され、タスク実行情報はジョブ全体が再スケジュールされるため復元されない可能性があり、保持されたスロットは ResourceManager の TaskManager の同期情報から復元されます。 2.4 同時障害YARN デプロイメント モードの Flink では、JobMaster と ResourceManager の両方が JobManager プロセス内にあるため、JobManager プロセスに問題がある場合は、通常、JobMaster と ResourceManager の同時障害です。その場合、TaskManager は次のように処理します。
新しい JobManager は、YARN のアプリケーション試行再試行メカニズムに依存して自動的に起動されることに注意してください。Flink で構成された YARN アプリケーション: keep-containers-across-application-attempts 動作によれば、TaskManager はクリーンアップされないため、新しく起動された Flink ResourceManager および JobMaster に再登録できます。 結論Flink のフォールト トレランス メカニズムは、Flink の信頼性と耐久性を保証します。具体的には、ジョブ実行フォールト トレランスとデーモン フォールト トレランスの 2 つの側面が含まれます。ジョブ実行のフォールト トレランスに関して、Flink は、障害が発生した場合に自動的に再試行するためのタスク レベルのフェイルオーバー戦略とジョブ レベルの再起動戦略を提供します。デーモンのフォールト トレランスに関しては、YARN モードでは、Flink は内部コンポーネントのハートビートと YARN モニタリングを通じて障害検出を実行します。 TaskManager の障害は、新しい TaskManager を申請してタスクまたはジョブを再起動することで回復できます。JobManager の障害は、クラスター マネージャーが新しい JobManager を自動的にプルアップし、TaskManager を新しいリーダー JobManager に再登録することで回復できます。 上記は、Flink のフォールト トレラント メカニズム、ジョブ実行、デーモンの詳細について簡単に説明したものです。Flink のフォールト トレラント メカニズム、ジョブ実行、デーモンの詳細については、123WORDPRESS.COM の他の関連記事をご覧ください。 以下もご興味があるかもしれません:
|
<<: MySQLのネクストキーロックのロック範囲についての簡単な説明
>>: jsを呼び出すいくつかの方法が整理され、使用が推奨されています
いつインストールするかprotoc コマンドを使用しても Protoc が見つからない場合は、インス...
目次1. データを準備するデータテーブルを作成するデータの挿入2. SQLドリル1. SQL文の強化...
最も人気のあるフロントエンド フレームワークの 1 つとして、Vue は多くのフロントエンド開発エン...
エラーの説明: 1. Linux (CentOS 7 64) システムに Nginx (1.18.0...
今日システムを再インストールした後、コンピューターに mysql を再インストールし、ZIP ファイ...
1. MySQL 8.0.12 バージョンのインストール手順。 1. ダウンロードhttps://d...
成果を達成する実装コードhtml <div>123WORDPRESS.COM</d...
関連記事: Win7 x64 に解凍版の mysql 5.7.18 winx64 をインストールする...
要点CSS resize プロパティを使用すると、要素のサイズ変更可能性を制御できます。サイズ変更を...
目次1. Antデザインビュー1. 公式ウェブサイトアドレス2. 使い方3.電子書籍テーブルを表示す...
1. CSS を使用して、小さな尖った角のチャット ダイアログ ボックスと尖った角の吹き出しを描画...
私は最近 Linux を学び始めました。Ma Ge の umask に関する Linux コースを読...
この記事では、マウスでカード内外のコンテンツを切り替えるためのjsの具体的なコードを紹介します。具体...
目次1. コア1. Domノードを取得する2. ノードの更新2.1 実践演習3. Domノードを削除...
1. 作成する [テーブル名] (フィールド1、フィールド2、...) 値 (値1、値2、...) ...