FLINK州可能性は、データベースを交換するには?

ステートフルフォールトトレラントデータの整合性を確保するだけでなく、コンピューティング、リアルタイムコンピューティングの本質的な特徴の一つであり、Googleのデータフロー、FLINK、スパーク(構造)ストリーミングなどの人気のリアルタイム計算エンジンは、カフカストリームは、すべての州を提供するために構築されましたそれはサポートしています。状態は、リアルタイム・アプリケーションの導入は、店舗のメタデータとの中間データへの外部データベースに依存することはできませんいくつかのケースでも、業界はできません助けしかしになる状態、との直接の結果データを保存することができます考える:状態とデータベースの関係は何ですか?それが行う国家でデータベースを交換することは可能ですか?

この問題に関して、FLINKコミュニティは比較的早期に探求し始めています。全体的に、FLINKコミュニティの努力は二行に分けることができます。一つはQueryableStateがあること、アクセスするクエリインターフェイスへの機能のジョブの実行により、国の仕事で、2番目がオフラインのクエリと変更状態へのオフラインダンプファイル(セーブポイント)を介してですセーブポイントプロセッサAPIの今後の導入という能力。

QueryableState

FLINK 1.2 2017年にリリースされたバージョンでは、FLINK特性QueryableStateは、ユーザーがアプリケーションは、ケースの状態以外の外部メモリ記憶媒体の完全に独立しFLINKことができることを意味する[1]の特定のクライアントの作業状態の内容を照会することを可能にするために導入しました計算の結果にリアルタイムでアクセスを提供する能力の下で。

データベース.JPG

のみ照会可能状態により、リアルタイムのデータアクセスを提供

より理想主義的なビジョンもののQueryableStateが、基本的なアーキテクチャの変更や機能への依存度が比較的限られているが、それはベータ版にあったし、本番環境で使用することはできません。この問題に対処するために、テンセントエンジニアヤン前にいくつかの時間は、[2] QueryableState改善計画を提案しました。メッセージリストで、コミュニティはデータベースが議論されたかどうかQueryableStateの場所と異なる視点の出現に使用されます。以下のように要約データベースとしての主な利点と欠点国家の個人的な意見を兼ね備えています。

利点:

  • データ待ち時間を下げます。一般的な必要性で結果FLINKアプリケーションは、このようなトリガ出力ウィンドウの計算のタイミングとして、外部のデータベースに同期させると、この通常同期されたタイミングがリアルタイムとリアルタイムクエリで計算する主要な、いくつかの遅延をもたらすことは恥ずかしいではありません状況、および直接国家は、この問題を回避することができます。
  • 強力なデータの一貫性を保証します。外部記憶装置の特性に応じて、提供FLINKコネクタまたはカスタムSinkFunctionの一貫性の保証も異なっています。たとえば、複数行取引のHBaseをサポートしていない、FLINKだけ冪等のビジネスロジック正確ワンス配達を保証することができます。これとは対照的に、その後の状態は正常に適切にかならず一度配信保証を持っています。
  • 資源保存。外部データストレージを同期化する必要性を減少させることによって、私たちはもちろんのコストやネットワーク伝送シーケンスを、保存することができ、追加のデータベースもコストを節約することができます。

短所:

  • SLA保証の欠如。データベースの技術は非常に成熟国家のこの時点で利用可能で蓄積、フォールトトレランス、および運用・保守の多くを、持っても、原始時代に相当しています。また、ビューの配置の観点から、FLINKジョブがエラーやメンテナンス、反復バージョンが発生した時刻を自動的にダウンさせるために再起動して、データアクセスの高可用性データベースを達成することはできません。
  • それは、仕事の不安定につながる可能性があります。アドホッククエリでは考慮されていなかったがスキャンし、大きな負荷システムをもたらすデータの大きさを誇張するために戻すために必要になることがあり、それは、ジョブの正常な実行に影響する可能性があります。でも、合理的なクエリは、同時事情も多数業務の効率に影響を与える可能性があります。
  • データストレージには大きすぎることはできません。国営タスクマネージャは、主総会を超える状態が不十分なタスクマネージャOOMやディスクスペースで、その結果、ローカルメモリやディスクに保存されています。大きなチェックポイントそのほかの国家の手段では、主要なチェックポイントがタイムアウトすることがありますし、長いジョブ回復が有意に延長されました。
  • サポートする唯一の最も基本的なクエリを。などなく、同じコンピューティングパワーの機能を提供するために、リレーショナルデータベースなどのような状態は、最も単純なデータ構造クエリは、述語プッシュダウン最適化技術をサポートしていません。
  • 唯一読み取ることができ、変更されません。状態はあなたが本当に達成するためにのみ、次のセーブポイントプロセッサのAPIを介して状態を変更したい場合、ジョブ自体が、変更することができた場合にのみ実行します。

全体的に、現在の欠点国家の代わりに、はるかにその利点よりも、データベースや、あまり厳しい雇用データの可用性の一部について、データベースとして国家の使用は、完全に合理的です。場所によっては、FLINK状態は完全にデータベースの可能性を置き換える短い時間で見るのは難しいかもしれないが、データベースへの状態は、データアクセス機能で方向を疑問視する必要はありません。

