Flink ExecutionGraph コア オブジェクト

目次

ExectionGraph コア オブジェクト

1.実行ジョブ頂点

2.実行頂点

3.中間結果

4.中間結果パーティション

5.実行エッジ

6.実行


前回の記事ではStreamGraphJobGraphを分析しました。この記事では、JobGraph の次のステップである ExecutionGraph のコア オブジェクトを分析します。

ExecutionGraph は、Flink ジョブの実行をスケジュールするためのコア データ構造であり、ジョブ内で並行して実行されるすべてのタスク情報、タスク間の相関関係、およびデータ フロー関係が含まれています。

StreamGraph と JobGraph は Flink クライアントで生成され、Flink クラスターに送信されます。JobMaster 上で JobGraph から ExecutionGraph への変換が完了します。変換プロセス中の主な変更点は次のとおりです。

  1. 並列処理の概念を追加して、真にスケジュール可能なグラフ構造にする

  2. JobVertexに対応するExecutionJobVertexやExecutionVertex、IntermediateDataSetに対応するIntermediateResultやIntermediateResultPartitionなどが生成され、これらのクラスを通じて並列化が実現される。

    実行グラフ図

ExecutionGraph はすでにタスクのスケジュールに使用できます。上の図からわかるように、Flink は図に基づいて 1 対 1 に対応する ExecutionVertex を生成します。各タスクは ExecutionGraph の ExecutionVertex に対応します。タスクは、図の IntermediateResult と ExecutionEdge に対応するために、InputGate、InputChannel、ResultPartition を使用します。

ExectionGraph コア オブジェクト

ExecutionGraph のコア オブジェクトは、ExecutionJobVertex、ExecutionVertex、IntermediateResult、IntermediateResultPartition、ExecutionEdge、Execution です。

1.実行ジョブ頂点

このオブジェクトは JobGraph の JobVertex と 1 対 1 に対応しており、ExecutionVertex のセットも含まれており、その数は JobVertex に含まれる StreamNode の並列度に一致します。の場合、ExecutionJobVertex には 5 つの ExecutionVertex も含まれます。

ExecutionJobVertex は、JobVertex を ExecutionJobVertex にカプセル化し、ExecutionVertex、Execution、IntermediateResult、IntermediateResultPartition を順番に作成して ExecutionGraph を強化するために使用されます。

ExecutionJobVertex のコンストラクターでは、まず、対応する JobVertex の同時実行性に基づいて、対応する数の ExecutionVertex が生成されます。ExecutionVertex の 1 つは、ExecutionJobVertex の同時サブタスクを表します。次に、JobVertex の元の中間結果 IntermediateDataSet を ExecutionGraph の IntermediateResult に変換します。

2.実行頂点

ExecutionJobVertex はジョブを並列化し、並列実行できるインスタンスを構築します。並列実行の各インスタンスは ExecutionVetex です。

ExecutionVertex を構築するとき、ExecutionVertex の出力 IntermediateResult も構築されます。そしてExecutionEdgeをIntermediateResultPartitionとして出力します

ExecutionVertex のコンストラクターでは、最初に IntermediateResultPartition が作成され、IntermediateResult.setPartition() によって IntermediateResult と IntermediateResultPartition の間の関係が確立され、次に Execution が生成され、関連リソースが構成されます。

3.中間結果

IntermediateResult は、中間結果セットとも呼ばれます。このオブジェクトは、ExecutionJobVertex の出力を表す論理概念であり、JobGraph の IntermediateDataSet に対応します。同様に、ExecutionJobVertex は、現在の出力エッジ (JobEdge) の数に応じて、複数の中間結果を持つことができます。 JobVertex にはあります。)

中間結果セットには、複数の中間結果パーティション IntermediateResultPartition が含まれます。その数は、JobVertex の同時実行度、またはオペレーターの並列度に等しいです。

4.中間結果パーティション

IntermediateResultPartition (中間結果パーティションとも呼ばれます) は、ExecutionVertex 出力結果を表し、ExecutionEdge に関連付けられます。

5.実行エッジ

上流で生成された IntermediateResultPartition に接続された ExecutionVertex の入力を表します。Execution は、1 つの IntermediateResultPartition と 1 つの ExecutionVertex にのみ対応します。ExecutionVertex は複数の ExecutionEdge を持つことができます

6.実行

ExecutionVertex は各 Task のテンプレートに相当し、実際に実行する際には ExecutionVertex の情報が 1 つの Execution にパッケージ化され、1 つの ExecutionVertex の実行が 1 回実行されます。タスクのデプロイおよびジョブマネージャーとタスクマネージャー間のタスク実行ステータスの更新では、ExecutionAttemptID を使用してインスタンスを識別します。障害が発生した場合、またはデータを再計算する必要がある場合、ExecutionVertex は複数の ExecutionAttempID を持つ可能性があります。実行は ExecutionAttempID によって一意に識別されます。

おすすめ

転載: blog.csdn.net/qq_24186017/article/details/127153010