2017-08-17 1 views
0

私は依然として原子性と鍵の配布を完全には理解していませんでした。Flinkの状態のバックエンドのキーatomicyとdistribution

つまり、マップ状態を含むkeyby-> flatmapのグラフを考えてください。並列性は4タスクスロットで1に設定されていますが、分散環境で各キーが(1つのタスクスロット内に) 、それは原子単位ですか? すべてのヘルパーに事前に感謝します。

Keyed Stateは、キーごとに1つの状態区画で区切られた、またはシャードされたオペレータ状態と考えることができます。各キー状態は論理的には<parallel-operator-instance, key>という一意のコンポジットにバインドされており、各キーはキー付き演算子の1つのパラレルインスタンスに正確に属しているため、これは単に<operator, key>と考えることができます。

Keyed Stateは、さらに、いわゆるKey Groupsに編成されています。キーグループは、FlinkがKeyed Stateを再配布できるアトミックユニットです。定義されている最大並列度とまったく同じ数のキーグループが存在します。実行中、キー付き演算子の各パラレルインスタンスは、1つ以上のキーグループ用のキーで動作します。

答えて

2

同じ並列演算子の場合、同じキーを持つすべてのイベントは、同じ演算子インスタンス(つまり同じタスクスロット内)で処理されます。

Flinkはキーをキーグループに編成し、すべてのキー(およびその状態)は特定のキーグループに永続的に関連付けられます。さらに、各タスクスロットは、1つまたは複数のキーグループのキーの処理を担当します。

引用したドキュメントでは、「アトミックユニット」とは「不可分」という意味で使用されています。これは、Flinkジョブが再スケーリングされたとき(つまり、並列処理が変更されたとき)

Flinkジョブを再スケーリングすると、並列演算子のインスタンス数が変更されます。再配置状態が必要です。この状態での再配布(または再作成)が行われる粒度は、キーによって重要ではなく、より大きくなります。これはキーグループのレベルで行われます。したがって、キーグループは、キー入力状態の再分配の原子単位です。

このトピックの詳細については、the section of a data Artisans blog post about "State in Flink and Rescaling Stateful Streaming Jobs"を参照してください。

+0

恐ろしく、これでクリアされます。とても有難い。 – Eliran

関連する問題