セーブポイントプロセッサのAPI

セーブポイントプロセッサのAPI(FLIP-42 [3]を参照)、最近提案された新しい機能のコミュニティで、オフラインを使用した分析のための国家セーブポイントダンプファイルに、データから直接初期のセーブポイントを作成したり、修正します。状態管理のFLINK国家発展属しセーブポイントプロセッサのAPI。QueryableStateがDSLの場合はDMLセーブポイントのプロセッサのAPIが最も重要な部分であるが、その後、FLINK州進化は、DMLです。

先行セーブポイントプロセッサAPIその第三者ブラボープロジェクト[4]、主要なアイデアやセーブポイントデータセットの変換を提供する能力は、典型的なアプリケーションはデータセットセーブポイントに読み込まれ、データセットで変更して、新しいセーブポイントを書き込むこと。これは、次のシナリオに適しています:

  • そのモードやルールを勉強する状態のジョブ解析
  • トラブルシューティングや監査
  • 初期状態のための新しいアプリケーションの構築
  • 次のような変更セーブポイント、

    • 並列処理ジョブチェンジの最大の度合い
    • スキーマは巨大であることを変更します
    • 問題の状態補正

ダンプファイルの状態としてセーブポイント、クエリにセーブポイントプロセッサのAPI関数によって公開されるとオフラインのデータベースと同様のデータを、変更が、コンセプトと、典型的なリレーショナルデータの状態の概念はまだ別の、FLIP-43はまた、これらの違いを行わがたくさんあることができます類推と要約。

まず、オペレータの物理的な記憶状態セーブポイントの複数の組が、状態これはデータベースに類似している別の名前空間の間で異なるオペレータ独立したテーブルです。セーブポイントは、我々は、対応するデータベースを得ることができ、単一のオペレータは、名前空間は対応しています。

データベース セーブポイント
名前空間 UID
状態

しかし、テーブル、セーブポイントでそれに対応する概念は国家の種類によって変化します。状態は、オペレータ状態、キー付き状態および状態ブロードキャストオペレータ状態状態ブロードキャストおよび非パーティション状態、すなわち、ない描か状態キーパーティション、および逆キー付き状態として分配属する状態に属する3種類、有します。非パーティション状態のために、彼は状態テーブル、テーブル内の行の要素である各状態であるパー​​ティションの状態、すべてのテーブルでオペレータに対応する状態について。このテーブルは、行キーのHBase、列のテーブルに対応する各特定の状態のような同じ有します。

たとえば、あなたがゲーマースコアやデータストリームのオンライン時間があると、私たちは、オペレータの状態プレイヤーの合計スコアで、プレーヤーのグループのスコアとゲームの時間を記録し、時間の長さの合計を記録するためにキー付きの状態を必要としています。

次のように入力されたデータは、時間の経過とともにストリーミング:

ユーザーID USER_NAME ユーザー・グループ スコア
1001 ポール A 5,000
1002 シャーロット A 3,600
1003 ケイト C 2,000
1004 ロバート B 3900
ユーザーID USER_NAME ユーザー・グループ 時間
1001 ポール A 1,800
1002 シャーロット A 1200
1003 ケイト C 600
1004 ロバート B 2,000

キー付き状態として使用し、我々は、グループの総スコアとの合計長さを表すgroup_score MapState group_time二つのグループに登録され、次のように状態の積算値に2つのメトリックkeyby更新されたデータストリームUSER_GROUPによれば、得られた表です。

ユーザー・グループ group_score group_time
A 8600 3,000
C 2,00 600
B 3900 2,000

オペレータ状態の使用は全長及び総スコアを記録する場合は対照的に、(平行度は1に設定されている)、そして我々は、2つの2つのテーブルが得られるtotal_score状態TOTAL_TIME登録しました:

total_score | 
------- | 
14,500 |

TOTAL_TIME
5,600

この時点で、セーブポイントとデータベースの間の対応は、より明快にする必要があります。セーブポイントのために明らかに対応するデータベースストレージエンジンである、どのように永続性の詳細を決定することもStateBackend状態異なっています。MySQLでは、我々は、ALTER TABLE XXX ENGINE = InnoDBは、単一の行を命令することができ、ストレージエンジンが自動的にMySQLの背後にある厄介なフォーマット変換作業を完了します変更します。セーブポイントの場合は、互換性のないStateBackendその保存形式ので、それはまだ簡単にStateBackendを切り替えないです。この目的を達成するために、コミュニティが最近作成したFLIP-41 [5]セーブポイント、さらに操作性を向上します。

概要

データベースとして国家が発展のリアルタイムトレンドで計算され、データベースの使用に代わるものが、データベース・インタフェースの経験は、フィールドが近い身近なデータベースへの状態の動作を拡張することを可能にされていません。FLINKのために、国は、アクセスする外部の使用に分けることができ、照会可能状態とセーブポイントプロセッサのAPIがサポートすることで、それぞれ、2つのプロパティをオンラインとオフラインへのリアルタイムアクセスを変更します。

おすすめ

転載: www.cnblogs.com/yunqishequ/p/11906650.html