Flinkの耐障害性機構は障害時にプログラムを回復しそれらの実行を続けます。マシーンのハードウェア障害、ネットワーク障害、一時的なプログラムの障害などを含むそのような障害。
データセット API内のプログラムのための耐障害性は、実行の失敗の再試行によって動作します。ジョブが失敗したと宣言される前にFlinkが実行を再試行する回数は、execution retries パラメータによって設定可能です。値0は事実上耐障害性が無効にされていることを意味します。
耐障害性を有効にするには、execution retries を0より大きな値に設定します。一般的な選択は3つの値です。
この例はFlinkデータセットプログラムのための実行の再試行を設定する方法を示します。
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.setNumberOfExecutionRetries(3);
val env = ExecutionEnvironment.getExecutionEnvironment()
env.setNumberOfExecutionRetries(3)
実行の再試行の回数のデフォルト値と再試行の遅延をflink-conf.yaml
内で定義することもできます:
execution-retries.default: 3
実行の再試行は遅延するように設定することもできます。再試行の遅延は実行の失敗の後で再実行がすぐには開始されないが一定の遅延の後でのみ開始されることを意味します。
再試行の遅延はプログラムの外部システムとの相互作用、例えば接続あるいはトランザクションの待ちが再実行が試みられる前にタイムアウトに達する必要がある場合に役に立ちます。
以下のように各プログラムについて再試行の遅延を設定することができます (例はデータストリームAPIを示します - データセットAPIも同様に動作します):
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.getConfig().setExecutionRetryDelay(5000); // 5000 milliseconds delay
val env = ExecutionEnvironment.getExecutionEnvironment()
env.getConfig.setExecutionRetryDelay(5000) // 5000 milliseconds delay
再試行の遅延についてのデフォルト値もflink-conf.yaml
の中で定義することができます:
execution-retries.delay: 10 s